国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
串口通信精華帖

http://www.cnblogs.com/fyhui/archive/2012/04/30/2477332.html

2012

如今的串口通信主要應用在工控等領域,雖然不難,但是很多新人(包括一些老手)還是不能較好的實現(xiàn) 串口通信,下面簡單談談串口通信,如果有更好補充的朋友,請不吝賜教,讓本文成為串口通信文章的典范,更讓大量的新手能正確掌握串口通信。

 

首先,大家必須知道串口通信的特性:串口發(fā)送和接收數(shù)據(jù)比較慢,以致一條命令數(shù)據(jù)的發(fā)送和接收可能需要多次操作發(fā)送或接收緩沖區(qū)。

 

下面我主要搜集一些網(wǎng)絡上的串口通信文章或代碼,然后點評,提出自己的看法。

帖子1 在C#中使用SerialPort類實現(xiàn)串口通信(陸續(xù)更新)

http://blog.csdn.net/cy757/article/details/4474930 這篇文章寫的很好,很有參考價值。

com.BaudRate = 115200;

com.PortName = "COM1";

這兩句代碼我點評一下,希望做UI的朋友提供友好的用戶界面,對自己的傳入數(shù)據(jù)的有效性控制也有幫助。1>串口波特率似乎只支持某幾種檔次如4800 | 9600 | 19200等等,所以希望UI做成選擇控件ComboBox而不是用戶輸入數(shù)字的TextBox。2>”COM1”也做成選擇,但還有兩點a>可以考慮SerialPort.GetPortNames枚舉本機存在的串口;b>如果打開了不存在的串口或者已經(jīng)被打開的串口導致異常,一定要try捕獲異常,不能讓程序崩潰。

 

記住,接收數(shù)據(jù)有兩種方式,1>使用事件接收;2>使用a>線程接收;b>定時器接收; 3>在任何地方,直接調用串口Read方法讀數(shù)據(jù),一定要杜絕Read永不返回導致卡死。

上文的private void ReadPort()線程函數(shù)有兩點值得學習:

1>    catch (TimeoutException) { }; //沒有可以讀取的字節(jié)異常

2>     Thread.Sleep(waitTime)。         //不能操作串口緩沖區(qū)時,讓時間片

 

記住,C#中跨線程訪問控件很危險,堅決杜絕,請使用Invoke之類的函數(shù)同步訪問。示例如private void serialPort1_DataReceived函數(shù)。

 

帖子2C# 串口操作系列

http://blog.csdn.net/wuyazhe/article/details/5598945 里面5篇串口文章值得一看。

 

帖子3基于C#實現(xiàn)PC機與AI調節(jié)器串口通信的實時監(jiān)控系統(tǒng)

http://www.autooo.net/classid119-id57828.html 本文寫的較好,應用場景、功能、方案都很棒,唯一可惜的最終實現(xiàn)及編碼未能把多線程接收和解析串口數(shù)據(jù)部分源碼貢獻出來,可惜可惜??!

 

帖子4借助VC++實現(xiàn)串口通訊程序中的多線程應用

http://www.ccw.com.cn/applic/prog/htm2003/20031211_13ZAR.htm

 

帖子5: 多線程串口通信技術在GPS導航中的應用(VC)

http://www.dzsc.com/data/html/2009-10-20/79533.html

CSerialPort類

 

帖子6多串口多線程工業(yè)控制實現(xiàn)(CSerialPort類)

http://bbs.51cto.com/thread-417831-1.html 這篇文章寫的非常棒,值得一看。

下面兩行代碼告訴我們多個串口設備輪詢時的超時設置。

if((tNow - tLast)*1000 + (nNowMillSecond - nMillSecond[0]) > 800)9 x* g8 L4 N! R6 s0

pView->SetCommVal(); //發(fā)送下一臺設備要數(shù)據(jù)命令或者進行其他的相關處理

 

 

帖子7 C#SerialPort接了10個測溫傳感器,其接收事件只有一個,如果一個傳感器出錯,怎樣不影響別的傳感器正常接收

http://topic.csdn.net/u/20110518/21/9b0aec92-6c3f-43db-af02-8013db733210.html  這篇文章問題問的非常非常好,其次網(wǎng)友jsmouse貼的代碼有些地方值得借鑒。

         先分析jsmouse代碼:

CRCData.CalculateCrc16(crcTemp, out CRCH, out CRCL);

        if (buffer[10] != CRCH && buffer[11] != CRCL)

        {

              buffer.RemoveAt(0);

            continue;//繼續(xù)下一次循環(huán)  

         }

       循環(huán)推進校驗的方式值得借鑒。

 

帖子8C#串口類SerialPort詳解

波特率

ReadTimeout

ReceivedBytesThreshold

sp.DtrEnable = true; //如果是RS232轉RS485,此句必須要,否則不能通訊
本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
C#串口通信時丟失數(shù)據(jù)的一種解決方法
JAVA串口編程
WinForm串口收發(fā)
利用Java實現(xiàn)串口全雙工通訊
【串口通信】pythonserial庫時read、readline、read_all等方法的區(qū)別
最簡單的【上位機軟件】詳解
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服