我使用 QSerialPort
来与串口通信。但是当串口连接或断开时,如何发射一个信号?
操作系统是Windows 7。谢谢。
我使用 QSerialPort
来与串口通信。但是当串口连接或断开时,如何发射一个信号?
操作系统是Windows 7。谢谢。
我想我有一个解决方案可以解决你的问题(至少解决了我的问题)。
我有一个ComPort类,负责处理我的GUI的所有串口功能。当用户选择了一个COM端口时,会启动一个QTimer定期检查状态。当计时器结束时,会发出timeout()信号,我为此编写了一个自定义槽:
// Custom slot to be called when timer times out.
void ComPort::checkComPortStatus()
{
QSerialPortInfo *info = new QSerialPortInfo;
QList<QSerialPortInfo> list = info->availablePorts();
bool port_still_available = false;
for (QSerialPortInfo &port : list) {
if (port.portName() == serial_port->portName())
port_still_available = true;
}
if (!port_still_available) {
qDebug() << "Selected COM-port," << serial_port->portName() << ", no longer available!";
delete serial_port;
serial_port = nullptr;
qDebug() << "COM-port is deleted.";
delete timer;
timer = new QTimer(this);
qDebug() << "COM-port timer is deleted.";
selectedPort_label->setText("Error: disconnected");
}
}
errorOccurred(QSerialPort::SerialPortError error)
希望这能有所帮助!
QSerialPortInfo
定期检查可用端口。 - JMA