C++ Qt QSerialport已拔出设备未关闭

C++ Qt QSerialport已拔出设备未关闭,c++,linux,qt,serial-port,usb,C++,Linux,Qt,Serial Port,Usb,QSerialPort无法关闭rasbian系统中已拔出的设备。任何方法都可以关闭并重新连接端口。这段代码正在工作,但我很快拔掉并插入它不工作。ı当插头连接时,串行不会断开: serial->close(); serial = new QSerialPort(this); serial->setPortName("/dev/ttyUSB0"); serial->setBaudRate(QSerialPort::Baud115200); s

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

拔下插头时,可能会发出错误信号,因此将错误信号连接到插槽以如下方式处理:

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();
    }
}

以文本而非图片的形式提供代码HI,欢迎使用堆栈溢出。有关如何提问和相应更新问题的更多详细信息,请参阅链接。