qt,QSerialPort的waitForReadyRead使用,一次读取所有数据

这段代码展示了如何使用QSerialPort进行串口通信,初始化串口并发送数据。当接收到数据时,通过readyRead信号触发读取,并判断是否接收到预期的数据‘0101’。代码进行了循环接收的优化,确保接收到完整数据后才退出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

m_portName = "COM3";
m_seria = new SeriaPort();
m_seria->initPort(m_portName);
m_seria->sendInfo("470AFF800300000000FA");

//m_seria->m_serialPort是QSerialPort对象
QObject::connect((m_seria->m_serialPort), &QSerialPort::readyRead, = {
//QMessageBox::information(parent, “提示”, “配置”);
m_seria->m_serialPort->waitForReadyRead(10);
QByteArray info = m_seria->m_serialPort->readAll();
QByteArray hexData = info.toHex();
QString t0 = QString(hexData);
if (!t0.isEmpty()) {
qDebug() << “m_serialPort.t0” << t0;
}
});
qDebug() << “m_serialPort.t0” << “over”;
优化-真正获取所有再退出,一次接收01,共接收两次
QObject::connect((m_seria->m_serialPort), &QSerialPort::readyRead, = {
while (1) {
qDebug() << “sendInfoRet--------";
if (m_seria->m_serialPort->waitForReadyRead(5000)) {
QApplication::processEvents();
QByteArray info = m_seria->m_serialPort->readAll();
QByteArray hexData = info.toHex();
QString t0 = QString(hexData);
qDebug() << "sendInfoRet read--------
” << t0;
if(t0==“0101”)
break;
}
QThread::msleep(10);//sleep小点
}
});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值