QSerialPort 在子线程中的使用方法

发布时间 2023-09-20 14:25:32作者: C-O-L
  • 创建

需要在子线程的 run() 里创建。如:

    void SerialPortThread::run()
    {
        QSerialPort m_serial;
    }
  • 串口设置 / 关闭 / 打开

也需要在子线程的 run() 里操作。如:

    void SerialPortThread::run()
    {
        QSerialPort m_serial;

        while (!m_quit)
        {
            m_serial.close();
            m_serial.setPortName(serialPortSet.name);
            m_serial.setBaudRate(serialPortSet.baudRate);
            m_serial.setDataBits(serialPortSet.dataBits);
            m_serial.setParity(serialPortSet.parity);
            m_serial.setStopBits(serialPortSet.stopBits);
            m_serial.setFlowControl(serialPortSet.flowControl);

            if (m_serial.open(QIODevice::ReadWrite)) {
                emit this->status("SerialPort open is successful\n");
                isConnect = true;
                m_quit = false;
            }
            else{
                QString errorStr = tr("Can't open %1, errorCode %2\n").arg(serialPortSet.name).arg(m_serial.error());
                emit this->status(errorStr.toUtf8());
                isConnect = false;
                return;
            }
        } 
    }