SerialPort 同步和非同步資料讀取

來源:互聯網
上載者:User

SerialPort同步和非同步資料讀取(二)     多線程

 

 

程式碼範例:http://blog.sina.com.cn/s/blog_4cc624e901009adm.html

 


這是SerialPort定時操作常式,以兩種方式接收資料,非同步方式接收資料至少需要500ms,同步方式1S逾時.

這裡沒有考慮資訊完整性的處理,接收資訊的完整性包括你需預Crowdsourced Security Testing道接收位元組的長度或結尾處的位元組。

對於長度的完整性,你可以用同步方式接收資料,在從線程用serialPort.BytesToRead 判斷累計接收位元組的長度.

對於預Crowdsourced Security Testing道結尾處位元組的完整性,你可以用serialPort.ReadTo (string value)方法讀取資料(value為結尾處的字串)

對於長度和結尾處位元組不能確定資訊的完整性處理,
我的一種方法是用非同步方式,這種方法需事先估計出接收對方資訊所需的時間,將此時間設定為從線程睡眠的時間。
另一種方法是用同步方式接收,當SerialPort.ReadByte()方法阻塞到接收到初始始資料後,從線程每次睡眠一個短暫的時間,
用serialPort.BytesToRead ==0判斷有無新資料.若有新資料,從線程繼續睡眠;若沒有新資料到來,說明資料是完整的。

當然資料完整接收後,仍要用接收資料的協議(頭、尾位元組、校正等方式)判斷資料的正確性,保證資料真正是完整的。 


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.