零基础C++开发上位机--基于QT5.15的串口助手(一)

嵌入式开发的过程中,大部分我们的代码是无法一次成功的。这时候我们大部分的工程师可能最熟练的调试方法是printf函数,打印随意一个数据,来观察当前运行的函数是否执行正确。我们连接的工具有各个大神做的串口助手。另外,在做一般项目时候,大部分的数据需要在电脑端的APP呈现出来给用户,而用户是不懂单片机的,他们只关心数据正确与否。

所以专业角度讲,我们开发的单片机嵌入式设备通常称为下位机,而我们常用的串口助手称之为上位机。下位机+上位机融合的项目才能真正的叫做一个完整的产品。那么我常常想试试没有系统学过C++语言是否能做一款串口助手上位机软件呢?本系列教程尽量以零基础的起点带大家做一款自己的串口助手。甚至做一款自己的app,打包完成一个流程。

一、QT5.15.2安装

QT5.15版本以后,已经不在支持离线安装的状态。只有在线安装的方式,官方网址如下,有网友反映通过国内的清华镜像下载速度更快,这里笔者感觉官方也还好,没有特别慢。Index of /official_releases/qt/5.15

1.账号注册

安装过程中需要账户密码,故需要各位朋友移驾官网

Try Qt | Develop Applications and Embedded Systems | Qt

注册的网址:Qt Account Login

创建成功后,需要去邮箱激活即可。过程非常简单,就不一一赘述了。

2.QT5.15.2安装

进入5.15的官网:Index of /official_releases/qt/5.15

这里我们找到5.15.2进行安装,其他版本一样的操作过程。

single为完整安装包,submodules为子模块安装包。下载后我们开始安装。

使用第一步注册的账号和密码,点击下一步。

勾选上面两个选项下一步。其他直接选完路径,下一步即可。

关键的步骤在于,组件的选择。但是QT提供了非常方便的维护工具,即使有漏下的也不必重装。可以后期OTA安装。

以上是我使用的组件。供大家参考,具体的组件根据各自项目的复杂程度,可以不断的调整。

选好组件继续安装后其他都是无脑安装了。有问题的同学可以留言,我在丰富教程。

二、如何创建项目

安装后,点击“win”,在QT文件夹看看我们都有了什么丰富的程序。

QT主程序:Qt Creator 1.0.1

QT组件维护工具:Qt Maintenance Tool

QT命令行工具:Qt 5.15.2(MinGW 8.1.0)

目前我只用到了以上三个程序。下面开始建立第一个项目:

点击上图的创建项目。

左边项目选择Application,中间选择Qt Widgets Application,然后点击右下角的“选择”。

给自己的项目名一个名字,然后选择一个路径,注意必须全英文或数字,否则报错。

选择默认qmake,点击下一步。

在类里面我们选择创建QWidget,然后其他会自动变换过来,直接点击下一步即可。

选择默认的编译器,直接点下一步。

软件会自动创建一个项目工程,项目的文件如上图列出的。

点击完成后,进入项目工程。会直接进入主程序。

三、项目自带文件解析

1.项目文件架构介绍

test.pro是项目文件,以后打开整个项目,直接双击它即可。

QT       += core gui

#QT工程加入core模块

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

#QT的版本大于4的时候,加入widgets模块

CONFIG += c++17

# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
    main.cpp \
    widget.cpp


#指定工程有哪些源文件

HEADERS += \
    widget.h


#指定工程有哪些头文件

FORMS += \
    widget.ui


#指定工程有哪些UI文件


# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

2.Ui开发环境

既然我们要开发一个上位机软件,也就是UI界面是关键的。我们就先来看看QT开发UI界面是如何便利的。

在开发环境的左侧,QT给大家提供了非常丰富的组件供大家选择,使用的时候直接拖拽即可,本页的开发环境,不需要任何编程,只需要拖拽布局和参数设置即可。至于每个组件什么功能,我们后续再详细介绍。

开发环境的中间的灰色面板,即为我们最终的UI显示界面,目前什么都没有,也就是说现在的程序直接运行就是一个灰色的面板什么都没有,待我们增加丰富的元素。

开发环境的右侧为各种ui的类的属性配置界面。

四、开发i的一个UI界面

1.Ui开发

拖拽Push Button和Text Label进入画布。

分别随意命名。我们就完成了第一个ui程序。

2.程序运行

点击左下角的绿色三角符号。程序即可运行。

左侧点击的绿色三角变灰后,右下角开始构建程序的UI。

这是我们编写的第一个Ui程序,点击按钮会有点击的效果,但是不会有任何变化动作,因为我们没有做进一步的编程。然后按钮上面显示的信息就是我们熟悉的“Hello world”。后续我们再进一步开发复杂的程序。

五、程序打包

开发完程序后,我们不希望程序运行的电脑也必须安装QT这个软件吧。我们要对程序进行打包,生成exe可执行文件,可以在任意的电脑运行。

1.修改配置

左下角的Debug调试修改为Release。

点击左侧菜单栏的“项目”,在新出来的界面右侧修改一个你即将存放打包后的EXE文件的位置。

2.程序打包

然后再次点击绿色三角,运行程序。

生成的exe文件会出现在\test\release文件夹下,注意此时的exe还是不可以运行,缺少运行库。

接下来打开我们的命令行工具,黑色图标那个。

使用命令切换到exe文件对应的目录,然后输入命令windeployqt test.exe,回车。

会自动创建exe可以直接运行依赖的各种文件。打包完成。

以后直接拷贝这些文件,双击EXE文件即可运行程序,而不用安装QT软件。

六、总结

以上,尽管简单,但是我们走过了一个QT开发Ui上位机界面并且打包可执行文件的全部过程。

之后的讲解,我们就是主要研究程序,不再专注于流程。希望大家针对第一讲自行实践,了解开发的过程。爱上上位机的开发。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从0开始python学习-53.python中flask创建简单接口

目录 1. 创建一个简单的请求,没有写方法时默认为get 2. 创建一个get请求 3. 创建一个post请求,默认可以使用params和表单传参 4. 带有参数的post请求 1. 创建一个简单的请求,没有写方法时默认为get from flask import Flask, request# 初始化一个flask的对象 ap…

【贪心算法】:LeetCode860.柠檬水找零

朋友们、伙计们,我们又见面了,本专栏是关于各种算法的解析,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门到精通 数据结构专栏&…

Ubuntu22.04和Windows10双系统安装

概要 本篇演示Ubuntu22.04和Windows10双系统的安装。先安装Ubuntu22.04,再安装Windows10。 一、说明 1、电脑 笔者的电脑品牌是acer(宏碁/宏基) 电脑开机按F2进入BIOS 电脑开机按F12进入Boot Manager 2、U盘启动盘 需要用到两个U盘启动盘 (1&a…

kubernetes集群搭建(1.26版本)

集群搭建 1.初始化安装k8s集群的实验1.1修改主机名称1.2关闭防火墙1.3关闭SELINUX1.4配置主机hosts文件,相互之间通过主机名访问1.5配置主机之间无密码登录1.6关闭交换分区swap,提升性能1.7修改机器内核参数1.9配置阿里云的repo源1.10配置安装k8s组件需要…

力扣● 343. 整数拆分 ● 96.不同的二叉搜索树

● 343. 整数拆分 想不到,要勇于看题解。 关键在于理解递推公式。 1、DP数组及其下标的含义:dp[i]是分解i这个数得到的最大的乘积。 2、DP数组如何初始化:dp[0]和dp[1]都没意义,所以直接不赋值,初始化dp[2]1即可。…

让程序员设计B端界面,好比武大郎招聘:向我看齐。不忍直视!

hello,我是大美B端工场,B端系统的要求越来越高了,很多公司还让程序员负责页面,页面搞的没法看,也怪不得程序员。程序员来搞页面,那还不是武大郎招聘——向我看齐,以我的标准为标准吗&#xff1f…

python 基础知识点(蓝桥杯python科目个人复习计划49)

今日复习内容:做复习题 例题1:希尔排序 题目描述: 希尔排序是直接插入排序算法的一种更高效的改进版本,但它是非稳定排序算法。希尔排序是基于插入排序的以下两点性质而提出的改进方法之一: 1.插入排序在对几乎已经…

预训练-微调范式在人工智能领域的深远影响

预训练-微调范式的出现是人工智能领域的一大里程碑,它深刻改变了深度学习模型的训练方式和应用模式,并对整个行业产生了多方面的深远影响: 数据效率提升: 通过在大规模无标注数据上进行预训练,模型能够学习到丰富的语言…

linux常用的网络命令实战分享

文章目录 ifup/down命令ifconfig命令观察网络接口信息修改接口参数增加虚拟网络接口 route命令查看路由表增加路由表规则删除路由表规则 IP 命令ip linkip addr设定路由 ip route arp 命令 在实际研发运维工作中常常会涉及到网关相关的操作和知识,这里对linux下常用…

(详细使用指南)Linux下交叉编译带ffmpeg的opencv并移植到RK3588等ARM端

一 问题背景 瑞芯微RK3588等嵌入式板作为边缘端设备为算法模型的部署提供了便利,目前很多分类或好检测模型针对边缘端做了优化或量化,使得在边缘端也能达到实时稳定的识别和检测效果。 但嵌入式设备普遍的flash emmc不大,一般在32G左…

【数据结构与算法】(20)高级数据结构与算法设计之 Greedy Algorithm 贪心算法 代码示例与详细讲解

目录 4.2 Greedy Algorithm1) 贪心例子DijkstraPrimKruskal 2) 零钱兑换问题有几个解(零钱兑换 II)Leetcode 518最优解(零钱兑换)- 穷举法 Leetcode 322最优解(零钱兑换)- 贪心法 Leetcode 322 3) Huffman …

9.5K Star,又一款超棒开源轻量自动化运维平台

Hi,骚年,我是大 G,公众号「GitHub指北」会推荐 GitHub 上有趣有用的项目,一分钟 get 一个优秀的开源项目,挖掘开源的价值,欢迎关注。 一个好的运维平台就变得非常重要了,可以节省大量的人力和物…

【HarmonyOS】低代码开发—使用低代码开发服务卡片

DevEco Studio还支持使用低代码开发功能开发服务卡片,目前只支持JS语言,且compileSdkVersion必须为7或以上。 下面以创建一个新的服务卡片为例进行说明。 1.打开一个工程,创建服务卡片,创建方法包括如下两种方式: 选…

SpringBoot自带的tomcat的最大连接数和最大的并发数

先说结果:springboot自带的tomcat的最大并发数是200, 最大连接数是:max-connectionsaccept-count的值 再说一下和连接数相关的几个配置: 以下都是默认值: server.tomcat.threads.min-spare10 server.tomcat.threa…

老隋蓝海项目temu跨境电商好不好做?

近年来,跨境电商成为我国对外贸易的新亮点,其中Temu作为拼多多旗下的新兴跨境电商平台,吸引了众多国内卖家参与。老隋作为行业内的知名人士,他对Temu跨境电商项目的评价备受关注。本文将分析老隋对Temu跨境电商的看法,…

RDMA内核态函数ib_post_send()源码分析

最近调用linux内核下RDMA的Verb API ib_post_send()出现了问题,因此从源码分析一下这个函数的调用过程。 我使用的内核版本为5.15.0-94 这是函数ib_post_send的头文件定义,这个函数的意义是向发送队列提交发送请求,他会调用qp对应设备的post_…

Pyglet综合应用|推箱子游戏地图编辑器之图片跟随鼠标

目录 推箱子游戏 升级一:鼠标操作 升级二:增加网格 升级三:模拟按钮 综合应用:地图编辑器 关卡地图洗数 推箱子游戏 本篇为之前写的博客《Pyglet综合应用|推箱子游戏之关卡图片载入内存》的续篇,内容…

项目:shell实现多级菜单脚本编写

目录 1. 提示 2. 演示效果 2.1. 一级菜单 2.2. 二级菜单 2.3. 执行操作 3. 参考代码 1. 提示 本脚本主要实现多级菜单效果,并没有安装LAMP、LNMP环境,如果要用在实际生成环境中部署LNMP、LAMP环境,只需要简单修改一下就可以了。 2. 演…

ASCII编码的影响与作用:数字化时代的不可或缺之物

title: ASCII编码的影响与作用:数字化时代的不可或缺之物 date: 2024/2/25 16:03:37 updated: 2024/2/25 16:03:37 tags: ASCII起源标准化字符文本处理基础编程语言基石数据库存储标准跨平台兼容多语言编码基础 一、ASCII编码的起源 ASCII(American St…

matlab 三质量-弹簧系统受激振力

1、内容简介 略 44-可以交流、咨询、答疑 建立系统运动方程,研究固有频率和对应主振型 2、内容说明 略 三质量-弹簧系统受激振力,并不考虑各自的阻尼。建立系统运动方程。 解:由于阻尼对固有频率没有影响,故本文不…