c++ - Qt QSerialport拔出设备未关闭

标签 c++ linux qt serial-port usb

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";
    }

最佳答案

拔掉插头时可能会发出错误SIGNAL,因此将错误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();
    }
}

关于c++ - Qt QSerialport拔出设备未关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53028882/

相关文章:

c++ - 如果我在 header 中声明 namespace ,是否可以避免在 .cpp 文件中使用类名?

linux - 如何从文件中删除所有奇数行但使用单个衬垫保留第 1 行?

c++ - 为什么Qt Creator不用.lib和LoadLibrary()也能正确链接dll?

c++ - 了解 GNU 科学图书馆文档

c++ - "virtual memory exhausted"构建 Docker 镜像时

c - SCTP协会

c++ - 我如何使用 Qt Creator 将一个对象的值从一个窗口获取到另一个窗口的类中?

c++ - 在派生类中调用 Q_INVOKABLE 方法

c++ - 遍历一个类的所有公共(public)方法

linux - SUSE Linux 中的 bash_profile 在哪里