求助C 用SerialPort 和串列埠通訊例項

時間 2023-03-09 13:05:02

1樓:匿名使用者

文庫 裡有 文件。

去搜搜 看看。

c# serialport類編寫串列埠通訊程式,無法接收全部資料! 15

2樓:匿名使用者

我和你是一樣的問題,我接收的資料不確定是不是定長的,所以我在datareceived這個事件裡面第一行增加了一個,發現能接收大部分資料,有一個資料沒接受完整,然後我把休眠時間設定成了10,好像效果還可以。

3樓:匿名使用者

你可以在接受位元組的程式開始時延遲等待一會,這個時間要根據資料長短不同進行調節。這是最笨的方法。樓主可以試試readline()或者readto()方法。

如果你收到的資料是固定位元組數就簡單了,直接設定receivebytethreshold屬性為你接收的位元組數就可以了。

4樓:匿名使用者

問題應該是出在這句:

bytesread = 0, bytestoread);

樓上的說法有點意思,但是不完全透徹。

其實問題在於串列埠返回資料時,它返回的速度可能不會太快,而程式執行是非常快的。

也就是說,當執行到read語句時,串列埠根本沒來得及返回那麼多的資料,如你說的,只返回了9個位元組。即便你指定bytestoread大小也沒有用。

解決辦法:只能通過控制**來實現你想要的功能,我認為有兩種方案可供使用:

一、設定一個大小為59的快取,寫一個while迴圈,只有從串列埠讀滿59個位元組的資料時才退出while迴圈,否則繼續讀取。

二、思想跟第一種類似,只是不寫while迴圈,利用呼叫函式思想,當存滿59個位元組時,返回true,否則返回false,繼續讀取串列埠資料。

希望對樓主有用。

C中如何使用SerialPort控制元件向微控制器傳送資料

其實很簡單,設定幾個引數即可,下面是我寫的從串列埠讀取ds18b20發回溫度的例子。namespace 串列埠通訊 private void form1 load object sender,eventargs e private void timer1 tick object sender,eve...

c語言!!求助,C語言求助!!!

沒什麼問題,兩題給出的答案都是正確的。第2題 後面按c語言要求帶上規定的字元或數字,構成轉義字元,因此要想將 賦給字元變數ch,需要定義為 ch 而不是ch 選項a是錯誤的。其餘選項都是正確的。選a第9題 011表示八進位制數,轉為十進位制數是9,執行printf語句,a,是a先自增1 9 1 10...

c語言求助,C語言 求助

你改這個試試 include void main c語言中,不可以用 號代替字元.printf這個是輸出,不是輸入 c語言求助?在c的運算子中,關係運算子 的優先順序,高於關係運算子 而賦值運算子的優先順序就更低。所以,printf d,d n a b c,d ab c,d ab為真,則 a b 的...