【更新】(2010.12)qt编写串口通信程序全程图文讲解

上传人:第*** 文档编号:31084195 上传时间:2018-02-04 格式:DOC 页数:32 大小:498.50KB
返回 下载 相关 举报
【更新】(2010.12)qt编写串口通信程序全程图文讲解_第1页
第1页 / 共32页
【更新】(2010.12)qt编写串口通信程序全程图文讲解_第2页
第2页 / 共32页
【更新】(2010.12)qt编写串口通信程序全程图文讲解_第3页
第3页 / 共32页
【更新】(2010.12)qt编写串口通信程序全程图文讲解_第4页
第4页 / 共32页
【更新】(2010.12)qt编写串口通信程序全程图文讲解_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《【更新】(2010.12)qt编写串口通信程序全程图文讲解》由会员分享,可在线阅读,更多相关《【更新】(2010.12)qt编写串口通信程序全程图文讲解(32页珍藏版)》请在金锄头文库上搜索。

1、原文地址:http:/ 说明:根据最新版本(截止 2010/12)qextserialport 更新:文中改动的地方用/* /标记./*由于原教程使用的文件比较老,现在有了不少更新,文件结构有所调整,比如没有qextserialbase.cpp 和 qextserialbase.h,此外,最新的文件编译后,生成库文件,给的例子也是结合生成的库文件来开发应用程序。由于网上没有找到针对最新版本的使用教程,因此对原教程进行了改写,基本保留原来的结构和特点,将下载的源文件加到工程里,和其他代码一起编译。*/Qt 编写串口通信程序全程图文讲解(一)(改编) 首先说明我们的编程环境是 windows xp

2、 下,在 Qt Creator 中进行,如果在 Linux 下或直接用源码编写,程序稍有不同,请自己改动。在 Qt 中并没有特定的串口控制类,现在大部分人使用的是第三方写的 qextserialport类,我们这里也是使用的该类。我们可以去http:/ google code http:/ 2009 年 5 月起,原先在 sourceforge 上的内容不再提供更新。下载到的文件有 9 个, */其内容如下图:可以将这些文件全部加到工程里,Qt Creator 会根据不同平台自动选择编译的文件。也可以只选择需要的文件。下面我们将讲述详细编程过程,这里我们先给出完整的程序,然后再进行逐句分析。1

3、.打开 Qt Creator,新建 Qt4 Gui Application,工程名设置为 mycom,其他使用默认选项。(注意:建立的工程路径不能有中文。)2.将上面所说的 9 个文件复制到工程文件夹下, 3.在工程中添加这 9 个文件。在 Qt Creator 中左侧的文件列表上,鼠标右击工程文件夹,在弹出的菜单中选择 Add Existing Files,添加已存在的文件。如下图:选择工程文件夹里的那 9 个文件,进行添加。添加好后文件列表如下图所示:4.点击 mainwindow.ui,在窗口上加入一个 Text Browser,用来显示信息。如下图。5.添加文件/*在 mainwind

4、ow.h 的相应位置添加头文件#include qextserialport.h,添加私有成员对象声明 QextSerialPort *myCom;,添加槽函数声明 void readMyCom();,添加完后,如下图。*/6.在 mainwindow.cpp 的类的构造函数中添加如下语句。MainWindow:MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui:MainWindow)ui-setupUi(this);struct PortSettings myComSetting = BAUD9600,DATA_8,PAR_

5、NONE,STOP_1,FLOW_OFF,500;/定义一个结构体,用来存放串口各个参数/* myCom = new QextSerialPort(com1,myComSetting,QextSerialPort:EventDriven); /*/定义串口对象,并传递参数,在构造函数里对其进行初始化myCom -open(QIODevice:ReadWrite);/以可读写方式打开串口connect(myCom,SIGNAL(readyRead(),this,SLOT(readMyCom();/信号和槽函数关联,当串口缓冲区有数据时,进行读串口操作在下面添加 readMyCom()函数的定义,

6、添加如下代码。void MainWindow:readMyCom() /读串口函数 QByteArray temp = myCom-readAll();/读取串口缓冲区的所有数据给临时变量 tempui-textBrowser-insertPlainText(temp);/将串口的数据显示在窗口的文本浏览器中添加完代码后如下图。/*此外,mycom.pro 文件要作些改动,改后如下:PROJECT = mycomQT += core guiTARGET = mycomTEMPLATE = appDEFINES += QEXTSERIALPORT_LIB #去掉该句会有严重问题DEPENDPAT

7、H += .HEADERS += qextserialport.h qextserialenumerator.h qextserialport_global.hmainwindow.hSOURCES += main.cppmainwindow.cpp qextserialport.cppFORMS += mainwindow.ui#OTHER_FILES +=unix:SOURCES += posix_qextserialport.cppunix:!macx:SOURCES += qextserialenumerator_unix.cppmacx SOURCES += qextserialen

8、umerator_osx.cppLIBS += -framework IOKit -framework CoreFoundationwin32 #此语句块也很重要SOURCES += win_qextserialport.cpp qextserialenumerator_win.cppDEFINES += WINVER=0x0501 # needed for mingw to pull in appropriate dbt business.probably a better way to do thisLIBS += -lsetupapi*/此时如果运行程序,已经能实现读取串口数据的功能了。

9、我们将单片机采集的温度信息由串口传给计算机,效果如下图。这样最简单的串口通信程序就完成了。可以看到它只需要加入几行代码即可,非常简单。在下一篇中我们将详细分析添加的每一条语句。Qt 编写串口通信程序全程图文讲解(二)(原创) 上一篇文章中已经介绍了实现最简单的串口接收程序的编写,这篇将对程序内容进行分析。1.首先应说明操作串口的流程。步骤一:设置串口参数,如:波特率,数据位,奇偶校验,停止位,数据流控制等。步骤二:选择串口,如 windows 下的串口 1 为“com1”,Linux 下为“ttyS0” 等。步骤三:读或写串口。步骤四:关闭串口。(我们上一个程序没有写串口和关闭串口的功能,打开

10、串口也是在构造函数里完成的,因为那只是为了用最简单的方法完成串口程序的编写。在以后的文章里我们将会对它进行修改和完善。)2.下面我们将按照上面的操作串口的流程,讲解第一个程序的编写。第一,我们在写程序之前,应该浏览一下那 6 个文件,大概看一下它们里面都是什么内容,各个文件各个类之间有什么联系。在 qextserialport.cpp 文件中,我们看它的最后一个构造函数,会发现,串口可以在这里进行初始化。QextSerialPort:QextSerialPort(const QString & name, const PortSettings& settings, QextSerialPort

11、:QueryMode mode): QIODevice()construct();setPortName(name);setBaudRate(settings.BaudRate);setDataBits(settings.DataBits);setParity(settings.Parity);setStopBits(settings.StopBits);setFlowControl(settings.FlowControl);setTimeout(settings.Timeout_Millisec);setQueryMode(mode);platformSpecificInit();它共有三

12、个参数,其中第一个参数 const QString & name,应该是串口的名字,是QString 类型,我们可以用串口 1 即“com1” ,不用过多说明。下面我们主要研究第二个和第三个参数。第二,我们查看第二个参数的位置。在 Qt Creator 的菜单中选择 Edit-Find/Replace-All projects,如下图。在弹出的对话框中输入要查找的内容 PortSettings,如下图。点击 Search 后,便能在下面显示出整个工程中所有 PortSettings 的位置。如下图。/*我们点击第一条,可以看到在 qextserialport.h 文件中有一个 struct P

13、ortSettings,如下图。*/我们双击这一条,进入相应的文件。如下图。struct PortSettings BaudRateType BaudRate;DataBitsType DataBits;ParityType Parity;StopBitsType StopBits;FlowType FlowControl;long Timeout_Millisec;可以看到在这个结构体里定义了串口初始化的各个参数,而对于 BaudRateType 等类型的定义,我们在这个结构体的上面可以看到,它们是多个枚举变量。如下图。这时我们便应该明白了,这个结构体便是实现串口参数设置的。第三,定义串口参数。BaudRateType BaudRate;波特率设置,我们设置为 9600,即程序中用 BAUD9600;DataBitsType DataBits;数据位设置,我们设置为 8 位数据位,即 DATA_8;ParityType Parity;奇偶校验设置,我们

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号