QSerialPort的readyRead有时候会触发两次,偶发性的

sundynes sundynes 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我在用readyRead连接到槽函数后,槽函数响应第一次只读出来数据的一半,另一半在第二次接收到槽函数接收到,但是我写了一次数据,这种还是偶发性的,有时候不正常;有时候会正常的在第一次就读完数据,就不会有第二个readyRead信号了,不知道什么原因,那位大神了解呀!
m_serialPort = new QSerialPort(this);
//获取端口名称列表
m_portNameList = getPortNameList();

for (int i = 0; i < m_portNameList.length(); i++)
{
LogDebug(QString("匹配串口:%1").arg(i));
LogDebug(QString("串口名称:%1").arg(m_portNameList.at(i)));
//设置串口名字
m_serialPort->setPortName(m_portNameList.at(i));

//如果串口已经打开了 先给他关闭了
if (m_serialPort->isOpen())
{
m_serialPort->clear();
m_serialPort->close();
}
//用ReadWrite 的模式尝试打开串口
if (!m_serialPort->open(QIODevice::ReadOnly))
{
LogDebug("打开失败!");
b_QRCodeDeviceAvailable = false;
//ui.pb_QRcode->setEnabled(false);
}
//如果串口可以被打开
else
{
LogDebug("串口打开成功!");

//设置串口属性
m_serialPort->setBaudRate(QSerialPort::Baud115200, QSerialPort::AllDirections);//设置波特率和读写方向
m_serialPort->setDataBits(QSerialPort::Data8); //数据位为8位
m_serialPort->setFlowControl(QSerialPort::NoFlowControl);//无流控制
m_serialPort->setParity(QSerialPort::NoParity); //无校验位
m_serialPort->setStopBits(QSerialPort::OneStop); //一位停止位
m_serialPort->clearError();
m_serialPort->clear();
b_QRCodeDeviceAvailable = true;

//绑定读取数据的入口
connect(m_serialPort, SIGNAL(readyRead()), this, SLOT(slot_receiveQRcodeInfo()));
//m_serialPort->write(QString("0x1b,0x32").toLatin1());
}
...全文

相关推荐

QT不触发readyread信号槽的原因.zip

QT的readyread信号槽总是不被触发的原因 大家在使用QT的时候有没有遇到过第一次能触发readyread信号槽,执行函数.但是就再也触发不了readyread信号槽的情况呢? 我来告诉你答案

lj_70596

SerComm DOS串口工具:硬件级串口通信排障指南

串口通信是嵌入式与工业设备互联的基础技术,其本质是UART芯片在电平、时序与寄存器层面的精确协同。理解波特率误差、FIFO缓冲区边界、TX/RX信号完整性等底层原理,是解决Modbus RTU、DL/T645等时序敏感协议丢包、跨平台解析不一致问题的关键。现代驱动和框架(如QtSerialPort)通过多层抽象提升开发效率,却掩盖了硬件真实响应延迟与溢出行为。SerComm DOS工具集通过直接操作8250/16550 UART寄存器、绕过USB驱动栈、禁用软件缓冲,成为暴露CH340等芯片真实性能边界的‘

weixin_33796205

Qt串口通信开发之QSerialPort模块Qt串口通信接收数据不完整的解决方法

主要介绍了Qt串口通信开发之QSerialPort模块Qt串口通信接收数据不完整的解决方法,需要的朋友可以参考下

weixin_38687539

Qt5的QSerialPort类使用信号槽实现串口读写

Qt5 信号槽实现串口读写,大家可以参照,谢谢评论

别逗我乐

关于QSerialPort的使用说明(Qt实现串口工具)

关于QSerialPort的使用说明(Qt实现串口工具),参考博客:https://blog.csdn.net/weixin_42653531/article/details/107711740

脆弱的代码
评论 8
收藏 已收藏
分享
返回顶部
sundynes
Qt 21,503 成员 26,693 内容