㈠ 為什麼串口裡有很多數據,但每次都讀不回全部
你的這個串口設備在打開(也就是調用open函數獲取設備描述符)的時候設置的是非阻塞方式。導致串口上沒數據的時候read也立即返回,但是你的while已經把有效的數據讀走了,if裡面讀到的一定是空的,所以什麼也不列印。
建議
1. 在打開串口設備時使用阻塞方式,不會設置的話查查open系統調用的幫助,它有個flag;
2. 把while循環內的if語句去掉。
㈡ 伺服器返回數據異常是怎麼回事
具體步驟
1.在這種情況下,我們可以首先嘗試重新啟動客戶端。
2.如果重啟游戲不行,我們可以試試重啟電腦。
3.出現這種情況,也有可能是路由器出了問題。我們也可以嘗試重啟路由器。
4.或者我們可以試著用急救箱來修復。
5.或者我們可以關閉Windows的防火牆,試一試。
https://iknow-pic.cdn.bcebos.com/d1160924ab18972b5fd17f27edcd7b899f510a77?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto
㈢ C#串口編程中的問題,數據顯示不全的問題
這種設計串口的最好在線程中實現,串口數據的處理不要和UI混在一起,要顯示的話最好通過發送消息完成,調試的話直接debug輸出查看
㈣ VB串口程序接收字元數據時數據不全!!
inputsignal
是
variant
數據
你可以
直接
textreceive.text=inputsignal
試試
推薦看書
visual_basic與_rs-232_串列通信控制
㈤ 串口發送數據,接收設備數據顯示正常,但該設備返回數據不正確,請問是怎麼回事
檢查下接收時按ASCII碼接收還是按二進制方式接收。其它請參閱如下網址本人的答復:
http://..com/question/12535506.html
http://..com/question/12522809.html
http://..com/question/11725744.html
http://..com/question/11040704.html
http://..com/question/10941227.html
㈥ C# serialport類編寫串口通信程序,無法接收全部數據!
問題應該是出在這句:
bytesRead = serialPort.Read(BRecieve, 0, bytesToRead);
樓上的說法有點意思,但是不完全透徹。
其實問題在於串口返回數據時,它返回的速度可能不會太快,而程序執行是非常快的。
也就是說,當執行到Read語句時,串口根本沒來得及返回那麼多的數據,如你說的,只返回了9個位元組。即便你指定bytesToRead大小也沒有用。
解決辦法:只能通過控制代碼來實現你想要的功能,我認為有兩種方案可供使用:
一、設置一個大小為59的緩存,寫一個while循環,只有從串口讀滿59個位元組的數據時才退出while循環,否則繼續讀取。
二、思想跟第一種類似,只是不寫while循環,利用調用函數思想,當存滿59個位元組時,返回true,否則返回false,繼續讀取串口數據。
希望對樓主有用。
㈦ c# 串口獲取數據不完整
原因:串口內部是用一個線程DataReceived觸發事件,但它是不斷觸發的,界面收到通知的時候串口內部狀態實際上可能已經發生變化。
解決:自己建立一個byte或string的隊列,拼接拆分(這就要求必須有自定義的終止符)
㈧ 串口發送數據,接收設備數據顯示正常,但該設備返回數據不正確,請問是怎麼回事
設備是否支持115200的波特率,還有通信距離大概多遠?
㈨ 16串口伺服器無數據返回是怎麼啦
是說的是那個牌子的啊。這叫人怎麼解答啊。無數據返回肯定是串口沒通上塞,我用SmartDAQ通訊管理機的時候沒通上跟你這個是一樣的現象。
㈩ 大佬們我用C語言寫串口但是接收的數據不全是啥情況啊(波特率沒問題)
你試試把ReadFile每次接收的位元組設置小一點,然後循環接收。一口吃不了胖子。