最详细编写上位机教程

admin 2025-08-25 阅读:79 评论:0
我们需要先注册一个QT账号,后面安装Qt Creator的时候会用到。 2、下载QT_Creator并安装 我们在Windows上进行开发,安装Windows版本的Qt Creator。 下载得到qt-opensource-windo...

我们需要先注册一个QT账号,后面安装Qt Creator的时候会用到。

648e5076-a680-11eb-aece-12bb97331649.png

64af4c22-a680-11eb-aece-12bb97331649.png

2、下载QT_Creator并安装

我们在Windows上进行开发,安装Windows版本的Qt Creator。

64e00768-a680-11eb-aece-12bb97331649.png

下载得到qt-opensource-windows-x86-5.11.3.exe。然后双击安装,第二步需要输入账号密码,把我们上面注册好的账号密码填入即可。

接下来还需要选择安装组件,根据自己需要进行选择安装,我安装的组件如:

64e9ea62-a680-11eb-aece-12bb97331649.png

安装完成之后我们桌面上并没有Qt Creator的快捷方式,需要自己创建。找到Qt Creator的安装路径,然后把Qt Creator发送到桌面快捷方式即可。如:

64f4042a-a680-11eb-aece-12bb97331649.png

3、验证QT_Creator是否安装成功

我们创建一个简单的C++++工程来验证一下Qt Creator是否安装成功。

6503c7e8-a680-11eb-aece-12bb97331649.png

6510d00a-a680-11eb-aece-12bb97331649.png

65436506-a680-11eb-aece-12bb97331649.png

65582aea-a680-11eb-aece-12bb97331649.png

656a5e4a-a680-11eb-aece-12bb97331649.png

Qt Creator搭建好之后我们接下来开始编写我们的上位机。

三、编写一个简单的上位机

编写这个简单的上位机我们需要经过一下几个步骤:

上位机界面设计

上位机逻辑代码编写。

添加上位机图标。

上位机程序的打包。

上位机测试验证。

1、新建一个serial_led工程

65bcdd00-a680-11eb-aece-12bb97331649.png

65c94176-a680-11eb-aece-12bb97331649.png

65f768da-a680-11eb-aece-12bb97331649.png

660d9862-a680-11eb-aece-12bb97331649.png

6618b9e0-a680-11eb-aece-12bb97331649.png

这里需要注意的一点是:工程名及工程路径不要有中文字符。

另外,QT中有三种基类,这里我们选择QWidget类。QT的三个基类如:

QMainWindow类:提供一个带有菜单条,工具条和一个状态条的主应用程序窗口。

QWidget类:所有用户界面对象的基类,窗口部件是用户界面的一个基本单元,它从窗口系统接收鼠标,键盘和其他消息,并在屏幕上绘制自己。

QDialog类:对话框窗口的基类,对话框窗口主要用于短期任务和用户进行短期通讯的顶级窗口whatsapp网页版,QDialog可以是模态对话框或者是非模态对话框。

我们创建的工程如:

66241358-a680-11eb-aece-12bb97331649.png

其中,项目文件.pro文件是用来告诉qmake关于为这个应用程序创建makefile所需要的细节。例如,一个源文件和头文件的列表、任何应用程序特定配置。例如,一个必需链接的额外库或者一个额外的包含路径、都应该放到项目文件中。

2、上位机界面设计

Qt 一个可视化的界面设计工具:Qt 设计器(Qt Designer)。我们双击.ui文件就可以进入Qt Designer,在Qt Designer中我们可以通过拖动控件的方式来设计我们的界面,整个界面如:

664100c6-a680-11eb-aece-12bb97331649.png

我们从左侧的控件区把我们需要的控件拖动到界面编辑区中,我们这个简单地上位机用到的控件如:

66514332-a680-11eb-aece-12bb97331649.png

这里需要注意的是波特率这个下拉框需要双击设置一些备选配置,如:

66601394-a680-11eb-aece-12bb97331649.png

6672b1b6-a680-11eb-aece-12bb97331649.png

大家可以在左边地控件区找到这三种控件拖动到界面编辑器进行修改、布局即可。

其中,布局可通过如下组件调整:

667db610-a680-11eb-aece-12bb97331649.png

这几个组件的功能如:

668aaaf0-a680-11eb-aece-12bb97331649.png

具体地用法大家可以自己去实操一下。

另外,我们需要给我们使用的控件重新命名,在右侧的对象管理区进行操作。命名为有意义的名字,因为后面编写代码会用到。有意义的名字利于编写易懂的代码。比如我们修改的名字如:

6698acb8-a680-11eb-aece-12bb97331649.png

最后,控件的属性可根据需要在属性区进行调整。

3、上位机逻辑代码编写

(1)添加串口库、包含串口相关头文件

在serial_led.pro文件添加串口库:

QT += core gui serialport

66a80bc2-a680-11eb-aece-12bb97331649.png

在widget.h文件包含串口头文件:

#include 《QSerialPort》

#include 《QSerialPortInfo》

66d79112-a680-11eb-aece-12bb97331649.png

QSerialPort 类提供了操作串口的各种接口。

QSerialPortInfo 是一个辅助类,可以提供计算机中可用串口的各种信息。

(2)添加QSerialPort成员

在widget.h的Widget类中添加一个QSerialPort成员:

66e15ce2-a680-11eb-aece-12bb97331649.png

(3)创建串口对象、搜索所有可用串口

在Widget构造函数中创建一个串口对象并搜索所有可用串口:

Widget::Widget(QWidget *parent) :

QWidget(parent),

ui(new Ui::Widget)

QStringList serialNamePort;

ui-》setupUi(this);

this-》setWindowTitle(“serial_led”);

/* 创建一个串口对象 */

serialPort = new QSerialPort(this);

/* 搜索所有可用串口 */

foreach (const QSerialPortInfo &inf0, QSerialPortInfo::availablePorts()) {

serialNamePort《《inf0.portName();

ui-》serialBox-》addItems(serialNamePort);

66eb3960-a680-11eb-aece-12bb97331649.png

(4)编写“打开串口”槽函数

66f57a38-a680-11eb-aece-12bb97331649.png

67350068-a680-11eb-aece-12bb97331649.png

675e4b94-a680-11eb-aece-12bb97331649.png

信号和槽是用于对象之间的通信,它是Qt的核心机制。

当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal)。如果有对象对这个信号感兴趣,想要处理的信号和自己的一个函数(称为槽(slot))绑定来处理这个信号。也就是说,当信号发出时,被连接的槽函数会自动被回调。

这里,我们点击打开串口按钮会发出clicked信号,此时对应槽函数on_openButton_clicked会被调用。下面我们来实现这个槽函数:

void Widget::on_openButton_clicked()

/* 串口设置 */

serialPort-》setPortName(ui-》serialBox-》currentText());

serialPort-》setBaudRate(ui-》baudrateBox-》currentText().toInt());

serialPort-》setDataBits(QSerialPort::Data8);

serialPort-》setStopBits(QSerialPort::OneStop);

serialPort-》setParity(QSerialPort::NoParity);

/* 打开串口提示框 */

if (true == serialPort-》open(QIODevice::ReadWrite))

QMessageBox::information(this, “提示”, “串口打开成功”);

else

QMessageBox::critical(this, “提示”,“串口打开失败”);

这里我们写死数据位、停止位、求校验位;增加提示框。其中使用QMessageBox需要包含如下头文件:

#include 《QMessageBox》

(5)编写“关闭串口”、“点灯”、“灭灯”槽函数

按照上面打开串口槽函数的方法编写关闭串口、点灯、灭灯槽函数:

void Widget::on_closeButton_clicked()

serialPort-》close();

void Widget::on_onButton_clicked()

serialPort-》write(“ON

”);

qDebug(“ON

”);

void Widget::on_offButton_clicked()

serialPort-》write(“OFF

”);

qDebug(“OFF

”);

以上就是上位机逻辑代码的编写。

4、添加上位机图标

在网上找一个相关的.ico后缀的图标下载放到我们的工程路径下whatsapp网页版登录,如:

677763ea-a680-11eb-aece-12bb97331649.png

然后在我们的serial_led.pro文件中添加如下一行代码:

RC_ICONS = led.ico

67803a2e-a680-11eb-aece-12bb97331649.png

5、上位机程序打包

我们上面运行的上位机都是在Qt Creator中编译运行的,如果我们需要把编写好的可执行文件发送给别人使用的话还需要进行打包。

上面我们的工程是Debug版本的:

6788ff38-a680-11eb-aece-12bb97331649.png

打包之前,我们先把工程修改为Release版本:

67954bc6-a680-11eb-aece-12bb97331649.png

然后在我们工程目录下得到:

67ae9680-a680-11eb-aece-12bb97331649.png

此时,双击release文件夹下的serial_led.exe文件是会报错的,报错原因是找不到一些相关的动态库:

67c2ae18-a680-11eb-aece-12bb97331649.png

我们新建一个文件夹保存我们的打包文件,如:

67d1595e-a680-11eb-aece-12bb97331649.png

把build-serial_led-Desktop_Qt_5_11_1_MinGW_32bit-Release elease路径下的serial_led.exe文件拷贝至serial_led_packet文件夹中:

67e8f7e4-a680-11eb-aece-12bb97331649.png

打开QT for Disktop工具:

67f820c0-a680-11eb-aece-12bb97331649.png

684f52a0-a680-11eb-aece-12bb97331649.png

执行如下命令进入打包目录:

cd /d D:Qtqt_prjserial_ledserial_led_packet

然后执行如下命令进行打包:

windeployqt serial_led.exe

6863929c-a680-11eb-aece-12bb97331649.png

此时,serial_led_packet文件夹中的serial_led.exe文件就可以双击运行了:

689b4a20-a680-11eb-aece-12bb97331649.png

此时就完成了程序的打包。此时我们把这一整个文件夹压缩发送给别人使用了。另外,我们也可以借助一些工具把这些文件打包成一个整体的.exe文件,这里不再介绍。

6、上位机测试验证

上位机我们写好了,接下来编写下位机代码来测试一下。

我们点击上位机的点灯、灭灯按钮,则会通过串口分别发送ON 、OFF ,我们编写下位机代码进行接收,然后操控LED灯即可。

下位机是小熊派IOT开发板,测试代码如:

int main(void)

/* USER CODE BEGIN 1 */

/* USER CODE END 1 */

/* MCU Configuration----------------------------------------------------------*/

/* Reset of all peripherals, Initializes the Flash interface and the Systick. */

HAL_Init();

/* USER CODE BEGIN Init */

/* USER CODE END Init */

/* Configure the system clock */

SystemClock_Config();

/* USER CODE BEGIN SysInit */

/* USER CODE END SysInit */

/* Initialize all configured peripherals */

MX_GPIO_Init();

MX_DMA_Init();

MX_USART1_UART_Init();

/* USER CODE BEGIN 2 */

printf(“Welcome to UART1 test!

”);

/* USER CODE END 2 */

/* Infinite loop */

/* USER CODE BEGIN WHILE */

while (1)

/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */

if(HAL_UART_Receive(&huart1, &Rdata, 1, 0)==HAL_OK)

if (usart_rx_buf_index 》 USART1_RX_BUF_LEN - 1)

usart_rx_buf_index = 0;

if (Rdata == 0x0A)

if (strcmp((char*)USART1_RX_BUF, “ON”) == 0)

HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);

else if (strcmp((char*)USART1_RX_BUF, “OFF”) == 0)

HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pinwhatsapp网页版, GPIO_PIN_RESET);

usart_rx_buf_index = 0;

memset(USART1_RX_BUF, 0, USART1_RX_BUF_LEN);

else

USART1_RX_BUF[usart_rx_buf_index++] = Rdata;

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

分享:

扫一扫在手机阅读、分享本文

3502文章数 0评论数
热门文章
  • 详细指南:WhatsApp国内使用方法全攻略-下载安装、注册登录及功能使用攻略

    详细指南:WhatsApp国内使用方法全攻略-下载安装、注册登录及功能使用攻略
    一、下载与安装WhatsApp WhatsApp是一款全球使用范围极广的即时通讯软件,不仅可以实现文本聊天,还能进行语音、视频通话WhatsApp中文版,发送文件等功能。由于众所周知的原因,国内用户想要下载和安装WhatsApp可能会遇到一些困难。不过,只要按照以下步骤操作,就能顺利完成WhatsApp的下载和安装。 首先,我们需要解决的是下载问题。由于WhatsApp在国内的应用商店无法直接下载,所以我们需要寻找其他的下载途径。Android用户可以选择到各大安卓市场搜索下...
  • 苹果IOS5.1.1机完美越狱

    苹果IOS5.1.1机完美越狱
    越狱工具下载:(需手动复制: http://bbs./read-htm-tid-4804612.html ) 详细的越狱教程: Absinthe 2.0.4的越狱方法与Absinthe 1.0的越狱方法完全一样,非常简单的“傻瓜一键式”。不过这里绿毒有说明,最好重新刷固件。支持越狱设备IOS5.1.1的固件下载地址请点击本站的IOS固件下载,看下图: 下载完固件之后,把设备连接iTunes,开始刷固件。你也可以选择不刷,但是在越狱的过程之中,新的系统在越狱时会比较的顺利,...
  • 电脑微信的聊天照片文件在哪里微信图片保存电脑哪个文件夹

    电脑微信的聊天照片文件在哪里微信图片保存电脑哪个文件夹
    1. 怎么找到微信聊天图片在哪个文件夹里 图片保存路径:/storage/emulated/tencent/MicroMsg/WeiXin/文件夹,这个是完整路径。而在文件夹中只需要找到/tencent/MicroMsg/WeiXinWhatsApp中文版,就可以了,前面两个文件夹是系统根目录。以下是保存及查找图片的方法步骤介绍。 第一步、找到桌面的微信APP,直接点击打开这个微信的APP。 2. 电脑微信图片保存在哪个文件夹 个人微信文件夹。 电脑版微信聊天的图片,都保存到...
  • Windows 11版WhatsApp将从UWP/Native切换回WebView2打包模式

    Windows 11版WhatsApp将从UWP/Native切换回WebView2打包模式
    Meta(最近更名为 Meta AI)悄然宣布,WhatsApp 将在 Windows 11 上放弃 UWP(WinUI)WhatsApp中文版,退回采用基于 Chromium 的容器。这意味着 WhatsApp 又回到了几年前的样子。由于 web.whatsapp.com 一直领先于 Windows 应用开发,它确实拥有一些新功能,但速度更慢,占用更多内存。 如果独立开发者因为无力维护所有平台的代码库而选择 Web 应用程序,那是一回事,但当像 Meta 这样价值万亿美元...
  • 小米下載WhatsApp的完整指南:安装与使用注意事项

    小米下載WhatsApp的完整指南:安装与使用注意事项
    综上所述,确保您的小米手机具备以上条件,将有助于您顺利下载和安装WhatsApp,享受便捷的通讯服务。在满足这些条件后,您就可以按照后续步骤进行WhatsApp的下载和安装。 2. 下载和安装WhatsApp的具体步骤 在小米手机上下载和安装WhatsApp的具体步骤相对简单,但需注意一些特殊情况。首先,确保你的手机系统已更新到最新版本,以保证最佳的兼容性。由于安卓手机商店内无法直接找到WhatsApp,你可以通过APKPure等第三方应用商店进行下载。打开APKPure应用...