如何断开串口

Posted

技术标签:

【中文标题】如何断开串口【英文标题】:How disconnect serial port 【发布时间】:2020-08-17 18:58:17 【问题描述】:

我正在使用 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); 

那么,我怎样才能断开串口? 有人可以帮助我吗?

【问题讨论】:

请详细说明您遇到的问题的性质。串行端口太简单,无法连接断开。如果没有人拔掉电线,则始终连接一个串行端口,如果它被拔掉,则端口通常无法知道。通常你能做的最好的就是打开和关闭,看起来你正在这样做。 【参考方案1】:

我认为你用来关闭串行端口的代码有效,但你从来没有为列表的最后一个串行端口调用它。

【讨论】:

以上是关于如何断开串口的主要内容,如果未能解决你的问题,请参考以下文章

attiny85软串口乱码

Delphi 使用 SPcomm 调试串口程序出现总是在程序断开的时候,才发送指令的问题。

【PIO系列2】与ESP32创建串口连接

arduino串口通信经光耦隔离使用继电器控制220v电机

串口方式登录树莓派

Twisted 的 Serialport 和消失的串口设备