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

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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_OBJECTpublic: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.mzph.cn/pingmian/15889.shtml

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

相关文章

文件有内容,ls -l察看大小为0,使用cat

同事让吾在文件加点内容&#xff0c;以察看崩溃。吾将内容使用echo到文件&#xff0c;然后使用ls -l察看&#xff0c;竟然为0。这不科学啊。 同事建议改用cat&#xff0c;就能看到内容。 这应该是bug

物联网通信模组功能

物联网通信模组的主要功能和技术特性包括&#xff1a; 数据传输&#xff1a;物联网通信模组能够实现高效可靠的数据传输&#xff0c;这包括上传传感器数据、接收远程指令等。它支持各种数据传输协议&#xff0c;如MQTT、CoAP、HTTP等&#xff0c;这些协议使得模组能够在不同的物…

Yolov8训练自己的数据集(脱离ultralytics库)

最近在整理关于yolov8的相关内容&#xff0c;有个很大的问题&#xff0c;抛开yolov8性能不谈&#xff0c;yolov8代码的使用灵活性不如yolov5&#xff0c;尤其是对于一些新手或者对yolo框架不是很熟悉的人(这也是因人而异&#xff0c;有些人可能会喜欢v8代码的使用方式)。比如在…

(4)医疗图像处理:MRI磁共振成像-成像技术--(杨正汉)

目录 一、特殊成像技术 1.水成像技术 2.化学位移成像技术 二、成像辅助技术 1.脂肪抑制技术 2.磁化转移技术 3.流动补偿技术 4.空间饱和空间标记技术 5.生理门控及导航回波技术 所有的这些技术最终就是为了使得K空间通过傅里叶变化之后得到的图片变的更为清晰。 一、…

redis6.2.7安装

1、下载上传到服务器 从官下载redis&#xff0c;地址 https://redis.io/download/#redis-downloads 然后上传到服务器目录 app/apps目录下 2、安装gcc编译器 使用gcc --version命令测试是否已经安装了gcc编译环境&#xff0c;如果没有安装执行以下命令安装 yum install -y …

基于springboot+vue+Mysql的休闲娱乐代理售票系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

jupyter移除添加R内核

jupyter移除 R 内核 Jupyter Notebook 是一个开源Web应用程序&#xff0c;允许创建和共享包含实时代码、方程、可视化和文本的文档。这些文档被称作 "笔记本 "&#xff0c;可以用 Python 编写&#xff0c;并且可以直接运行代码。 如果你想在 Jupyter Notebook 中移…

【技术实操】银河高级服务器操作系统实例分享,TCP长连接与短连接详细说明

1.服务器环境以及配置 物理机/虚拟机/云/容器 物理机 处理器&#xff1a; HUAWEI Kunpeng 920 具体操作系统版本 Kylin-Server-10-SP1-Release-Build20-20210518- aarch64 内核版本 kernel-4.19.90-23.8.v2101.ky10.aarch64 2.问题现象描述 对TCP长连接有疑问 1、如何…

兴业证券 | 哪些行业在提价?

一方面&#xff0c; 部分行业年初以来PPI价格整体上涨&#xff0c;4月进一步提价&#xff1b;另一方面&#xff0c;部分行业年初以来PPI价格整体下跌或者涨幅不高&#xff0c;但4月开始出现边际提升。 前言&#xff1a;年初以来&#xff0c;“提价”是一条重要的投资线索。我们…

Unity Assembly Definition Dotween 引用

原理&#xff1a; 具体Unity程序集原理用法&#xff0c;暂时留坑&#xff0c;不介绍了&#xff0c;相信有很多人也写过了 这里简单放个官方API链接 https://docs.unity3d.com/cn/current/Manual/ScriptCompilationAssemblyDefinitionFiles.html 现象 &#xff1a;Dotween引用…

使OpenCV可以读取中文路径图片的方法

一&#xff0e;问题复现 1.代码 #! /usr/bin/env python # -*- coding: utf-8 -*-# File: show_img.pyimport cv2# 读取图片 img cv2.imread("车牌素材/冀A.png")# 显示图片 cv2.imshow("img", img) cv2.waitKey(0)2.报错截图 3.报错内容 [ WARN:00.05…

力扣题解记录

三元组队列、取出元组中的元素&#xff1a;腐烂的橘子

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…

axios的配置项及含义

axios 是一个基于 Promise 的 HTTP 客户端&#xff0c;用于浏览器和 Node.js。它有许多配置项可以自定义 HTTP 请求。以下列举 axios 中的五个常用配置项及其含义&#xff0c;并提供示例代码&#xff1a; 1. method 含义&#xff1a;指定请求方法&#xff08;例如 GET, POST,…

基于 Windows 的记事本简单功能开发及部署发布--迭代2.1

基于上篇文章基于 Windows 的记事本简单功能开发及部署发布--迭代2.0-CSDN博客 更新完成以下功能点&#xff1a; 1.更新字体到json文件中&#xff0c;下次打开应用能够继续生效。

Unity开发——XLua热更新之Hotfix配置(包含xlua获取与导入)

一、Git上获取xlua 最新的xlua包&#xff0c;下载地址链接&#xff1a;https://github.com/Tencent/xLua 二、Unity添加xlua 解压xlua压缩包后&#xff0c;将xlua里的Assets里的文件直接复制进Unity的Assets文件夹下。 成功导入后&#xff0c;unity工具栏会出现xlua选项。 …

到底该用英文括号还是中文括号?

这篇博客写的还挺详细的&#xff0c;不错。

TCP/IP协议族

基于这张图片的一篇blog TCP/IP模型通常被分为四个层次&#xff1a;应用层、传输层、网络层和网络接口层。在这个模型中&#xff0c;不同的网络协议负责完成不同的任务&#xff0c;以确保数据可以在网络中高效、可靠地传输。以下是对这张图中每个协议的解释&#xff1a; 应用层…

Tensorflow2.0笔记 - AutoEncoder做FashionMnist数据集训练

本笔记记录自编码器做FashionMnist数据集训练&#xff0c;关于autoencoder的原理&#xff0c;请自行百度。 import os import time import tensorflow as tf from tensorflow import keras from tensorflow.keras import datasets, layers, optimizers, Sequential, metrics, …

Nature子刊 | 首个 双语脑机接口设备能解码西班牙语和英语单词

大脑植入装置首次帮助一名无法用语言表达的双语人士用两种语言进行交流。与大脑植入体相连的AI系统可以实时解码该人试图用西班牙语或英语表达的意思。 这项研究结果发表在5月20日的《Nature Biomedical Engineering》杂志上&#xff0c;让人们深入了解了我们的大脑是如何处理语…