如何判斷是否有資料從串口發送過來?
在我串口發送指令的函式中,當我使用write函式往串口發送指令之后
然后在wirte函式下面呼叫 serial->waitforReadyread(2000) 等待是否有readyread的信號觸發
以用來判定是否有資料從串口發送過來
盡管我能從串口中收到資料,就是與Readyread()信號系結的槽函式都能執行
但是在我write函式下面呼叫的 waitforReadyread()永遠回傳的值是 false 就是它捕捉不到readyread()信號,
請問這是什么問題?
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
再資料接收介面看看,通過head+length 判斷資料讀取完畢uj5u.com熱心網友回復:
自己頂一下!!! 為什么直接在write函式下面 readall 會讀不到資料 只有在與readyread信號系結的槽中readall才會讀到資料uj5u.com熱心網友回復:
你好,謝謝你的回復
但是我目前的問題是 需要判斷是否有資料從串口發送過來 而不是判斷發送過來的資料是否完整
uj5u.com熱心網友回復:
時間到了,或者是有錯誤就會回傳false,你串口是不是出現什么錯誤,把錯誤碼列印一下uj5u.com熱心網友回復:
開一個快取,把資料讀倒快取里面,要使用時再從快取讀出來。底層驅動也帶接收快取,但不大,如果資料量大,就有可能導致資料丟失。uj5u.com熱心網友回復:
不是可以掛信號槽的嗎?uj5u.com熱心網友回復:
我也碰到過這種情況,我之前的Qt好像時5.1.4版本,發送完之后,等待發送完成后就可以使用readall()讀取所有的函式。我目前用的qt5.11版本就不能這樣做,必須要在readyread的槽函式中使用readAll()才能讀取到資料。感覺可能時版本之間的差異,也許還有其他原因uj5u.com熱心網友回復:
我都是waitforReadyread再readyRead 再readAll QT5.10uj5u.com熱心網友回復:
獲取一下緩沖區資料長度判斷。有協議看協議校驗。Qt公眾號:Qt_io_
uj5u.com熱心網友回復:
樓主,你這樣不會卡死在waitforReadyread函式里嗎?發送資料后應該就被waitforReadyread函式阻塞了啊?uj5u.com熱心網友回復:
waitforReadyread()沒有設定超時時間,設定為 -1,則不會發生超時轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/95618.html
標籤:Qt
上一篇:sonarqube問題求教
下一篇:界面自定義開發模式
