Mavis 发表于 2023-10-10 18:21:29

QT5不能同时打开多个串口吗

本帖最后由 Mavis 于 2023-10-10 18:24 编辑

打开第二个串口时失败了QSerialPort::UnsupportedOperationError
而且必须重新插拔才可以换另一个串口,是qt5的bug吗?
QT版本:5.14.2环境WINDOWS11、Ubuntu20都不能同时打开两个串口
两个串口COM1和COM2,用串口工具比如secureCRT是可以同时打开并传输正常。
部分代码如下:
QSerialPort *serialPort1 = new QSerialPort();QSerialPort *serialPort2 = new QSerialPort();
serialPort1->setPortName("COM1");
serialPort2->setPortName("COM2");
serialPort1->open(QIODevice::ReadWrite) 成功
serialPort2->open(QIODevice::ReadWrite) 失败了


Mavis 发表于 2023-10-11 13:29:41

有人碰到这个问题过吗

chenycs 发表于 2023-10-12 18:16:03

QT版本:5.10.0 环境WINDOWS10,使用QextSerialPort class,能同时打开两个串口。

QextSerialPort :https://github.com/qextserialport/qextserialport

liudianwu 发表于 2023-10-13 11:41:21

肯定可以同时打开的,估计是你的代码或者方式或者设备有问题

qthinoy 发表于 2023-10-30 15:32:35

可以同时打开;
switch (type) {
      case relaySER:
            relayserialparameter.relaycomnum = ui->comboBox_ser_relay->currentText();
            relayserialparameter.autoAddRnStatus_relay = ui->checkBox_autoRn_relay->checkState();
            t_serial_relayser->setPortName(relayserialparameter.relaycomnum);
            setPartConfig_serial(relaySER);
            if (!t_serial_relayser->open(QIODevice::ReadWrite)) {
                QMessageBox::information(NULL, "失败", "串口打开失败");
                return false;
            } else {
                return true;
            }
            break;
      case recordSER:
            relayserialparameter.recordcomnum = ui->comboBox_ser_record->currentText();
            relayserialparameter.autoAddRnStatus_record = ui->checkBox_autoRn_rec->checkState();
            t_serial_recordser->setPortName(relayserialparameter.recordcomnum);
            setPartConfig_serial(recordSER);
            if (!t_serial_recordser->open(QIODevice::ReadWrite)) {
                QMessageBox::information(NULL, "失败", "串口打开失败");
                return false;
            } else {
                return true;
            }
            break;
      default:;
    }
页: [1]
查看完整版本: QT5不能同时打开多个串口吗