一杯清酒邀明月
天下本无事,庸人扰之而烦耳。
posts - 3121,comments - 209,views - 578万

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 }  
复制代码

 

posted on   一杯清酒邀明月  阅读(10622)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示