Qt QSerialPort串口 接收數據 QIODevice::readyRead()


QSerialPort 負責具體的串口操作。選定串口后,要先打開串口,才能設置波特率等參數。這些參數都設置好了就可以使用了。最基本的操作無非是read() 和 write()。需要注意的是這兩個操作都是非阻塞的。

另外有一個重要的signal 也需要用到,那就是 void QIODevice::readyRead()

每次串口收到數據后都會發出這個signal。我們的程序中需要定義一個slot,並將其與這個signal 相連接。這樣,每次新數據到來后,我們就可以在slot中讀取數據了。這時一定要將串口緩沖區中的數據全部讀出來,可以利用readAll() 來實現。

下面的代碼片段給出了設置串口的例子。

 1 m_reader.setPort(info);  
 2 if(m_reader.open(QIODevice::ReadWrite))  
 3 {  
 4         qDebug() << "m_reader.open(QIODevice::ReadWrite)";  
 5         m_reader.setBaudRate(QSerialPort::Baud9600);  
 6         m_reader.setParity(QSerialPort::NoParity);  
 7         m_reader.setDataBits(QSerialPort::Data8);  
 8         m_reader.setStopBits(QSerialPort::OneStop);  
 9         m_reader.setFlowControl(QSerialPort::NoFlowControl);  
10   
11         m_reader.clearError();  
12         m_reader.clear();  
13         connect(&m_reader, SIGNAL(readyRead()), this, SLOT(readyReadSlot()));  
14 }  
15   
16   
17 void Dialog::readyReadSlot()  
18 {  
19     qDebug() << "x";  
20     QByteArray arr = m_reader.readAll();  
21     do_something(arr);  
22 }  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM