天天看點

qt waitForReadyRead 函數一直傳回timeout

平台

win10 x64系統

qt 5.14.2

編譯x86程式

問題

同步阻塞方式讀取序列槽資料(waitForReadyRead)一直傳回timeout

過程

1、用的qt自帶的QSerialPort類,建立一個線程專門收發資料,仿真時,序列槽發送資料後,通過阻塞方式waitForReadyRead(),一直收不到資料 ,waitForReadyRead()一直傳回timeout。

2、

1)如果寫上"connect(myPort, &QSerialPort::readyRead, this, &SendThread::receiveData)",是可以收到ReadyRead信号,但線程中的waitForReadyRead()仍然傳回timeout,神奇的是讀取序列槽是可以讀到資料的 ;

2)發送資料後如果不寫 waitForReadyRead(),連ReadyRead信号都收不到,這是啥奇奇怪怪的BUG 。

不過這個屬于 同步方式(waitForReadyRead) 和異步方式(ReadyRead signal)混用,qt 文檔不讓這麼用!!!!

解決

不管是從國内網站,還是國外網站看了一堆類似的問題,還是沒找到解決方案,隻能又重新下載下傳了個qt 5.13.2 ,仿真是可以的,吐血。有在qt5.14.2上解決的可以留言告訴我。

經過測試,Qt 5.15.2也是傳回timeout,qt5.15線上安裝的方式已經夠吐血,沒想到還存在這問題,頭大

繼續閱讀