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

关于QT5.6中使用2个串口的问题请教?

1
回复
5338
查看
[复制链接]
累计签到:7 天
连续签到:1 天
来源: 2018-4-22 07:06:02 显示全部楼层 |阅读模式
1Qter豆
本帖最后由 mail_cj 于 2018-4-22 07:09 编辑

QT版本:Qt Creator 4.0.1Based on Qt 5.6.1 (MSVC 2013, 32 bit)
问题描述:刚开始学习QT,通过尝试完成串口调试助手学习,现在,1个串口已经实现了收发正常,想增加了添加了一个串口,有些问题请教大家:
界面如图所示,第2个串口的参数是在程序中设置的,请教的问题如下:
(1)有没有使用QT5 自带串口类的多串口的DEMO程序可以借鉴?
(2)我在原有程序中添加了一个串口变量:但联结函数这个地方感觉有问题:
    connect(serial, static_cast<void (QSerialPort::*)(QSerialPort::SerialPortError)>(&QSerialPort::error),            this, &MainWindow::handleError);        connect(serial_Alarm, static_cast<void (QSerialPort::*)(QSerialPort::SerialPortError)>(&QSerialPort::error),            this, &MainWindow::handleError);       
    connect(serial, &QSerialPort::readyRead, this, &MainWindow::UartRecData);   
    connect(serial_Alarm, &QSerialPort::readyRead, this, &MainWindow::UartRecData);
   在同一个串口下用两个串口,这样的连接,串口怎么知道收到数据是给哪个串口的?
(3)是不是只有用多线程的方法才能解决,有没有简便的方式?


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

使用道具 举报

累计签到:1 天
连续签到:1 天
2018-4-23 17:05:51 显示全部楼层
readyRead()在收到串口数据后,会自动解析是哪一个绑定的串口对象收到的数据,然后执行对应的slots槽函数。你的写法应该没问题,只需要定义两个不同的槽函数 UartRecData() 与 UartAlarmRecData() 写到不同的connect()中即可。前面的handleError() 原理也是一样,分开定义就能解析不同串口的报错内容。
回复

使用道具 举报

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

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