没有合适的资源?快使用搜索试试~ 我知道了~
Qt编写串口通信程序全程图文讲解 出处:http://blog.chinaunix.net/uid-22670933-id-1771588.html
资源推荐
资源详情
资源评论
yafeilinux 作品 http://hi.csdn.net/yafeilinux http://hi.baidu.com/yafeilinux 开源,共享,自由
第 1 页,共 19 页
Qt 编写串口通信程序图文详解
(说明:我们的编程环境是 windows xp 下,在 Qt Creator 中进行,如果在 Linux 下或直接用
源码编写,程序稍有不同,请自己改动。)
在 Qt 中并没有特定的串口控制类,现在大部分人使用的是第三方写的 qextserialport 类,我们这里也是
使用的该类。我们可以去
http://sourceforge.net/projects/qextserialport/files/
进行下载,也可以去下载我上传到网上的:
http://www.qtcn.org/bbs/read.php?tid=22847
下载到的文件为:qextserialport-1.2win-alpha.zip
其内容如下图:
我们在 windows 下只需要使用其中的 6 个文件:
qextserialbase.cpp 和 qextserialbase.h,qextserialport.cpp 和 qextserialport.h,win_qextseri
alport.cpp 和 win_qextserialport.h
如果在 Linux下只需将 win_qextserialport.cpp 和 win_qextserialport.h 换为 posix_qextserialpo
rt.cpp 和 posix_qextserialport.h 即可。
第一部分:
下面我们将讲述编程的详细过程,这里我们先给出完整的程序,然后到第二部分再进行逐句分析。
1.打开 Qt Creator,新建 Qt4 Gui Application,工程名设置为 mycom,其他使用默认选项。
(注意:建立的工程路径不能有中文。)
2.将上面所说的 6 个文件复制到工程文件夹下,如下图。
yafeilinux 作品 http://hi.csdn.net/yafeilinux http://hi.baidu.com/yafeilinux 开源,共享,自由
第 2 页,共 19 页
3.在工程中添加这 6 个文件。
在 Qt Creator 中左侧的文件列表上,鼠标右击工程文件夹,在弹出的菜单中选择 Add Existing Files,
添加已存在的文件。如下图:
选择工程文件夹里的那 6 个文件,进行添加。如下图。
添加好后文件列表如下图所示:
yafeilinux 作品 http://hi.csdn.net/yafeilinux http://hi.baidu.com/yafeilinux 开源,共享,自由
第 3 页,共 19 页
4.点击 mainwindow.ui,在窗口上加入一个 Text Browser,用来显示信息。如下图。
5.在 mainwindow.h的相应位置添加头文件#include "win_qextserialport.h",添加对象声明
Win_QextSerialPort *myCom;添加槽函数声明 void readMyCom();添加完后,如下图。
6.在 mainwindow.cpp 的类的构造函数中添加如下语句。
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
yafeilinux 作品 http://hi.csdn.net/yafeilinux http://hi.baidu.com/yafeilinux 开源,共享,自由
第 4 页,共 19 页
struct PortSettings myComSetting = {BAUD9600,DATA_8,PAR_NONE,STOP_1,FLOW_OFF,
500};
//定义一个结构体,用来存放串口各个参数
myCom = new Win_QextSerialPort("com1",myComSetting,QextSerialBase::EventDriven);
//定义串口对象,并传递参数,在构造函数里对其进行初始化
myCom ->open(QIODevice::ReadWrite);
//以可读写方式打开串口
connect(myCom,SIGNAL(readyRead()),this,SLOT(readMyCom()));
//信号和槽函数关联,当串口缓冲区有数据时,进行读串口操作
}
在下面添加 readMyCom()函数的定义,添加如下代码。
void MainWindow::readMyCom() //读串口函数
{
QByteArray temp = myCom->readAll();
//读取串口缓冲区的所有数据给临时变量 temp
ui->textBrowser->insertPlainText(temp);
//将串口的数据显示在窗口的文本浏览器中
}
添加完代码后如下图。
此时如果运行程序,已经能实现读取串口数据的功能了。我们将单片机采集的温度信息由串口传给计算机,
效果如下图。
剩余18页未读,继续阅读
资源评论
D_lady
- 粉丝: 2
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功