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 未插入设备未关闭的主要内容,如果未能解决你的问题,请参考以下文章