我使用QSerialPort
与串口通信。但是如何在更改(连接或断开连接)时发出信号?
操作系统是win7。感谢。
答案 0 :(得分:0)
我想我有一个解决您的问题的方法(至少解决了我的问题)。
我有一个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");
}
}
这当然仅在端口仍然关闭时才有用。打开端口后,QT会发出标准信号(请查阅文档):
errorOccurred(QSerialPort::SerialPortError error)
我希望这会有所帮助!