- 编写发送
和之前一样右击发送按钮。
这里我们先判断串口有没有打开,如果打开了转成utf-8编码发送,然后把发送内容显示出来,否则弹出一个警告对话框。 - 编写接收
其实接收有两种方式,一种是接完后读取,一种是定时去读取,这里我用的是定时读取。
先添加一个定时器
这里当定时器每次到达设置的时间后都会触发一次槽函数,我们在槽函数里面把串口缓冲区的所有数据都读出来,然后显示出来。
这里我们的超时时间是控件FRAMEDELAY的值,所以我们要限制这个输入只能为数字,否则设置为20。
右键输入行,选择editingFinished(),这个函数是在输入行输入了回车或者失去选中时触发。
当toInt()参数不能转换为数字时,返回0。
把控件默认值改为20。
最后我们在串口打开时开启定时器,在串口关闭时关闭定时器。
- 增加清屏
和之前一样添加清屏的槽函数,函数内把显示控件清空就行了。
最后回环效果如图:
细心的朋友会发现当定时时间很短,发送中文时会显示乱码,这是因为比如一个中文占用3个字节,当发送10个中文的时候,如果发送到第5个中文的第二个字节定时器超时触发了,那么中间一个中文字符就会被割裂,造成乱码,解决方法可能要在接收时加判断。如果不用定时器,直接使用readyRead信号,则可以不用考虑。
大致是在开启串口时绑定readyRead信号触发ReadData()函数,然后在函数内readAll。具体实现不再详细讲解。
下一章:QT5自制串口助手(5)数据显示