详解 Qt 串口通信程序全程图文 (5)

移动开发
本文介绍的是Qt 串口通信程序全程图文,以连载的形式为友们介绍,请关注末尾编辑推荐。先来看内容。

Qt 串口通信程序全程图文是本文介绍的内容,本节也是最后一节,本节主要讲述的是解决一下重要问题的说明:

(下面所说的第一个程序是指第一节中写的那个程序,第二个程序是指第三节更改完后的程序,第三个程序是指第四节更改完后的程序。)

问题一:更改第一个程序中的代码。

  1. struct PortSettings myComSetting = {BAUD9600,DATA_8,PAR_NONE,STOP_1,FLOW_OFF,500};  
  2. myCom = new Win_QextSerialPort("com1",myComSetting,QextSerialBase::EventDriven); 

这两行代码如果换为下面一行:

  1. myCom = new Win_QextSerialPort("com1",QextSerialBase::EventDriven); 

你再运行一下程序,是不是还能用?那是说明我们的串口设置的结构体myComSetting没有用吗?你可以把上面的结构体里的波特率由9600改为115200,如果这个结构体有用,那么程序不可能再接收到数据,不过,你再运行一下程序,是这样吗?

如此看来,我们对串口进行的设置果真没用,那默认的串口设置是什么呢?我们先看下一个问题。

问题二:同时打开第三个程序和第二个程序。

(注意:两个程序的串口不能同时打开,所以打开一个程序的串口时要将另一个程序的串口关闭。)

我们先在第三个程序上按默认设置打开串口,发送数据1。然后关闭串口,在第二个程序上打开串口,发送数据1。可以看到两个程序上接受到的信息都正确。如下图。

Qt 串口通信程序全程图文

我们关闭第二个程序上的串口,再将第三个程序上设置为奇校验,然后打开串口,发送数据1,可以看到其收到的数据显示乱码。这时我们关闭第三个程序上的串口,打开第二个程序上的串口,发送数据1,你会惊奇地发现,它收到的信息也是乱码。如下图。

Qt 串口通信程序全程图文

这到底是怎么回事呢?我们也可以去网上下载其他的串口助手进行实验,也可以改变波特率进行实验。由所有的结果得出的结论只能是:我们用那个结构体作为参数传过去后,并没有对串口进行设置,而程序运行使用的串口设置是系统以前保留的设置。那么,为什么会这样呢?我们看下面的一个问题。

问题三:更改第三个程序中的代码。

  1. myCom ->open(QIODevice::ReadWrite); 

放到设置串口的语句之后,

  1. connect(myCom,SIGNAL(readyRead()),this,SLOT(readMyCom())); 

这句之前,然后再运行程序。你会发现程序的串口设置功能已经不起作用了。现在知道原因了吧?!

其实,上面的三个问题是一个问题,它的结论是,写串口程序时,要先打开串口再对它进行设置,不然设置就不会起作用。所以,这里应该说明,第一个和第二个程序都是不太正确的,正确的方法应该是像第三个程序一样,先定义Win_QextSerialPort类对象,然后打开串口,再用那几个设置函数对串口进行设置。

到这里,整篇文章就结束了。对于其中的一些问题也只是我个人的观点,由于水平有限,所以理解上可能会有偏差,或者错误,还请广大网友批评指正。我写这篇文章的目的只是想让Qt初学者能更轻松的用Qt写出串口通信程序,及掌握Qt写程序时的一些技巧。如果你从我的文章中学到了一个知识点,那么我的这篇文章就有它的意义了。

最后,如果你喜欢我的写作风格,并且初学Qt,可以在我的空间查看Qt Creator系列教程,希望能对你的入门有所帮助。

到这里可以下载本文的PDF文档:http://download.csdn.net/source/1763251

小结:关于Qt 串口通信程序全程图文的内容本节介绍完了,希望本文对你有所帮助,关于串口的更多内容,请关注编辑推荐。(连载)

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-06-29 13:50:15

Qt 串口

2011-06-29 14:06:15

Qt 串口

2011-06-29 14:23:08

Qt 串口

2011-06-29 14:32:25

Qt 串口

2011-07-01 13:03:32

QT 线程 串口

2009-08-25 17:24:55

C#串口通信程序

2011-06-13 17:46:07

Qt 串口通信

2011-06-22 17:49:35

Linux Qt 串口

2011-06-27 11:08:37

Qt 串口 通信

2011-07-04 16:57:36

QT 布局 界面

2011-06-22 17:27:19

QT 进程通信

2011-06-30 10:50:39

Qt OpenCV

2011-06-28 13:38:15

Arm linux QT

2011-07-05 17:54:43

QT Sqlite ARM

2011-06-28 10:38:52

QT 文件

2010-01-13 18:17:00

VB.NET通信程序

2011-06-30 17:51:17

QT 元类型 线程

2011-06-23 13:25:42

QT 源码 窗口

2011-07-11 14:12:19

Java串口通信

2010-01-05 17:39:10

.NET Framew
点赞
收藏

51CTO技术栈公众号