欢迎来到天天文库
浏览记录
ID:18164373
大小:821.58 KB
页数:22页
时间:2018-09-14
《qt串口通信专题教程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Qt串口通信专题教程 查看以前的教程:Qt编写串口通信程序全程图文讲解查看Wincom和Lincom介绍:Qt跨平台串口通信软件Wincom与Lincom下载软件,文档和源码:资源下载——————————————2010年7月8日更新——————————————–网友赵文杰使用多线程完成的linux下的串口通信。下载源码:下载—————————————————————————————————————以下是正文:前言去年我使用Qt编写串口通信程序时,将自己的学习过程写成了教程(Qt编写串口通信程序全程图文讲解),但是由于时间等原因,我只实现了
2、Windows下的串口通信,并没有去做Linux下的。自从教程发布到网上后,就不断有人提出相关的问题,而其中问的最多的就是,怎样在Linux下实现串口通信。因为有计划安排,而且没有开发板,所以一直没能去研究,也就没能给出很好的解决办法。前些天,网友hqwfreefly用Qt写了一个叫linucom的Linux下串口调试程序,实现了Linux的串口通信。而且,正好现在我有几天假期,所以就和hqwfreefly合作,将linucom更新为Lincom,并且推出了Windows下的Wincom,然后完成了这篇Qt编写串口通信程序的专题教程,也算完
3、成了我的一个心愿。 教程概述 该教程分三部分讲述,第一部分讲解qextserialport类的一些东东;第二部分讲解在Windows下使用qextserialport类实现串口通信的方法,这里将讲述两种不同的方法;第三部分讲解在Linux下利用qextserialport类实现串口通信的方法。 在这个教程中我们更注重知识的讲解,而不是界面的设计。关于界面和其他应用问题,你可以查看以前的串口通信教程或者查看一下Wincom软件的源码。第一部分Qextserialport类介绍 在Qt中并没有特定的串口控制类,现在大部分人使
4、用的是第三方写的qextserialport类,我们这里也使用了该类。一、文件下载文件下载地址:http://sourceforge.net/projects/qextserialport/files/也可以下载我上传到网盘上的:http://good.gd/494307.htm二、文件内容介绍 1.下载到的文件为qextserialport-1.2win-alpha,解压并打开后其内容如下。(点击图片可以查看清晰大图) 下面分别介绍:(1)doc文件夹中的文件内容是QextSerialPort类和QextBaseType的简单的说明,我们
5、可以使用记事本程序将它们打开。(2)examples文件夹中是几个例子程序,可以看一下它的源码,不过想运行它们好像会出很多问题啊。(3)html文件夹中是QextSerialPort类的使用文档。(4)然后就是剩下的几个文件了。其中qextserialenumerator.cpp及qextserialenumerator.h文件中定义的QextSerialEnumerator类是用来获取平台上可用的串口信息的。不过,这个类好像并不怎么好用,而且它不是我们关注的重点,所以下面就不再介绍它了。 (5)qextserialbase.cpp和qex
6、tserialbase.h文件定义了一个QextSerialBase类,win_qextserialport.cpp和win_qextserialport.h文件定义了一个Win_QextSerialPort类,posix_qextserialport.cpp和posix_qextserialport.h文件定义了一个Posix_QextSerialPort类,qextserialport.cpp和qextserialport.h文件定义了一个QextSerialPort类。这个QextSerialPort类就是我们上面所说的那个,它是所有
7、这些类的子类,是最高的抽象,它屏蔽了平台特征,使得在任何平台上都可以使用它。2.几个类的简单介绍。下面是这几个类的关系图。 可以看到它们都继承自QIODevice类,所以该类的一些函数我们也可以直接来使用。图中还有一个QextBaseType类,其实它只是一个标识,没有具体的内容,它用来表示Win_QextSerialPort或Posix_QextSerialPort中的一个类,因为在QextSerialPort类中使用了条件编译,所以QextSerialPort类既可以继承自Win_QextSerialPort类,也可以继承自Posix_
8、QextSerialPort类,所以使用了QextBaseType来表示。这一点我们可以在qextserialport.h文件中看到。再说QextSerialPort类,其实它只
此文档下载收益归作者所有