如何断开串口

问题描述

我正在用Qt进行接口操作,我可以用一块电子板进行连接,一切都很好,问题是我想断开串行端口,但是我不能。我尝试过了

electronic_board.clear();

if(electronic_board.isopen())
   electronic_board.close();

但没有用。

connectios是这个

bool Init(){
Q_FOREACH(QSerialPortInfo port,QSerialPortInfo::availablePorts()){
    electronic_board.setPortName(port.portName());
    electronic_board.setBaudrate(115200);
    electronic_board.setDataBits(QSerialPort::Data8);
    electronic_board.setParity(QSerialPort::noparity);
    electronic_board.setStopBits(QSerialPort::Onestop);
    electronic_board.setFlowControl(QSerialPort::NoFlowControl);
    try {
        if(electronic_board.isopen())
            electronic_board.close();
        if(electronic_board.open(qiodevice::ReadWrite)){
            char arr[1] = {'O'};
            QByteArray Iniciar(arr,1);
                            electronic_board.write(Iniciar);
            electronic_board.waitForBytesWritten(500);
            QThread::msleep(30);
            electronic_board.waitForReadyRead(100);
                QByteArray requestData;
                int i = 0;
                while (requestData.length() != 1) {
                    QThread::msleep(10);
                    requestData = electronic_board.readAll();
                    if(i++ >= 30){
                        break;
                    }
                }
                if(requestData[0] == 'K'){
                    return true;
                }
            }
        }
    } catch (...) {

    }
}
return false;

}

连接正确,也使用此

connect(&electronic_board,&QSerialPort::readyRead,this,frame_available); 

那么,如何断开串行端口的连接? 有人可以帮助我吗?

解决方法

我认为您用来关闭串行端口的代码是可行的,但是您永远不会为列表的最后一个串行端口调用它。