Qt QSerialPort串口 接收数据 QIODevice::readyRead()
QSerialPort 负责具体的串口操作。选定串口后,要先打开串口,才能设置波特率等参数。这些参数都设置好了就可以使用了。最基本的操作无非是read() 和 write()。需要注意的是这两个操作都是非阻塞的。
另外有一个重要的signal 也需要用到,那就是 void QIODevice::readyRead()
每次串口收到数据后都会发出这个signal。我们的程序中需要定义一个slot,并将其与这个signal 相连接。这样,每次新数据到来后,我们就可以在slot中读取数据了。这时一定要将串口缓冲区中的数据全部读出来,可以利用readAll() 来实现。
下面的代码片段给出了设置串口的例子:
m_reader.setPort(info); if(m_reader.open(QIODevice::ReadWrite)) { qDebug() << "m_reader.open(QIODevice::ReadWrite)"; m_reader.setBaudRate(QSerialPort::Baud9600); m_reader.setParity(QSerialPort::NoParity); m_reader.setDataBits(QSerialPort::Data8); m_reader.setStopBits(QSerialPort::OneStop); m_reader.setFlowControl(QSerialPort::NoFlowControl); m_reader.clearError(); m_reader.clear(); connect(&m_reader, SIGNAL(readyRead()), this, SLOT(readyReadSlot())); } void Dialog::readyReadSlot() { qDebug() << "x"; QByteArray arr = m_reader.readAll(); do_something(arr); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!