【Visual Studio】使用 C++ 语言,配合 Qt,开发了一个串口通信界面

知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。

文章目录

  • 1. 获取串口名字
    • 1.1 文件 `GUI.ui`
    • 1.2 文件 `GUI.h`
    • 1.3 文件 `GUI.cpp`
    • 潜在 Bug:LN2019
  • 2. 配置串口连接
    • 2.1 文件 `GUI.ui`
    • 2.2 文件 `GUI.h`
    • 2.3 文件 `GUI.cpp`
    • 潜在Bug:按下按钮无反应
  • 3. 配置串口连接
    • 3.1 文件 `GUI.ui`
    • 3.2 文件 `GUI.h`
    • 3.3 文件 `GUI.cpp`
  • Ref

我要使用的功能比较简单,主要包含扫描串口、打开串口、发送数据、接收数据、暂停按钮、停止按钮,因此接下里将围绕这几个功能依次更新。

我的工程项目名字叫 “GUI”。

首先展示下已经创建后的项目截图,主要包括 GUI.uiGUI.hGUI.cpp 这三个文件。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

之后的每个功能,也都将围绕这三个地方进行添加和修改。

1. 获取串口名字

1.1 文件 GUI.ui

UI 界面中添加了一个 Combo Box 组合框,等下将扫描出来的串口号,添加到这个组合框中。

在这里插入图片描述

1.2 文件 GUI.h

GUI.h 文件中,添加需要用到的头文件,函数 getPortNameList(),变量名。

在这里插入图片描述

1.3 文件 GUI.cpp

GUI.cpp 文件中,编写函数 getPortNameList() 的具体功能。
同时,别忘了将获取到的端口号变量 m_serialPortName,添加到 comboBoxPortNumber 这个组合框中。

在这里插入图片描述
运行后,最终的效果如下:
在这里插入图片描述


潜在 Bug:LN2019

在这过程中,可能会遇到一个 LN2019 的 bug,可以参考这个教程解决:【Visual Studio】报错 LNK2019,使用 C++ 语言,配合 Qt 开发串口通信界面。


2. 配置串口连接

这一步添加一个开始按钮 Push Button 和一个停止按钮 Push Button,当开始按钮按下时,我们让串口接通,当停止按钮按下时,我们关闭串口。
注意,在串口接通时,是需要选择配置一些串口传输时的必需信息的,比如波特率,数据位等。

但这我要做的项目中,用户需要操作的越少越好。因此,我这里都将所有信息内置到项目中,不再显露出来。

为了进一步观察状态,我们再添加一个文本浏览器 Text Browser,用来显示串口是否打开的状态。

2.1 文件 GUI.ui

在这里插入图片描述

2.2 文件 GUI.h

在这里插入图片描述

2.3 文件 GUI.cpp

在这里插入图片描述

最终运行效果如下:

在这里插入图片描述


潜在Bug:按下按钮无反应

如果你在编写按钮的事件函数时,没有使用和我一样的名字,那么当你按下按钮时,你编写的事件触发函数不会得到响应。这是因为你没有建立函数的按钮的信号连接。详情请参考这篇文章:【Visual Studio】开发 Qt 时右键没有自动添加 slots 槽的功能,使用 C++ 语言,配合 Qt 开发串口通信界面。


3. 配置串口连接

这一步主要用来接收串口发送过来的信息并显示出来。我们添加一个文本浏览器 Text Browser,用来显示串口接收到的内容。

3.1 文件 GUI.ui

在这里插入图片描述

3.2 文件 GUI.h

在这里插入图片描述

3.3 文件 GUI.cpp

在这里插入图片描述
在这里插入图片描述

最终运行效果如下:

在这里插入图片描述


Ref

  1. Visual Studio如何使用Qt开发桌面软件?
  2. Qt 实现多线程的串口通信

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/1474.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C#】简单聊下Framework框架下的事务

框架用的多了,之前版本的事务都忘记了。本次简单聊下.net framework 4.8框架下本身的事务 目录 1、SqlClient2、TransactionScope3、引用 1、SqlClient 在 C# 中,使用 using 块可以方便地实现对资源的自动释放,但它不适用于实现事务处理。为…

一种基于linux内核双向链表的移植

1.简介 双向链表(Doubly Linked List)是一种常见的数据结构,由一系列的节点组成,每个节点都包含两个指针,分别指向前一个节点和后一个节点。与单向链表不同,双向链表可以在 O(1) 的时间复杂度内向前或向后遍…

虚拟机VMware+Ubuntu配置DPDK环境并运行Helloworld

虚拟机VMwareUbuntu配置DPDK环境并运行Helloworld 文章目录 虚拟机VMwareUbuntu配置DPDK环境并运行Helloworld安装虚拟机虚拟机中安装DPDK运行Helloworld 首先需要强调的是,版本的影响很大,有可能会因为版本不匹配而导致无法成功配置DPDK环境。 安装虚拟…

火山引擎 Iceberg 数据湖的应用与实践

在云原生计算时代,云存储使得海量数据能以低成本进行存储,但是这也给如何访问、管理和使用这些云上的数据提出了挑战。而 Iceberg 作为一种云原生的表格式,可以很好地应对这些挑战。本文将介绍火山引擎在云原生计算产品上使用 Iceberg 的实践…

Scrapy框架之认识MongoDB

目录 MongoDB 简介 特点 MongoDB的适用场景 MongoDB的行业具体应用 如何抉择是否使用MongoDB MongoDB 简介 MongoDB 是免费开源的跨平台 NoSQL 数据库,命名源于英文单词 humongous,意思是「巨大无比」,可见开发组对 MongoDB 的定位。…

函数模板和类模板 知识点总结 C++程序设计与算法笔记总结(七) 北京大学 郭炜

函数模板 交换两个整型变量的值的Swap函数: void Swap(int & x,int & y) { int tmp x; x y; y tmp; } 交换两个double型变量的值的Swap函数: void Swap(double & x,double & y) { double tmp x; x y; y tmp; }用函数模板解决: …

计算几何——gitf-wrapping算法

几何中的"gift-wrapping"算法,又称为"Jarvis算法",是一种用于计算凸包(convex hull)的方法。下面我将为你解释一下该算法的步骤: 1. 找到具有最小x坐标的点P,我们将其作为凸包的起点。 2. 将P标记为当前点&a…

Java Spring概述

1、Spring是什么? Spring 是一款主流的 Java EE 轻量级开源框架 ,Spring 由“Spring 之父”Rod Johnson 提出并创立,其目的是用于简化 Java 企业级应用的开发难度和开发周期。Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦…

MySQL 备份与恢复

MySQL 备份与恢复 一、数据库备份的分类1.1 数据备份的重要性1.2 数据库备份的分类1.2.1 从物理与逻辑的角度,分为物理备份和逻辑备份1.2.2 从数据库的备份策略角度,分为完全备份,差异备份和增量备份1.2.3 常见的备份方法 二、MySQL完全备份与…

GreenPlum版本升级

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

10个图像处理的Python库

在这篇文章中,我们将整理计算机视觉项目中常用的Python库,如果你想进入计算机视觉领域,可以先了解下本文介绍的库,这会对你的工作很有帮助。 1、PIL/Pillow Pillow是一个通用且用户友好的Python库,提供了丰富的函数集…

芯片等高科技制造业 如何实现安全的跨网数据交换?

芯片是信息产业的基础,一直以来占据全球半导体产品超过80%的销售额,在计算机、家用电器、数码电子、自动化、电气、通信、交通、医疗、航空航天等几乎所有的电子设备领域中都有使用。 所以,对于芯片这种高科技制造业来说,数据的安…