如何在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)