问题:当我在QT中用modbus读取函数时,出现程序卡死的问题。
现象:每次点读取有概率出现这个情况。
主要代码如下:
//mythread为子线程的类,必须的跨线程不然不会触发这个问题
connect(ui->pushButtonTest,&QPushButton::clicked,thread,&mythread::on_showMessage);
connect(ui->pushButtonTest,&QPushButton::clicked,this,&MainWindow::on_pushButtontest_clicked);
connect(thread,&mythread::showTips,this,&MainWindow::on_Message);
void mythread::on_showMessage()
{
emit showTips();
}
void MainWindow::on_pushButtontest_clicked()
{
if (!modbusDevice)
return;
statusBar()->clearMessage();
//读取保持寄存器的值,由于是测试,这里直接写为固定的
const QModbusDataUnit readUnit(QModbusDataUnit::HoldingRegisters,0,10

博客讲述了在QT中使用Modbus进行读取操作时遇到的程序卡死问题。问题出现在点击读取按钮后,有时会触发消息提示框并导致程序挂起。关键代码涉及QModbusReply的使用、信号槽连接以及线程间的通信。问题可能是由于不正确的线程同步或资源管理导致的。
最低0.47元/天 解锁文章
2148





