SerialPort同步和非同步資料讀取

2022-01-21 23:50:44 字數 590 閱讀 5773

這是serialport定時操作例程,以兩種方式接收資料,非同步方式接收資料至少需要500ms,同步方式1s超時.

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

對於長度的完整性,你可以用同步方式接收資料,在從執行緒用serialport.bytestoread 判斷累計接收位元組的長度.

對於預先知道結尾處位元組的完整性,你可以用serialport.readto (string value)方法讀取資料(value為結尾處的字串)

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

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

《測試程式時請將計算機串列埠的2、3腳短路,自發自收》

附件:

SerialPort同步和非同步資料讀取

這是serialport定時操作例程,以兩種方式接收資料,非同步方式接收資料至少需要500ms,同步方式1s超時.這裡沒有考慮資訊完整性的處理,接收資訊的完整性包括你需預先知道接收位元組的長度或結尾處的位元組。對於長度的完整性,你可以用同步方式接收資料,在從執行緒用serialport.bytest...

同步和非同步

同步執行模式 所謂同步執行模式,是指語句在同步執行模式下,將始終保持對程式流的控制,直至 程式結束。如查詢操作,客戶機上的應用程式在向伺服器發出查詢操作的指令後,將 一直等待伺服器將查詢結果返回客戶機端,然後才繼續進行下一步操作。眾所周知,應用程式要從乙個大表中刪除所有的記錄將是非常耗時的,如果應用...

同步和非同步

同步互動 是指傳送乙個請求,需要等待返回,然後才能傳送另乙個請求,是乙個需要等待的過程。非同步互動 是指傳送乙個請求,不需要等待,隨時可以在傳送另乙個請求,是乙個不需要等待的過程。同步可以避免出現死鎖,讀髒資料的發生,一般共享某一資源的時候用,如果每個人都有修改許可權,同時修改乙個檔案,有可能使乙個...