如今的串列埠通訊主要應用在工控等領域,雖然不難,但是很多新人(包括一些老手)還是不能較好的實現 串列埠通訊,下面簡單談談串列埠通訊,如果有更好補充的朋友,請不吝賜教,讓本文成為串列埠通訊文章的典範,更讓大量的新手能正確掌握串列埠通訊。
首先,大家必須知道串列埠通訊的特性:串列埠傳送和接收資料比較慢,以致一條命令資料的傳送和接收可能需要多次操作傳送或接收緩衝區。
下面我主要蒐集一些網路上的串列埠通訊文章或**,然後點評,提出自己的看法。
帖子1: 在c#中使用serialport類實現串列埠通訊(陸續更新)
這篇文章寫的很好,很有參考價值。
com.baudrate = 115200;
com.portname = "com1";
這兩句**我點評一下,希望做ui的朋友提供友好的使用者介面,對自己的傳入資料的有效性控制也有幫助。1>串列埠波特率似乎只支援某幾種檔次如4800 | 9600 | 19200等等,所以希望ui做成選擇控制項combobox而不是使用者輸入數字的textbox。2>」com1」也做成選擇,但還有兩點a>可以考慮serialport.getportnames列舉本機存在的串列埠;b>如果開啟了不存在的串列埠或者已經被開啟的串列埠導致異常,一定要try捕獲異常,不能讓程式崩潰。
記住,接收資料有兩種方式,1>使用事件接收;2>使用a>執行緒接收;b>定時器接收; 3>在任何地方,直接呼叫串列埠read方法讀資料,一定要杜絕read永不返回導致卡死。
上文的private void readport()執行緒函式有兩點值得學習:
1> catch (timeoutexception) ; //沒有可以讀取的位元組異常
2> thread.sleep(waittime)。 //不能操作串列埠緩衝區時,讓時間片
記住,c#中跨執行緒訪問控制項很危險,堅決杜絕,請使用invoke之類的函式同步訪問。示例如private void serialport1_datareceived函式。
帖子2:c# 串列埠操作系列
帖子3:基於c#實現pc機與ai調節器串列埠通訊的實時監控系統
本文寫的較好,應用場景、功能、方案都很棒,唯一可惜的最終實現及編碼未能把多執行緒接收和解析串列埠資料部分原始碼貢獻出來,可惜可惜!!
帖子4:借助vc++實現串列埠通訊程式中的多執行緒應用
帖子5: 多執行緒串列埠通訊技術在gps導航中的應用(vc)
cserialport類
帖子6:多串列埠多執行緒工業控制實現(cserialport類)
這篇文章寫的非常棒,值得一看。
下面兩行**告訴我們多個串列埠裝置輪詢時的超時設定。
if((tnow - tlast)*1000 + (nnowmillsecond - nmillsecond[0]) > 800)9 x* g8 l4 n! r6 s0
帖子7: c#中serialport接了10個測溫感測器,其接收事件只有乙個,如果乙個感測器出錯,怎樣不影響別的感測器正常接收
這篇文章問題問的非常非常好,其次網友jsmouse貼的**有些地方值得借鑑。
先分析jsmouse**:
crcdata.calculatecrc16(crctemp, out crch, out crcl);
if (buffer[10] != crch && buffer[11] != crcl)
迴圈推進校驗的方式值得借鑑。
帖子8:c#串列埠類serialport詳解
波特率readtimeout
receivedbytesthreshold
sp.dtrenable = true; //如果是rs232轉rs485,此句必須要,否則不能通訊
oracle精華帖薈萃 絕對的好東西
關於大資料量的資料庫設計問題 ora 00904 識別符號無效 oracle 遠端訪問 mysql 分布式資料庫實踐經驗討論 資料庫定時掃瞄 經典 sql 語句收集 oracle 版 110 個 oracle 常用函式總結 行轉列通用過程 dblink 同步遠端帶 blob 欄位的表 乙個剔重 sq...
精華帖 八人過河的程式實現
題目 一家六口,乙個爸爸,乙個媽媽,倆兒子,倆女兒,還有乙個警察,乙個壞蛋,過一條河。爸爸不在媽媽傷害兒子,媽媽不在爸爸傷害女兒,警察不在壞蛋傷害一家六口。只有媽媽爸爸警察會開船,一次只能過兩個人,只有一艘船。用程式實現怎麼過河。思路見程式 include include include using...
整理精華帖子
行列轉換 總結帖子 經典帖子 合併分拆表 果果字串整理系列 處理表重覆記錄 ssas系列 過渡到ssas之一 簡單模型認識 過渡到ssas之二 服務的發布 和尚翻譯的ssrs的帖子 ssis系列 小梁系列之ssis遍歷記錄查詢郵件 小梁系列之ssis表示式 小梁系列之ssis 查詢元件 查詢範圍內的...