我有一个相对粗糙的设备(两台计算机通过 COM 端口连接),我必须通过 QSerialPort
让它工作。这个想法很简单:数据将通过每个 COM 端口从一个组件发送到另一个组件。
发射器工作正常,通过软件检查,我在接收数据时遇到问题。我是通过 QSerialPort
做的,如下所示:
首先我设置了端口:
QSerialPort *serialport = new QSerialPort();
serialport->open(QIODevice::ReadOnly);
serialport->setPortName("COM1");
serialport->setBaudRate(QSerialPort::Baud19200);
serialport->setDataBits(QSerialPort::Data8);
serialport->setParity(QSerialPort::NoParity);
然后我准备像这样捕获数据:
connect(serialport,SIGNAL(readyRead()),this, SLOT(change_gear()) );
在插槽 change_gear 中,我只有: qDebug()<<"数据已收到",
但是这个槽还没有被执行过! 所以,我只是不明白这里出了什么问题以及为什么我不能以这种简单的方式从 COM 端口读取数据..
操作系统 - Windows 8, Qt 5.8.0 MinGW 32
最佳答案
这样试试
QSerialPort *serialport = new QSerialPort();
serialport->setPortName("COM1");
serialport->setBaudRate(QSerialPort::Baud19200);
serialport->setDataBits(QSerialPort::Data8);
serialport->setParity(QSerialPort::NoParity);
connect(serialport,SIGNAL(readyRead()),this, SLOT(change_gear()) );
serialport->open(QIODevice::ReadOnly);
端口配置好,信号连接到slot后打开
关于c++ - Signal readyRead() 不执行槽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46308255/