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

devtools/2024/9/22 13:04:35/

一、创建串口调试助手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.ppmy.cn/devtools/32628.html

相关文章

分拣机器人也卷的飞起来了

导语 大家好&#xff0c;我是智能仓储物流技术研习社的社长&#xff0c;老K。专注分享智能仓储物流技术、智能制造等内容。 新书《智能物流系统构成与技术实践》 智能制造-话题精读 1、西门子、ABB、汇川&#xff1a;2024中国工业数字化自动化50强 2、完整拆解&#xff1a;智能…

CUDA常量内存

常量内存是一种专用内存&#xff0c;用于只读数据和统一访问线程束中线程的数据。常量内存对于内核代码是只读的&#xff0c;但对主机而言是可读写的。 常量内存位于设备的DRAM上&#xff0c;并且有一个专用的片上缓存。从每个SM的常量缓存中读取的延迟&#xff0c;比直接从常…

CCF PTA 2023年5月C++天空之城的树

【问题描述】 拉姆达人在修建天空之城时&#xff0c;主要是依赖巨大的飞行石去维持悬空状态&#xff0c;依赖强壮的大树去作为建筑 物的框架&#xff0c;假设大树是一棵有 n(n≤10 3)个结点的二叉树。给出每个结点的两个子结点编号&#xff08;均不超 过 n&#xff09;&#x…

分布式与一致性协议之一致哈希算法(三)

一致哈希算法 如何使用一致哈希算法实现哈希寻址 我们一起来看一个例子&#xff0c;对于1000万个key的3节点KV存储&#xff0c;如果我们使用一致哈希算法增加1个节点&#xff0c;即3节点集群变为4节点集群&#xff0c;则只需要迁移24.3%的数据,如代码所示 package mainimpor…

Golang | Leetcode Golang题解之第68题文本左右对齐

题目&#xff1a; 题解&#xff1a; // blank 返回长度为 n 的由空格组成的字符串 func blank(n int) string {return strings.Repeat(" ", n) }func fullJustify(words []string, maxWidth int) (ans []string) {right, n : 0, len(words)for {left : right // 当前…

OceanBase 分布式数据库【信创/国产化】- OceanBase 配置项和系统变量概述

本心、输入输出、结果 文章目录 OceanBase 分布式数据库【信创/国产化】- OceanBase 配置项和系统变量概述前言OceanBase 数据更新架构OceanBase 配置项和系统变量概述配置项配置项分类配置项查询系统变量系统变量分类系统变量查询配置项与系统变量的区分OceanBase 分布式数据库…

Photoshop中图像编辑的基本操作

Photoshop中图像编辑的基本操作 Photoshop中调整图像窗口大小Photoshop中辅助工具的使用网格的使用标尺的使用注释工具的使用 Photoshop中置入嵌入式对象Photoshop中图像与画布的调整画布大小的修改画布的旋转图像尺寸的修改 Photoshop中撤销与还原采用快捷键进行撤销与还原采用…

基于Springboot的校园食堂订餐系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的校园食堂订餐系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构…