QT+串口调试助手+基本版

一、创建串口调试助手UI界面

1、首先生成串口连接必要参数界面,删除关闭串口控件

2、给参数下拉框添加常见的选项,删除关闭串口控件

3、将串口调试助手参数界面布局整齐,删除关闭串口控件

4、更改控件名字,方便后续编程,删除关闭串口控件

5、添加剩余的控件组成串口调试助手的UI界面,删除关闭串口控件

二、 编辑串口调试助手代码

1、在pro文件中加入serialport

2、编写代码

widget.c

#include "widget.h"
#include "ui_widget.h"
#include <QMessageBox>
#include <QtSerialPort>
#include <QSerialPortInfo>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);setWindowTitle("Serial_Port");serial = new QSerialPort(this);//通过QSerialPortInfo查找可用串口,但存在一个局限,如果在软件打开后在插入串口,此时串口不可以识别到ui->serailCB->clear();foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts()){ui->serailCB->addItem(info.portName());}//信号与槽函数,当串口接收到数据后转到对应的接收函数connect(serial,SIGNAL(readyRead()),this,SLOT(serialPort_readyRead()));
}Widget::~Widget()
{delete ui;
}void Widget::on_openSerialBut_clicked()
{if(ui->openSerialBut->text()==QString("打开串口")){//设置串口名serial->setPortName(ui->serailCB->currentText());//设置波特率serial->setBaudRate(ui->baundDrateCB->currentText().toInt());//设置数据位switch(ui->dataBitCB->currentText().toInt()){case 8:serial->setDataBits(QSerialPort::Data8);break;}//设置停止位switch (ui->stopBitCB->currentIndex()){case 0:serial->setStopBits(QSerialPort::OneStop);break;case 1:serial->setStopBits(QSerialPort::OneAndHalfStop);break;case 2:serial->setStopBits(QSerialPort::TwoStop);break;}//设置奇偶校验位switch(ui->checkBitCB->currentIndex()){case 0:serial->setParity(QSerialPort::NoParity);break;//无校验case 1:serial->setParity(QSerialPort::OddParity);break;//奇校验case 2:serial->setParity(QSerialPort::EvenParity);break;//偶校验}//设置流控制serial->setFlowControl(QSerialPort::NoFlowControl);//打开串口if(!serial->open(QIODevice::ReadWrite)){QMessageBox::about(NULL,"提示","无法打开串口");return;}ui->openSerialBut->setText(tr("关闭串口"));}else{serial->close();//关闭串口ui->openSerialBut->setText(tr("打开串口"));}
}void Widget::serialPort_readyRead()                             //串口接收
{QByteArray lasttext;lasttext=ui->receivePlainTextEdit->toPlainText().toUtf8();QByteArray receiveText = serial->readAll();lasttext=lasttext.append(receiveText);ui->receivePlainTextEdit->setPlainText(lasttext);
}void Widget::on_sendBut_clicked()
{QByteArray Sendtext=ui->sendTextEdit->toPlainText().toUtf8();serial->write(Sendtext);
}void Widget::on_clearSendBut_clicked()
{ui->sendTextEdit->clear();
}

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QtSerialPort>QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void on_openSerialBut_clicked();        //打开串口槽函数void serialPort_readyRead();            //串口接收槽函数void on_sendBut_clicked();void on_clearSendBut_clicked();private:Ui::Widget *ui;             //串口端口QSerialPort *serial;                    //串口端口
};
#endif // WIDGET_H

三、实操

本工程只是实现了最基本的串口接收和发送功能,界面和代码都需要很大的改进

四、注意事项

如果出现串口头文件找不到的情况,那么需要更新一下组件

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

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

相关文章

OpenHarmony实战开发-动画曲线、如何实现动画衔接

UI界面除了运行动画之外&#xff0c;还承载着与用户进行实时交互的功能。当用户行为根据意图变化发生改变时&#xff0c;UI界面应做到即时响应。例如用户在应用启动过程中&#xff0c;上滑退出&#xff0c;那么启动动画应该立即过渡到退出动画&#xff0c;而不应该等启动动画完…

SSD能否全面取代HDD?

硬盘制造商希捷希望我们理解关于固态硬盘&#xff08;SSD&#xff09;取代传统硬盘&#xff08;HDD&#xff09;这一神话背后的三个真相&#xff1a;SSD价格不会与旋转磁盘价格相匹配&#xff0c;SSD制造产能无法与HDD产能相匹敌&#xff0c;以及SSD并不适合近线硬盘工作负载。…

特斯拉FSD落地分析

再续前缘 媒体的神经从马斯克的湾流私人飞机起飞那一刻开始,就开始被牵动着。28/4 号的突然访华,在大多数人看来其实已经早已是计划之中,从摆在台面上的消息来看,主要目的是为了在大陆推广FSD的落地,也为8月份FSD 的正式版本做预热,和中国上海的第一次联姻造就了特斯拉m…

孪生网络、匹配网络和原型网络:详解与区分

孪生网络、匹配网络和原型网络 孪生网络、匹配网络和原型网络&#xff1a;详解与区分孪生网络&#xff08;Siamese Networks&#xff09;核心概念工作原理 匹配网络&#xff08;Matching Networks&#xff09;核心概念工作原理 原型网络&#xff08;Prototypical Networks&…

.NET高级面试指南专题二十九【备忘录模式介绍,用于需要撤销操作或在发生错误时恢复对象状态的情况】

备忘录模式是一种行为型设计模式&#xff0c;用于捕获对象的内部状态并在不破坏其封装性的情况下将其保存&#xff0c;以便稍后可以将对象恢复到先前的状态。这种模式通常用于需要撤销操作或在发生错误时恢复对象状态的情况。 原理 备忘录模式包含以下几个关键角色&#xff1a;…

基于yolov2深度学习网络模型的鱼眼镜头中人员检测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 load yolov2.mat% 加载训练好的目标检测器 img_size [448,448]; imgPath test/; % 图像…

2023第十四届蓝桥杯国赛C/C++ 大学 A 组 圆上的连线

思路&#xff1a;很显然总的方案数等于挑选偶数点的方案数乘以对应偶数点的连线方案数之和&#xff0c;挑选偶数点的方案数靠组合数得出&#xff0c;偶数点的连线方案数就是个卡特兰数。具体为什么是卡特兰数&#xff0c;可以任选一个点&#xff0c;枚举这个点所连边的位置&…

GZIPOutputStream JSON压缩

一、背景 小王瞥了一眼历史记录表&#xff0c;不禁惊呼&#xff1a;“这表怎么这么大&#xff1f;”同事们闻声纷纷围拢过来查看。仔细一瞧&#xff0c;发现这个表的大小竟然超过了3G。主管随即指示小王打开相应的表数据检查&#xff0c;发现其中存储了用户的权限信息&#xf…

【编译原理】程序运行的四个阶段,从源代码到可执行文件的完整过程解析

引言 程序的运行过程经历了多个阶段&#xff0c;从源代码到最终的可执行文件&#xff0c;涉及了预处理、编译、汇编和链接等步骤。本篇博客将深入解析程序运行的四个主要阶段&#xff0c;并结合一个简单的示例来说明每个阶段的作用。 四个阶段 阶段一&#xff1a;预处理&…

算法提高之二维费用的背包问题

算法提高之二维费用的背包问题 核心思想&#xff1a;二维01背包 每个物品只能用一次 所以是01背包模板用f[j][k] 表示第一维费用不超过V 第二维费用不超过M的方案 #include <iostream>#include <cstring>#include <algorithm>using namespace std;const i…

2011NOIP普及组真题 2. 统计单词数

线上OJ&#xff1a; 一本通&#xff1a;http://ybt.ssoier.cn:8088/problem_show.php?pid1954 核心思想 1、本题中比较单词不考虑大小写&#xff0c;所以在比较前先统一转换为小写或者大写。然后再比较即可。 2、由于 s2 会有前导空格&#xff0c;且可能单词之间的空格不止1个…

第五篇:通信脉络:探索计算机外设与总线体系的精髓

通信脉络&#xff1a;探索计算机外设与总线体系的精髓 1 引言 在这个技术日新月异的时代&#xff0c;理解计算机系统的基本构成要素 —— 总线和外设 —— 对于每个从事技术工作的人来说都是至关重要的。这些组件不仅是计算机通信的基石&#xff0c;也直接影响着系统的性能、效…

Enum,你学会了吗?

大家后&#xff0c;我是小七。 今天给大家分享下java.lang包下面Enum类的面试点&#xff0c;本文阅读需3分钟。 Java轮子 分享程序员日常、职场、互联网项目、开发经验&#xff0c;专注技术提升 12篇原创内容 公众号 在 Java 编程中&#xff0c;枚举类型&#xff08;Enum&…

水仙花数问题

问题描述&#xff1a; 求出0&#xff5e;100000之间的所有“水仙花数”并输出。 “水仙花数”是指一个n位数&#xff0c;其各位数字的n次方之和确好等于该数本身&#xff0c;如:153&#xff1d;1^3&#xff0b;5^3&#xff0b;3^3&#xff0c;则153是一个“水仙花数”。 #in…

一个完全免费、私有且本地运行的搜索聚合器-FreeAskInternet

什么是 FreeAskInternet FreeAskInternet 是一个完全免费、私有且本地运行的搜索聚合器&#xff0c;使用 LLM 生成答案&#xff0c;无需 GPU。用户可以提出一个问题&#xff0c;系统将使用 searxng 进行多引擎搜索&#xff0c;并将搜索结果组合到 ChatGPT3.5 LLM 中&#xff0…

迁移数据前,如何确保Oracle与Hive表中字段数量的一致性

在数据库迁移项目中&#xff0c;确保源数据库和目标数据库的表结构一致性是至关重要的。当从Oracle迁移到Hive时&#xff0c;虽然两者在架构和查询语言上存在差异&#xff0c;但字段数量的一致性检查仍然是一个基本的步骤。本文将介绍如何检查Oracle中的表的字段和Hive表中的字…

如何优雅的分析你的微信朋友圈和聊天记录

微信朋友圈、个人聊天记录、微信群聊天记录&#xff1a; 蓝奏云&#xff1a;链接:​www.lanzoub.com/b00rn0g47e 密码:9hww

Python中的enumerate函数详解

在Python编程中&#xff0c;我们经常需要在循环遍历一个序列时同时获取元素的索引和值。为了实现这一需求&#xff0c;Python提供了一个内置的enumerate函数&#xff0c;它能够方便地为我们提供序列中每个元素的索引和值。 enumerate函数 enumerate函数接受两个参数&#xff…

Pytorch基础:torch.load_state_dict()方法在加载时不会检查类型

相关阅读 Pytorch基础https://blog.csdn.net/weixin_45791458/category_12457644.html?spm1001.2014.3001.5482 笔者在使用torch.nn.module的load_state_dict中出现了一个问题&#xff0c;一个被注册的张量在加载后居然没有变化&#xff0c;一开始以为是加载出现了问题&#…

漏洞挖掘之某厂商OAuth2.0认证缺陷

0x00 前言 文章中的项目地址统一修改为: a.test.com 保护厂商也保护自己 0x01 OAuth2.0 经常出现的地方 1&#xff1a;网站登录处 2&#xff1a;社交帐号绑定处 0x02 某厂商绑定微博请求包 0x02.1 请求包1&#xff1a; Request: GET https://www.a.test.com/users/auth/weibo?…