上位机图像处理和嵌入式模块部署(f103 mcu和Qt上位机联动)

news2024/11/12 18:35:14

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        之前我们写过一篇文章​​​​​​​,上面说的是如何利用串口对mcu进行控制,即如果利用串口实现mcu led灯的点亮和熄灭。输入1的时候,点亮;输入2的时候,熄灭。当时,我们是通过mobaxterm实现了控制。实际软件开发的时候,对于上位机,我们一般都是用qt界面来实现的,一方面显得比较正规一点,另外一方面也显得容易操作一点。

        串口232也是比较实际项目中经常使用的接口。我们看下如果是用qt进行开发,应该如何来做。

1、整个数据处理的流程

        其中qt是指qt上位机,board指的是开发板,st-link v2是烧录器,keil是stm32固件编译软件。qt和board之间的通信是usb转串口,board和st-link v2之间的通信是swd,keil和st-link v2之间的通信是usb。过程有点绕,稍微整理下可以搞清楚的。

2、创建qt工程

        关于keil开发的部分,前面都已经完成了,下面就来做qt的部分。首先还是按照qt的wizard,创建一个widget工程。

3、设计界面

        界面部分主要就是qt的ui文件,简单的做法就是引入两个按钮就可以了。

4、头文件设计

        头文件设计的部分,主要就是引入回调函数、引入QSerialPort这个类。这两个部分做好了,也就可以开始处理串口的数据了。另外还有一点需要注意的就是,需要引入QSerialPort头文件。

#pragma once

#include <QtWidgets/QMainWindow>
#include <QtSerialPort/QSerialPort>
#include "ui_QtWidgetsApplication.h"

class QtWidgetsApplication : public QMainWindow
{
    Q_OBJECT

public:
    QtWidgetsApplication(QWidget *parent = nullptr);
    ~QtWidgetsApplication();

private:
    Ui::QtWidgetsApplicationClass ui;
	QSerialPort serial;

private slots:
	void on_clicked();
	void off_clicked();

};

5、cpp文件实现

        定义好了头文件,cpp文件基本上按部就班去做就好了。构造函数实现了按钮和回调函数的绑定,同时初始化好了结构体serial,配置了波特率等基本参数。析构函数则主要是关闭串口。两个回调函数,则分别是发送两个字符串内容。其中,串口的编号,大家根据自己的实际情况修改下即可。还有就是lib库的添加,不然无法链接通过。

#include "QtWidgetsApplication.h"

#pragma comment(lib, "C:/Qt/Qt5.12.5/5.12.5/msvc2017/lib/Qt5SerialPortd.lib")

QtWidgetsApplication::QtWidgetsApplication(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);

	connect(ui.pushButton1, &QPushButton::clicked, this, &QtWidgetsApplication::on_clicked);
	connect(ui.pushButton2, &QPushButton::clicked, this, &QtWidgetsApplication::off_clicked);

	serial.setPortName("COM12"); 
	serial.setBaudRate(QSerialPort::Baud115200);
	serial.setDataBits(QSerialPort::Data8);
	serial.setParity(QSerialPort::NoParity);
	serial.setStopBits(QSerialPort::OneStop);
	serial.setFlowControl(QSerialPort::NoFlowControl);
	serial.open(QIODevice::ReadWrite);
}

QtWidgetsApplication::~QtWidgetsApplication()
{
	serial.close();
}

void QtWidgetsApplication::on_clicked()
{
	QByteArray data = "1";
	serial.write(data);
	serial.waitForBytesWritten(1000);
}

void QtWidgetsApplication::off_clicked()
{
	QByteArray data = "2";
	serial.write(data);
	serial.waitForBytesWritten(1000);
}

6、测试和验证

        我们先按照上面的流程图把数据线连接好。连接好之后,再确认串口号。最后插上usb hub,毕竟usb接口比较多,全部接到hub上更容易一点。最后,打开qt应用,单击ON,观察led灯是否亮起;单击OFF,单击led灯是否熄灭。如果整个流程没有问题的,那么这个最简单的上位机-mcu联调,就算是测试成功了。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小程序迁移主体变更流程全攻略

小程序迁移变更主体有什么作用&#xff1f;有些小程序开发者&#xff0c;因为业务调整&#xff0c;或者公司更换&#xff0c;需要更换小程序主体&#xff01;但是很多开发者对于小程序更换主体的操作流程并不熟悉&#xff0c;于是我们专门准备了这篇&#xff0c;关于小程序更换…

性能测试学习(一)

一、概念 1.性能测试&#xff1a;使用自动化工具&#xff0c;模拟不同场景&#xff0c;对软件各项性能指标进行测试和评估的过程 2.包括&#xff1a;a.后台处理程序的性能&#xff1b;b.应用服务器、数据库、架构设计是否存在瓶颈&#xff1b;c.服务器资源消耗(CPU、内存、磁…

ISCC——AI

得到一个T4.pyc 回编译一下 得到下面代码 import base64def encrypt_and_compare(user_input, offset_str, target_base64):if len(user_input) ! 24:return Please enter a string with a length of 24encrypted Nonefor i, char in enumerate(user_input):offset int(off…

二元关系表示

一、二元关系的定义和表示 什么是二元关系&#xff1f;对集合A和B&#xff0c;A\timesB的任意子集R为A到B的一个二元关系。当AB时&#xff0c;A\timesA的任一子集R称为A上的一个二元关系。在不引起误解的情况下&#xff0c;二元关系可简称关系。 若|A|m,|B|n&#xff0c;则A到…

浅谈网络安全态势感知

前言 网络空间环境日趋复杂&#xff0c;随着网络攻击种类和频次的增加&#xff0c;自建强有力的网络安全防御系统成为一个国家发展战略的一部分&#xff0c;而网络态势感知是实现网络安全主动防御的重要基础和前提。 什么是网络安全态势感知&#xff1f; 态势感知一词来源于对…

MySQL数据库中的多表查询/连接查询操作

类型&#xff1a;内连接 &#xff0c;外连接{左外连接&#xff0c;右外连接} 之所以要使用连接查询的意义就是为了&#xff0c;借助数据库可以避免大量的数据重复。 进行连接查询的前提是要求多张表之间存在相关联的字段。 这里指的相关联的字段就是表与表之间存在着关系&am…

0元入驻抖音小店,真的是好事吗?

大家好&#xff0c;我是喷火龙。 抖音小店去年推出0元入驻抖音小店个人店的政策&#xff0c;简而言之就是只要一张身份证就可以开店&#xff0c;不需要营业执照&#xff0c;也不需要交保证金。 很多人一听很心动&#xff0c;因为没有任何成本就可以开店&#xff0c;于是纷纷跑…

二叉树的遍历(前序遍历,中序遍历,后序,层序遍历)和一些简单操作(由浅入深绝对能看懂)

欢迎大佬们的关顾能给个赞就更好啦QWQ 目录 二叉树的逻辑结构与物理结构 一.二叉树的遍历 &#xff08;1&#xff09;二叉树的前序遍历 &#xff08;2&#xff09;二叉树的中序遍历 &#xff08;3&#xff09;二叉树的后序遍历 &#xff08;4&#xff09;二叉树的层序遍历…

在PyCharm中import包标红

在程序头引入包&#xff0c;有时会出现标红 像上面的引入&#xff0c;在没有解决之前 sklearn.metrics 等都是标红的。因为缺少一些包&#xff0c;所以引入不了包中的一些函数 可以在左侧找到终端用命令安装包&#xff0c;用镜像可以加快下载速度 pip install 包名 -i https…

借助Kong记录接口的请求和响应内容

和APISIX类似&#xff0c;Kong也是一个Api GateWay。 运行在调用Api之前&#xff0c;以插件的扩展方式为Api提供管理, 如 鉴权、限流、监控、健康检查等. Kong是基于Lua语言、Nginx以及OpenResty开发的&#xff0c;拥有动态路由、负载均衡、高可用、高性能、熔断&#xff08;基…

基于STM32+NBIOT(BC26)设计的物联网观赏鱼缸

文章目录 一、前言1.1 项目介绍【1】开发背景【2】项目实现的功能【3】项目模块组成 1.2 设计思路 二、(硬件控制端)硬件选型2.1 STM32开发板2.2 PCB板2.3 USB下载线2.4 NBIOT模块2.5 杜邦线&#xff08;2排&#xff09;2.6 稳压模块2.7 电源插头2.8 水温检测传感器2.9 水质检测…

20232801 2023-2024-2 《网络攻防实践》实践十一报告

#20232801 2023-2024-2 《网络攻防实践》实践十一报告 1.实践内容 &#xff08;1&#xff09;web浏览器渗透攻击 使用攻击机和Windows靶机进行浏览器渗透攻击实验&#xff0c;体验网页木马构造及实施浏览器攻击的实际过程。 &#xff08;2&#xff09;取证分析实践—网页木马…

WIFI国家码设置的影响

记录下工作中关于国家码设置对WIFI的影响&#xff0c;以SKYLAB的SKW99和SDZ202模组为例进行说明。对应到日常&#xff0c;就是我们经常提及手机是“美版”“港版”等&#xff0c;它们的wifi国家码是不同的&#xff0c;各版本在wifi使用中遇到的各种情况与下面所述是吻合的。 现…

【二叉树】力扣OJ题

文章目录 前言1. 翻转二叉树1.1 题目1.2 解题思路1.3 代码实现1.4 时空复杂度 2. 对称二叉树2.1 题目2.2 解题思路2.3 代码实现2.4 时空复杂度 3. 平衡二叉树3.1 题目3.2 解题思路3.3 代码实现3.4 时空复杂度 结语 前言 本篇博客主要介绍二叉树的经典 OJ 题&#xff0c;题目主…

Scala 入门介绍和环境搭建

一、简介 Scala 是一门以 Java 虚拟机&#xff08;JVM&#xff09;为运行环境并将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言 (静态语言需要提前编译&#xff0c;如&#xff1a;Java、c、c 等&#xff0c;动态语言如&#xff1a;js)Scala 是一门多范式的编程…

Spring中@Component注解

Component注解 在Spring框架中&#xff0c;Component是一个通用的注解&#xff0c;用于标识一个类作为Spring容器管理的组件。当Spring扫描到被Component注解的类时&#xff0c;会自动创建一个该类的实例并将其纳入Spring容器中管理。 使用方式 1、基本用法&#xff1a; Co…

MySQL:表的约束

文章目录 0.小知识&#xff0c;数据转化1.空属性(非空约束)2.默认值&#xff08;default&#xff09;3.comment&#xff08;列描述&#xff09;4.zerofill(显示约束)5.primary key(主键约束)6.auto_increment(自增长)7.unique(唯一键)8.foreign key (外键)9.综合表结构的设计 表…

【运维】Linux 端口管理实用指南,扫描端口占用

在 Linux 系统中&#xff0c;你可以使用以下几种方法来查看当前被占用的端口&#xff0c;并检查 7860 到 7870 之间的端口&#xff1a; 推荐命令&#xff1a; sudo lsof -i :7860-7870方法一&#xff1a;使用 netstat 命令 sudo netstat -tuln | grep :78[6-7][0-9]这个命令…

Java+Spring Boot +MySQL + MyBatis Plus一款数字化管理平台源码:云MES系统

JavaSpring Boot MySQL MyBatis Plus一款数字化管理平台源码&#xff1a;云MES系统 MES是为企业提供制造全过程的信息化产品&#xff0c;支持企业智能制造。MES可实现与企业的ERP、PDM等其他信息化系统进行无缝连接&#xff0c;也可与现场生产设备进行连接、数据采集&#xff…

牛客网刷题 | BC97 回文对称数

目前主要分为三个专栏&#xff0c;后续还会添加&#xff1a; 专栏如下&#xff1a; C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读&#xff01; 初来乍到&#xff0c;如有错误请指出&#xff0c;感谢&#xff01; 描述 今天牛牛学到了回文…