如何在Qt中连接或断开串行端口时发出信号?
我使用如何在Qt中连接或断开串行端口时发出信号?,qt,serial-port,Qt,Serial Port,我使用QSerialPort与串行端口通信。但是,当信号改变(连接或断开)时,如何发出信号 操作系统是win7。谢谢。我想我有办法解决你的问题(至少解决了我的问题) 我有一个ComPort类来处理GUI的所有串行功能。当用户选择COM端口时,会启动一个定期检查状态的QTimer。计时器完成后,会发出信号timeout(),我为此编写了一个自定义插槽: // Custom slot to be called when timer times out. void ComPort::checkComP
QSerialPort
与串行端口通信。但是,当信号改变(连接或断开)时,如何发出信号
操作系统是win7。谢谢。我想我有办法解决你的问题(至少解决了我的问题) 我有一个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");
}
}
我希望这有帮助 连接或断开是什么意思?您可以打开或关闭串行端口,但这并不意味着该端口已连接。或者您正在使用USB-RS232?是USB-RS232。'“已连接”表示手动插入usb,但不打开源代码中的串行端口。请看这里:可能需要为每个usb-232型号添加一个条目。另一种方法是使用
QSerialPortInfo
errorOccurred(QSerialPort::SerialPortError error)