本人需求是打开连接设备A的串口,正常下设备A不需要我这边发指令过去,一连通串口就会自动通过串口发数据过来,所以我这边要有段接收数据的代码,用了// (1)连接信号槽,当有数据可读时触发
这段代码。
以下代码是Qt的button单击事件,内容是打开串口与连接信号槽,当有数据可读时触发将数据显示在textedit控件上。但执行发现,串口正常打开了,但textedit没数据显示,换了第三方的串口助手是可以正常接收设备A的数据,是不是我的连接信号槽这段代码放错位置了,不是放button单击事件内?那应该放哪?谢谢!
void MainWindow::on_pbt_open_2_clicked()
{
serialPortMaf= new QSerialPort;
if(serialPortMaf->isOpen())
{
serialPortMaf->clear();
serialPortMaf->close();
ui.pbt_open_2->setText("打开串口");
return;
}
serialPortMaf->setPortName(“com3”);
if(serialPortMaf->open(QIODevice::ReadWrite))
{
ui.Stmlabel->setText("已连接串口");
ui.pbt_open_2->setText("关闭串口");
// (1)连接信号槽,当有数据可读时触发
connect(serialPortMaf, &QSerialPort::readyRead, [&]() {
// 读取并处理数据
QByteArray data = serialPortMaf->readAll();
// 处理data中的数据...
ui.tex_send->setText(serialPortUtils->buffer2HexStr(data));
});
}
}
}