找回密码
 立即注册
收起左侧

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

4
回复
993
查看
[复制链接]
累计签到:1 天
连续签到:1 天
来源: 原创 2023-10-10 18:21:29 显示全部楼层 |阅读模式

马上注册,查看详细内容!注册请先查看:注册须知

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 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) 失败了


回复

使用道具 举报

累计签到:1 天
连续签到:1 天
2023-10-11 13:29:41 显示全部楼层
有人碰到这个问题过吗
回复 支持 反对

使用道具 举报

累计签到:3360 天
连续签到:4 天
2023-10-12 18:16:03 显示全部楼层
QT版本:5.10.0 环境WINDOWS10,使用QextSerialPort class,能同时打开两个串口。

QextSerialPort :  https://github.com/qextserialport/qextserialport
回复 支持 反对

使用道具 举报

累计签到:7 天
连续签到:1 天
2023-10-13 11:41:21 显示全部楼层
肯定可以同时打开的,估计是你的代码或者方式或者设备有问题
回复 支持 反对

使用道具 举报

尚未签到

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:;
    }
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了