Qt QSerialport 未插入设备未关闭

Posted

技术标签:

【中文标题】Qt QSerialport 未插入设备未关闭【英文标题】:Qt QSerialport unpluged device not close 【发布时间】:2018-10-28 06:15:37 【问题描述】:

QSerialPort 无法关闭 rasbian 系统中未插入的设备。任何方法关闭并重新连接端口。这段代码可以工作,但我很快拔掉插头并插入它不起作用。我认为连接插头时串行不会中断:

    serial->close();
    serial = new QSerialPort(this);
    serial->setPortName("/dev/ttyUSB0");
    serial->setBaudRate(QSerialPort::Baud115200);
    serial->setDataBits(QSerialPort::Data8);
    serial->setParity(QSerialPort::NoParity);
    serial->setStopBits(QSerialPort::OneStop);
    serial->setFlowControl(QSerialPort::NoFlowControl);
    if(serial->open(QIODevice::ReadWrite))
        qDebug() << "Hata yok";
    
    else 
        qDebug() << "Hata var";
    

【问题讨论】:

以文字而非图片的形式提供您的代码 嗨,欢迎来到堆栈溢出。请参阅How to Ask 链接以获取有关如何提出问题并相应更新您的问题的更多详细信息。 【参考方案1】:

拔掉插头时可能会发出error SIGNAL,所以连接error SIGNAL > 到 SLOT 来处理它,如下所示:

QObject::connect(serial, SIGNAL(error(QSerialPort::SerialPortError)), this,
                 SLOT(handleError(QSerialPort::SerialPortError)));

void Widget::handleError(QSerialPort::SerialPortError error)

    if (error == QSerialPort::ResourceError)
    
        QMessageBox::critical(this, tr("Critical Error"), serial->errorString());
        serial->close();
    

【讨论】:

以上是关于Qt QSerialport 未插入设备未关闭的主要内容,如果未能解决你的问题,请参考以下文章

定时扫描串口看设备是不是连接在QT、QSerialPort

Qt 小部件的 QSerialPort 读数刷新太快

如何使 Qt5.13.1 中的 QSerialPort 工作?

如何知道 QSerialPort 何时准备好接收 Qt5 中的更多数据?

Qt入门教程硬件编程QSerialPort串口对象

Qt入门教程硬件编程QSerialPort串口对象