在編制C#上位機進行串口通訊時,由于232是全雙工,所以可以開兩路執行緒分別發送讀取資料。
那么如果打算采用“一問一答”的方式進行通訊,使用哪種方式更好?
1、模擬modbus的模式,添加CRC校驗碼等,C#上位機發送查詢指令后,再不斷接受資料,同時進行CRC校驗,符合要求就進行下一步發送指令,接受時間過長,則認為誤碼。
2、使用ASCII格式,在每條指令后加“\n”,readline()認為發送接收到一次指令,如果指令無法識別,認為誤碼。
3、其他方式分享下唄!
uj5u.com熱心網友回復:
然后在一個執行緒中回圈讀取資料(讀取操作),通過按鈕發送設定指令(寫入操作),通過lock對發送接收資料的函式進行加鎖,但是偶爾還是會出現“按鈕發送,接收到回圈讀取的資訊”這個怎么回事呢?uj5u.com熱心網友回復:
接收超時要好點吧。uj5u.com熱心網友回復:
采用哪種方式都一樣兒,但問題是你要一問一答,就沒必要開兩個執行緒了,開了也沒有用,因為你要等答,所以你還是一個執行緒好些吧。另外通訊都要加個超時執行緒,否則你如何跳出等待呢?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/64353.html
標籤:單片機/工控
