使用QSerialPort 和QTimer 讀取儀表的資料,
使用QTimer 定時(10ms)發送 指令給串口,串口接收指令。
發送指令,使用connect 連接timerout() 與槽函式,
接收指令,使用connect 連接readyread() 與槽函式。
使用connect,連接errorOccurred(QSerialPort::SerialPortError) 與槽函式,接收例外中斷,及例外中斷代碼。
打開串口之后,資料發送和接收正常。
問題:
當我連接網路,重繪網頁時,串口錯誤,錯誤代碼9(QSerialPort::ResourceError);此時串口已經斷開連接了,之后無法發送資料。
排除可能的錯誤:
1、排除儀表的問題,當重繪網頁時,串口連接錯誤,直接不發送資料。且用VB中的串口程式,讀取相同儀表資料,連接網路,重繪網頁,不會問題。
2、 當串口只打開,不定時(10ms)發送資料,重繪網頁時,不會出現錯誤代碼9。串口沒有斷開連接,之后串口發送接收資料正常。
3、把串口發送和接收資料放到執行緒中,不會出現該問題。
現在,我想知道什么原因造成的這個問題,不使用多執行緒會能解決么?QSerialPort還需要注意什么問題?
uj5u.com熱心網友回復:
我又重新測驗了,基本把問題定位到定時器時間上了,如果每隔1ms 讀寫一次資料,每次重繪網頁串口都會例外斷開。如果定時器時間改成50ms,此時出現例外斷開的可能性較低。轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/240228.html
標籤:Qt
