系列文章目录
QT串口助手开发3串口开发
QT串口助手开发3
- 系列文章目录
- 一、UI界面程序的编写
- 二、发送框程序编写
一、UI界面程序的编写
根据上文的未解决问题:我们打开串口按钮打开后只能选择关闭串口,所以这个是循环的过程
上文链接
所以按钮对应的槽函数首先必须判断当前串口助手是否打开了助手,closed以后要把按钮的状态恢复成打开,修改mIsOpen标志位为False
否则执行我们写的getSerialPortConfig获取位(数据位…)成功,按钮状态是打开,并且按钮要更新为关闭(并且位的下拉框要变成灰白色不再可以调位下拉框了),如果没有获取成功则按钮状态是关闭的
禁止使用下拉框就成灰白色了
代码如下:
测试下信息,加个QDebug头信息
ctrl + r运行测试效果
我们需要打开按钮打开后才能点击发送按钮
其实还可以直接把mIsopen填进去这样就不用思考填true或者false
ctrl + r 运行测试效果
当你没有打开串口的时候发送按钮是灰色的(不能发送),当你打开串口的时候,发送按钮是可以发送的
二、发送框程序编写
发送按钮转到槽函数,详情槽函数可以参考文章槽函数
比如TeditSend函数不会用,就再帮助文档查TeditSend函数,帮助文档使用方法参考文档添加链接描述
由于这个toPlainText()这个函数是Qstring类型,所以我们需要变更下它的函数类型为char*,再帮助文档中查看Qstring函数的用法
Qstring先转换成标准的c++string,然后再用c_str转换成char*
ctrl + r 运行测试下效果
同理写接受框,COM2给COM1发送数据时,这时接收框没有反应
接收框程序写法:
平常都是再ui转到槽函数,这个是从设计界面,如果我们连接到串口,需要用代码的方式连接
connect是连接信号和槽,信号发送者是mSerialPort,发送信号Readyread,发送给槽(先自定义下)的槽
slots槽函数
ALT + ENTER选择添加定义
再写槽函数里面读取串口
当串口有数据的时候,就会发送ReadyRead这个信号,槽函数就会响应,就会读取串口,然后设置到接收文本框里面
ctrl + b编译ctrl + r测试下效果
一直发送都是一个hhh
因为我们之前设置的槽函数,一旦有数据就会读取并且发送到接收框,这样每次发送都是会覆盖掉前面发送的,我们不想要覆盖,所以再点开帮助文档,查看texyedit函数或者直接搜索关键字append,查看到append的槽函数,槽函数依旧是函数可以直接调用
所以把setPlaintext函数变更成append函数即可
ctrl + r 运行测试效果
清除功能,查看帮助文档,搜索clear,可以自行添加
END