Sci论文 - 至繁归于至简,Sci论文网。 设为首页|加入收藏
当前位置:首页 > 计算机论文 > 正文

基于 Qt 的串口通信实验论文

发布时间:2023-05-10 11:06:17 文章来源:SCI论文网 我要评论














SCI论文(www.lunwensci.com)

 摘 要:利用 Qt 编写简单的 GUI(Graphical User Interface) 串口通信程序, 与 Proteus 软件以及实际开发板上的 51 单片机进行了通信实验,验证了程序的正确性。该程序代码简单,容易实现,能极大的激发学生学习 Qt 与单片机的兴趣,也 为进一步利用 Qt 编写功能强大的上位机程序打下基础。

  关键词:Qt上位机,单片机,串口通信

  Serial Communication Experiment Based on Qt

  CAO Dean

  (The Open University of Guangdong(Guangdong Polytechnic Institute), Guangzhou Guangdong 510091)

  【Abstract】:A simple GUI(Graphical User Interface) serial port communication program, written by using Qt, is proved to be correct through the communication experiments with the 51 single-chip microcomputer in Proteus software and the actual development board. The program code is simple and easy to implement, which can greatly stimulate students' interest in learning Qt and SCM and also lay a foundation for further using Qt to write powerful host computer programs.

  【Key words】:Qt host compute;single chip;serial communication

\
 

       0 引言

  51 单片机是电子信息大类基本的硬件课程, Qt 是常 见的上位机软件开发工具。本文在 Windows 平台下利 用 Qt 编写简单的 GUI 串口通信程序,与 Proteus 软件 中或者是开发板上的 51 单片机进行通信实验。这对 Qt 与单片机学习者来说,是一个很不错的实践案例。传统 的单片机串口通信实验,往往是直接利用一款串口助手 与连接到电脑的单片机进行串口通信实验 [1] ,而本实验 中“串口助手”程序是由用户自己编写,这更加能激发 编程者的学习兴趣。

  1 Qt 及串口类简介

  Qt 是奇趣科技公司开发的跨平台 C++ 图形用户界面 应用程序开发框架,它既可以开发 GUI 程序,也可开发 非 GUI 程序,是嵌入式 Linux 的 UI 设计中最常用的一 款性能非常强大的 GUI 图形库。在 Qt5.1 版本之前, Qt 实现串口通信一般是使用第三方类库 Qextserialport 的方 法 [2]。从 Qt5.1 开始,Qt 自带了 SerialPort 模块来支持串口通信,该模块中提供了两个类,分别是 QSerial Port 和 QSerialPortInfo, 开发串口程序变得简单 [3.4]。 QSerialPort 类可以用来创建一个串口对象,利用该对 象的成员函数 setPortName() 设置为系统中某个具体 的串口。串口对象还包括一些其他成员属性与成员函 数,如串口波特率、数据位数、串口的打开与关闭、数 据的发送与接收等。QSerialPortInfo 类是串口信息类, 可以提供计算机中可用串口的各种信息,如当前系统可 用的串口名称、描述、制造商、序列号、串口 16 位产 品编号等。使用 Qt 中的串口类,需要在 .pro 工程文件 包含 SerialPort 模块:QT += SerialPort, 而在具体使 用 QSerialPort 和 QSerialPortInfo 类的代码文件中, 还需要通过 Include 语句包含类的头文件。使用 Qt 进 行串口通信基本步骤为:配置串口参数→打开串口→ 收 发数据。

  2 基于串口通信的 Qt 上位机程序界面设计

  基于串口通信的 Qt 上位机程序界面如图 1 所示。图中 6 个 QLabel 控件用于显示提示信息。5 个 QCombo Box 控件用来设置串口的串口号、波特率等参数,通过 点击该控件,弹出选择下拉列表,用户选择当前串口所 需要的参数值。4 个 QPushButton 控件控制串口的打 开与关闭,以及相连单片机电路中 2 个灯的开与关。

\
 
 3 基于串口通信的 Qt 上位机程序逻辑功能实现

  QComboBox 控件的不同选项值可以在 Qt Creator 的 UI 编辑窗口中手动添加,也可以在程序代码中添加。 由于波特率数值、数据位、停止位、校验位个数一般 只取一些典型值,这些控件的选项采用手动添加即可。 例如,在 UI 编辑窗口中,鼠标双击代表波特率数值的 QComboBox 控件,打开编辑组合框如图 2 所示,通过 点击图中“+”按钮增加数据项。

 
\
 
 代表串口号的 QComboBox 控件选项值虽然也可 以手动添加,但由于实际存在的可用串口编号名并不是 固定的,所以一般该项值不是直接手动添加,而是通过代码自动获取的方式。该方法是利用 QSerialPortInfo 类的 availablePorts() 函数自动获取当前系统的可用串 口编号,并设置为串口号控件的选项值,具体代码如下:

  QStringListserialPortName;

  foreach(constQSerialPortInfo&info,QSerialPor tInfo::availablePorts()){

  serialPortName<<info.portName();

  }

  ui->serialCb->addItems(serialPortName);

  QComboBox 控件手动添加的选项值在程序运行 时就可以看到而不需要其他代码的执行。代表串口号的 QComboBox 控件选项值是通过代码的执行获取的。将 这部分代码放在主窗口对象的构造函数中,程序运行后 也将被自动执行。如果电脑上存在可用串口,串口号将 自动填入代表串口号控件中,如图 1 所示。 

  对于各个按钮功功能,可以在 UI 编辑窗口通过 “转到槽”的方式进入槽函数的编写窗口。

  “打开串口”按钮,要完成串口参数的设置与串口 的打开。串口参数的设置包括串口号、波特率数值、数 据位、停止位、校验位个数的设置。对于串口号,直接 获取对应控件中的文本即可,代码如下:

  serialPort=newQSerialPort(this);// 创建串口对象

  serialPort->setPortName(ui->serialCb-> current Text());

  而波特率数值、数据位、停止位、校验位个数的设 置需要通程序读取 QComboBox 控件中的选项值,然 后再给这些串口参数设置对应的枚举值。如下是波特率 数值的设置代码:

  QSerialPort::BaudRatebaudRate;

  if(ui->baundrateCb->currentText()=="9600"){

  baudRate=QSerialPort::Baud9600;

  }elseif(ui- >baundrateCb- >currentText()== "115200"){

  baudRate=QSerialPort::Baud115200;

  }

  串口的打开只需执行串口对象的成员函数 open 即可:

  serialPort->open(QIODevice::WriteOnly);// 本 实验中上位机程序仅写串口

  灯的开关按钮被点击时,可以向串口写入某个字 符,单片机收到这个字符后,使对应灯的状态发生反转 即可:

  serialPort->write("A");//1 号灯开关被点击时向串 口写字符“A”

  “关闭串口”按钮被点击时执行代码如下:

  serialPort->close();

  4 Qt 与单片机串口通信实验

  在硬件实验前,用 Proteus 软件进行虚拟仿真测 试。可以利用 Eltima VSPD 软件虚拟出一对串口,例 如 COM1 与 COM2.Qt 中串口号若选 COM1.Proteus 中的串口则为 COM2.反之亦然。如图 3 所示为 Qt 与 Proteus 中单片机串口通信实验电路,电路中使用虚拟 终端 Virtual Terminal 观察和验证 Qt 通过串口发过 来的数据, Qt 程序界面如前面图 1 所示。硬件测试时, 将清翔电子 QX-mini51 单片机最小系统板与电脑通过 通过 USB 线相连(实际为 USB 转串口), Qt 中的串口 号为那个实际的串口。实验结果表明, Qt 软件编写的 串口程序,既可以通过虚拟串口与 Proteus 中单片机通 信,也可以利用实际的串口与真实的单片机通信,验证 了 Qt 程序的正确性。

 
\
 
5 结语

  Qt 与 51 单片机串口通信,既可以是实际的单片机, 也可以是 Proteus 软件中的单片机。

  本实验将 Qt 与单片机编程进行了很好的结合,而 且代码简单,易于实现, 能极大的激发学生学习 Qt 与 单片机的兴趣,也为进一步利用 Qt 编写功能强大的上 位机软件打下基础。

 
\
 

 参考文献

  [1] 宋雪松,李冬明,崔长胜 .手把手教你学51单片机C语言版 [M].北京:清华大学出版社,2014.

  [2] 郑忠楷,蒋学程,罗志灶 .基于QT的串口通信程序设计[J]. 电 子技术与软件工程,2019(24):236-238.

  [3] 田园,周勖.基于Qt的串口通信应用研究与实现[J]. 中国新通 信,2018.20(22):32.

  [4] 李锦明,张志豪.基于Qt的大棚温湿度监控系统设计[J]. 电子 测量技术,2021.44(8)135-140.
 
 

 
关注SCI论文创作发表,寻求SCI论文修改润色、SCI论文代发表等服务支撑,请锁定SCI论文网!

文章出自SCI论文网转载请注明出处:https://www.lunwensci.com/jisuanjilunwen/55824.html

发表评论

Sci论文网 - Sci论文发表 - Sci论文修改润色 - Sci论文期刊 - Sci论文代发
Copyright © Sci论文网 版权所有 | SCI论文网手机版 | 鄂ICP备2022005580号-2 | 网站地图xml | 百度地图xml