详解 Qt 串口通信程序全程图文 (5)
Qt 串口通信程序全程图文是本文介绍的内容,本节也是最后一节,本节主要讲述的是解决一下重要问题的说明:
(下面所说的第一个程序是指第一节中写的那个程序,第二个程序是指第三节更改完后的程序,第三个程序是指第四节更改完后的程序。)
问题一:更改第一个程序中的代码。
- struct PortSettings myComSetting = {BAUD9600,DATA_8,PAR_NONE,STOP_1,FLOW_OFF,500};
- myCom = new Win_QextSerialPort("com1",myComSetting,QextSerialBase::EventDriven);
这两行代码如果换为下面一行:
- myCom = new Win_QextSerialPort("com1",QextSerialBase::EventDriven);
你再运行一下程序,是不是还能用?那是说明我们的串口设置的结构体myComSetting没有用吗?你可以把上面的结构体里的波特率由9600改为115200,如果这个结构体有用,那么程序不可能再接收到数据,不过,你再运行一下程序,是这样吗?
如此看来,我们对串口进行的设置果真没用,那默认的串口设置是什么呢?我们先看下一个问题。
问题二:同时打开第三个程序和第二个程序。
(注意:两个程序的串口不能同时打开,所以打开一个程序的串口时要将另一个程序的串口关闭。)
我们先在第三个程序上按默认设置打开串口,发送数据1。然后关闭串口,在第二个程序上打开串口,发送数据1。可以看到两个程序上接受到的信息都正确。如下图。
我们关闭第二个程序上的串口,再将第三个程序上设置为奇校验,然后打开串口,发送数据1,可以看到其收到的数据显示乱码。这时我们关闭第三个程序上的串口,打开第二个程序上的串口,发送数据1,你会惊奇地发现,它收到的信息也是乱码。如下图。
这到底是怎么回事呢?我们也可以去网上下载其他的串口助手进行实验,也可以改变波特率进行实验。由所有的结果得出的结论只能是:我们用那个结构体作为参数传过去后,并没有对串口进行设置,而程序运行使用的串口设置是系统以前保留的设置。那么,为什么会这样呢?我们看下面的一个问题。
问题三:更改第三个程序中的代码。
- myCom ->open(QIODevice::ReadWrite);
放到设置串口的语句之后,
- connect(myCom,SIGNAL(readyRead()),this,SLOT(readMyCom()));
这句之前,然后再运行程序。你会发现程序的串口设置功能已经不起作用了。现在知道原因了吧?!
其实,上面的三个问题是一个问题,它的结论是,写串口程序时,要先打开串口再对它进行设置,不然设置就不会起作用。所以,这里应该说明,第一个和第二个程序都是不太正确的,正确的方法应该是像第三个程序一样,先定义Win_QextSerialPort类对象,然后打开串口,再用那几个设置函数对串口进行设置。
到这里,整篇文章就结束了。对于其中的一些问题也只是我个人的观点,由于水平有限,所以理解上可能会有偏差,或者错误,还请广大网友批评指正。我写这篇文章的目的只是想让Qt初学者能更轻松的用Qt写出串口通信程序,及掌握Qt写程序时的一些技巧。如果你从我的文章中学到了一个知识点,那么我的这篇文章就有它的意义了。
最后,如果你喜欢我的写作风格,并且初学Qt,可以在我的空间查看Qt Creator系列教程,希望能对你的入门有所帮助。
到这里可以下载本文的PDF文档:http://download.csdn.net/source/1763251
详解 Qt 串口通信程序全程图文 (5)相关推荐
- qt linux 串口eventdriven,详解 Qt 串口通信程序全程图文 (1)
Qt 串口通信程序全程图文 是本文介绍的内容,在Qt中并没有特定的串口控制类,现在大部分人使用的是第三方写的qextserialport类,我们这里也是使用的该类.我们可以去 http://sourc ...
- 详解 Qt 串口通信程序全程图文 (4)
Qt 串口通信程序全程图文是本文介绍的内容,本文一开始先讲解对程序的改进,在文章最后将要讲解一些重要问题. 1.在窗口中加入一些组合框Combo Box,它们的名称及条目如下: 串口:portName ...
- 详解 Qt 串口通信程序全程图文 (3)
Qt 串口通信程序全程图文是本文要介绍的内容,下面的程序在第一部分中所写的程序上进行了一些改进.加入打开和关闭串口,发送数据等功能. 1.加入了"打开串口","关闭串口& ...
- 详解 Qt 串口通信程序全程图文 (2)
Qt 串口通信程序全程图文是本文介绍的内容,上一部分中已经介绍了实现最简单的串口接收程序的编写,下面将对程序内容进行分析. 1.首先应说明操作串口的流程 步骤一:设置串口参数,如:波特率,数据位,奇偶 ...
- 详解 Qt 串口通信程序全程图文 (1)
Qt 串口通信程序全程图文 是本文介绍的内容,在Qt中并没有特定的串口控制类,现在大部分人使用的是第三方写的qextserialport类,我们这里也是使用的该类.我们可以去 http://sourc ...
- 【转】Qt编写串口通信程序全程图文讲解
Qt编写串口通信程序全程图文讲解 本文章原创于www.yafeilinux.com 转载请注明出处. (说明:我们的编程环境是windows xp下,在Qt Creator中进行,如果在Linux下或 ...
- win Qt qextserialport 编写串口通信程序全程图文讲解
转:http://blog.csdn.net/u010580186/article/details/51595227 (说明:我们的编程环境是windows xp下,在Qt Creator中进行,如果 ...
- Qt编写串口通信程序全程图文讲解
(说明:我们的编程环境是windows xp下,在Qt Creator中进行,如果在Linux下或直接用源码编写,程序稍有不同,请自己改动.) 在Qt中并没有特定的串口控制类,现在大部分人使用的是第三 ...
- 【转】Qt串口通信专题教程
查看以前的教程:Qt编写串口通信程序全程图文讲解 查看Wincom和Lincom介绍:Qt跨平台串口通信软件Wincom与Lincom 下载软件,文档和源码:资源下载 --------------20 ...
最新文章
- (转载)Python数据分析之pandas学习
- 【深度学习】基于区域生长的图像分割算法!
- WebRTC:并非解决音视频应用所有问题的银弹
- CSS Grid布局(3)
- C++类型萃取之type_traits和type_info
- 字节跳动28岁程序员退休:我只想做一个自由的“废物”
- 如何在JSP里添加删除cookie
- Classic Poems ----Tagore, Stray birds
- 点击area不出现黑框_一切小黑屋,都能被黑框玻璃门治愈 | 附安装法则
- Qt5.14.2安装、配置及测试(Win10)
- 计算机三级网络技术上机,计算机三级网络技术上机部分(南开100题题库)
- PCI-E x1/x4/x8/x16四种插槽区别是什么?具体有什么作用?
- 中兴新支点操作系统_中兴新支点国产操作系统体验报告:使用流畅,性能稳定!...
- 西安电子科技大学超级计算机,西安电子科技大学超级计算机投入使用
- excel多个工作表汇总怎么做?
- oracle 数据库导入导出文章
- react navigation 中使用goBack()跳转到指定页面
- numpy.insert用法以及内插插0的方法
- Matlab调用百度API画地图讲解教程
- python 峰_python-如何在具有多个峰的数据集中查找FWH...