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 }  

 

相关文章:

  • 2022-02-08
  • 2022-01-13
  • 2021-12-03
  • 2021-12-21
  • 2021-09-04
  • 2022-12-23
  • 2021-11-18
猜你喜欢
  • 2021-12-20
  • 2021-11-18
  • 2021-10-21
  • 2021-07-04
  • 2022-12-23
  • 2021-12-30
  • 2022-12-23
相关资源
相似解决方案