#QT(串口助手-实现)

1.IDE:QTCreator


2.实验


3.记录

(1)在widget.h中加入必要文件,并且定义一个类指针

 

 (2)如果有类的成员不知道怎么写,可以通过以下途径搜索

(2)设置串口数据

void Widget::on_open_pb_clicked()       //当打开串口按下时
{QSerialPort::BaudRate buadrate;    // ::为作用域,定义波特率QSerialPort::DataBits databits;    //定义数据位QSerialPort::StopBits stopbits;   //定义停止位QSerialPort::Parity   checkbits;   //定义校验位
/******************波特率赋值******************************/if(ui->baudrate_cb->currentText()=="115200")buadrate=QSerialPort::Baud115200;else if(ui->baudrate_cb->currentText()=="9600")buadrate=QSerialPort::Baud9600;else if(ui->baudrate_cb->currentText()=="4800")buadrate=QSerialPort::Baud4800;
/******************数据位赋值*******************************/if(ui->data_cb->currentText()=="8")databits=QSerialPort::Data8;else if(ui->data_cb->currentText()=="7")databits=QSerialPort::Data7;else if(ui->data_cb->currentText()=="6")databits=QSerialPort::Data6;else if(ui->data_cb->currentText()=="5")databits=QSerialPort::Data5;
/*******************停止位赋值******************************/if(ui->stop_cb->currentText()=="1")stopbits=QSerialPort::OneStop;else if(ui->stop_cb->currentText()=="1.5")stopbits=QSerialPort::OneAndHalfStop;else if(ui->stop_cb->currentText()=="2")stopbits=QSerialPort::TwoStop;
/******************校验位赋值******************************/checkbits=QSerialPort::NoParity;         //因为强制选择无校验位
/******************设置串口*******************************/serialport->setPortName(ui->com_cb->currentText());    //设置串口名serialport->setBaudRate(buadrate);      //设置波特率serialport->setDataBits(databits);      //设置数据位serialport->setStopBits(stopbits);      //设置停止位serialport->setParity(checkbits);       //设置校验位if(serialport->open(QIODevice::ReadWrite)==true)    //串口打开成功QMessageBox::information(this,"提示","串口打开成功");elseQMessageBox::critical(this,"警告","串口打开失败");
}

(3)将串口打开与串口关闭通过槽函数关联按钮(QMessageBox用于提示)

void Widget::on_close_pb_clicked()      //当关闭窗口按钮按下时
{serialport->close();QMessageBox::information(this,"提示","串口已经关闭");
}

 (4)关联准备读函数(函数部分widget前应该有void)

/*************************准备读函数*************************/
void Widget::SerialPort_ReadyRead_Slot()
{QString receive_buff;                   //定义一个数组,存放接收到的内容receive_buff=QString(serialport->readAll());ui->receive_line->appendPlainText(receive_buff);   //将接收到的内容在接收区显示出来
}

(5)发送函数关联

void Widget::on_send_pb_clicked()
{serialport->write(ui->send_line->text().toLocal8Bit().data());  //将发送区内容转换为8bit发送出去
}

 (6)清空函数关联

void Widget::on_clear_pb_clicked()    //当清空按钮按下时
{ui->receive_line->clear();
}

(7)运行效果 


4.代码

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include "QSerialPort"      //加入文件QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();QSerialPort *serialport;        //定义一个QserialPort类的指针
private slots:void on_open_pb_clicked();void on_close_pb_clicked();void SerialPort_ReadyRead_Slot();   //准备读信号函数声明void on_send_pb_clicked();void on_clear_pb_clicked();private:Ui::Widget *ui;
};
#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include "QSerialPortInfo"   //引入必要的serial文件
#include "QMessageBox"      //消息提示
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);QStringList serialNamePort;       //定义一个数组serialport = new QSerialPort(this);    //串口指针赋值给serialportconnect(serialport,SIGNAL(readyRead()),this,SLOT(SerialPort_ReadyRead_Slot()));  //关联准备读信号foreach (const QSerialPortInfo &info ,QSerialPortInfo::availablePorts()) {      //自动搜索当前串口serialNamePort<<info.portName();      //将返回值加载入数组}ui->com_cb->addItems(serialNamePort);     //将搜索的串口加入UI界面
}Widget::~Widget()
{delete ui;
}
/*************************准备读函数*************************/
void Widget::SerialPort_ReadyRead_Slot()
{QString receive_buff;                   //定义一个数组,存放接收到的内容receive_buff=QString(serialport->readAll());       //将接收到的数据转换为QString类型ui->receive_line->appendPlainText(receive_buff);   //将接收到的内容在接收区显示出来
}void Widget::on_open_pb_clicked()       //当打开串口按下时
{QSerialPort::BaudRate buadrate;    // ::为作用域,定义波特率QSerialPort::DataBits databits;    //定义数据位QSerialPort::StopBits stopbits;   //定义停止位QSerialPort::Parity   checkbits;   //定义校验位
/******************波特率赋值******************************/if(ui->baudrate_cb->currentText()=="115200")buadrate=QSerialPort::Baud115200;else if(ui->baudrate_cb->currentText()=="9600")buadrate=QSerialPort::Baud9600;else if(ui->baudrate_cb->currentText()=="4800")buadrate=QSerialPort::Baud4800;
/******************数据位赋值*******************************/if(ui->data_cb->currentText()=="8")databits=QSerialPort::Data8;else if(ui->data_cb->currentText()=="7")databits=QSerialPort::Data7;else if(ui->data_cb->currentText()=="6")databits=QSerialPort::Data6;else if(ui->data_cb->currentText()=="5")databits=QSerialPort::Data5;
/*******************停止位赋值******************************/if(ui->stop_cb->currentText()=="1")stopbits=QSerialPort::OneStop;else if(ui->stop_cb->currentText()=="1.5")stopbits=QSerialPort::OneAndHalfStop;else if(ui->stop_cb->currentText()=="2")stopbits=QSerialPort::TwoStop;
/******************校验位赋值******************************/checkbits=QSerialPort::NoParity;         //因为强制选择无校验位
/******************设置串口*******************************/serialport->setPortName(ui->com_cb->currentText());    //设置串口名serialport->setBaudRate(buadrate);      //设置波特率serialport->setDataBits(databits);      //设置数据位serialport->setStopBits(stopbits);      //设置停止位serialport->setParity(checkbits);       //设置校验位if(serialport->open(QIODevice::ReadWrite)==true)    //串口打开成功QMessageBox::information(this,"提示","串口打开成功");elseQMessageBox::critical(this,"警告","串口打开失败");
}void Widget::on_close_pb_clicked()      //当关闭窗口按钮按下时
{serialport->close();QMessageBox::information(this,"提示","串口已经关闭");
}void Widget::on_send_pb_clicked()      //当发送按钮按下时
{serialport->write(ui->send_line->text().toLocal8Bit().data());  //将发送区内容转换为8bit发送出去
}void Widget::on_clear_pb_clicked()    //当清空按钮按下时
{ui->receive_line->clear();
}

 pro文件(只加入了serialport,以及自动加入的图标文件)

QT       += core gui serialportgreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsCONFIG += c++17# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0SOURCES += \main.cpp \widget.cppHEADERS += \widget.hFORMS += \widget.ui# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += targetRESOURCES += \tubiao.qrc

 

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

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

相关文章

海王星(Neptune)系列和大禹(DAYU)系列OpenHarmony智能硬件配置解决方案

海王星&#xff08;Neptune&#xff09;系列和大禹&#xff08;DAYU&#xff09;系列OpenHarmony智能硬件对OS的适配、部件拼装配置、启动配置和文件系统配置等。产品解决方案的源码路径规则为&#xff1a;vendor/{产品解决方案厂商}/{产品名称}_。 解决方案的目录树规则如下&…

推理判断01-程永乐-图形1

课程安排 出题形式 图形推理 1、位置规律 图形题目

首尔之春在线资源最新电影1080p高清

打开下面这个链接就可以看到 首尔之春在线资源最新电影1080p高清 如果链接打不开&#xff0c;就复制下面的网址到浏览器打开 https://www.zhufaka.cn/liebiao/A09504AE3BF8BD06 用阿里云盘下载&#xff0c;下载完成之后&#xff0c;用迅雷播放 首尔之春在线资源最新电影10…

winui开发笔记(五)应用程序图标

应用程序图标、发布者、显示名称大部分都在package.appxmanifest清单文件中&#xff0c;可以正常打开&#xff0c;也可以使用xml文本编辑器打开。 以下是一个正常的应用程序中所有的与图标相关的图片&#xff1a; 但是设置之后会有一圈白&#xff0c;包括在电脑最下边一行&…

HDFS简介与部署以及故障排错(超简单)

文章目录 一、HDFS介绍1、简介2、结构模型3、文件写入过程4、文件读取过程5、文件块的存放6、存储空间管理机制6.1 文件删除和恢复删除6.2 复制因子配置6.3 文件命名空间6.4 数据复制机制 二、环境搭建&#xff08;单机版&#xff09;1、修改主机名2、配置ssh免密登录3、Hadoop…

自然语言:信息抽取技术在CRM系统中的应用与成效

一、引言 在当今快速变化的商业环境中&#xff0c;客户关系管理&#xff08;CRM&#xff09;已成为企业成功的关键因素。CRM系统的核心在于有效地管理客户信息&#xff0c;跟踪与客户的每一次互动&#xff0c;以及深入分析这些数据以提升客户满意度和忠诚度。在我最近参与的一个…

O2O:Offline–Online Actor–Critic

IEEE TAI 2024 paper 1 Introduction 一篇offline to online 的文章&#xff0c;有效解决迁移过程出现的performance drop。所提出的O2AC算法首先在离线阶段添加一项BC惩罚项&#xff0c;用于限制策略靠近专家策略&#xff1b;而在在线微调阶段&#xff0c;通过动态调整BC的权…

【STM32F103】WDG看门狗

本系列在之前介绍时钟树的文章中有稍微提一下看门狗WDG&#xff08;Watch Door Dog&#xff09;。 简单来说&#xff0c;可以当成是一个计数器&#xff0c;一旦这个计数器溢出则单片机复位。因为我们需要每隔一段时间就把这个计数器的值清零&#xff08;喂狗&#xff09;。 I…

并发编程并发安全性之Lock锁及原理分析

ReentrantLock 用途:锁是用来解决线程安全问题的 重入锁-> 互斥锁 满足线程的互斥性意味着同一个时刻&#xff0c;只允许一个线程进入到加锁的代码中。多线程环境下&#xff0c;满足线程的顺序访问 锁的设计猜想 一定会涉及到锁的抢占&#xff0c;需要有一个标记来实现互…

C#不可识别的数据库格式解决方法

1.检查数据库文件路径和文件名&#xff1a; 确保指定的路径和文件名拼写正确&#xff0c;而且文件确实存在于指定的位置。使用绝对路径或相对路径都是可行的&#xff0c;但要确保路径的正确性 string connectionString "ProviderMicrosoft.ACE.OLEDB.12.0;Data SourceE:…

数字人解决方案——阿里EMO音频驱动肖像生成能说话能唱歌的逼真视频

前言 数字可以分为3D数字人和2D数字人。3D数字人以虚幻引擎的MetaHuman为代表&#xff0c;而2D数字人则现有的图像或者视频做为输入&#xff0c;然后生成对口型的数字人&#xff0c;比如有SadTalker和Wav2Lip。 SadTalker&#xff1a;SadTalker是一种2D数字人算法&#xff0c;…

Lichee Pi 4A:RISC-V架构的开源硬件之旅

一、简介 Lichee Pi 4A是一款基于RISC-V指令集的强大Linux开发板&#xff0c;它凭借出色的性能和丰富的接口&#xff0c;吸引了众多开发者和爱好者的关注。这款开发板不仅适用于学习和研究RISC-V架构&#xff0c;还可以作为软路由、小型服务器或物联网设备的核心组件。 目录 一…

Java 反射详解:动态创建实例、调用方法和访问字段

“一般情况下&#xff0c;我们在使用某个类之前已经确定它到底是个什么类了&#xff0c;拿到手就直接可以使用 new 关键字来调用构造方法进行初始化&#xff0c;之后使用这个类的对象来进行操作。” Writer writer new Writer(); writer.setName("少年");像上面这个…

Java生成 word报告

Java生成 word报告 一、方案比较二、Apache POI 生成三、FreeMarker 生成 在网上找了好多天将数据库信息导出到 word 中的解决方案&#xff0c;现在将这几天的总结分享一下。总的来说&#xff0c;Java 导出 word 大致有 5 种。 一、方案比较 1. Jacob Jacob 是 Java-COM Bri…

MATLAB的基础二维绘图

1.plot函数 &#xff08;1&#xff09;plot函数的基本用法 plot(x,y)其中&#xff0c;x和y分别用于存储x坐标和y坐标数据&#xff0c;通常x和y为长度相同的向量。 例如&#xff1a; x[2.3,3.3,4.3,1];y[1.3,2,1.8,3]plot(x,y) (2)plot(x,y,选项&#xff09;其中选项包括颜色…

(C语言)sizeof和strlen的对比(详解)

sizeof和strlen的对⽐&#xff08;详解&#xff09; 1. sizeof sizeof是用来计算变量所占内存空间大小的&#xff0c; 单位是字节&#xff0c;如果操作数是类型的话&#xff0c;计算的是用类型创建的变量所占空间的大小。 sizeof 只关注占用内存空间的大小 &#xff0c;不在乎内…

Linux——网络基础

计算机网络背景 网络发展 独立模式: 计算机之间相互独立 在早期的时候&#xff0c;计算机之间是相互独立的&#xff0c;此时如果多个计算机要协同完成某种业务&#xff0c;那么就只能等一台计算机处理完后再将数据传递给下一台计算机&#xff0c;然后下一台计算机再进行相应…

YOLOv9推理详解及部署实现

目录 前言零、YOLOv9简介一、YOLOv9推理(Python)1. YOLOv9预测2. YOLOv9预处理3. YOLOv9后处理4. YOLOv9推理 二、YOLOv9推理(C)1. ONNX导出2. YOLOv9预处理3. YOLOv9后处理4. YOLOv9推理 三、YOLOv9部署1. 源码下载2. 环境配置2.1 配置CMakeLists.txt2.2 配置Makefile 3. ONNX…

软件设计师9--总线/可靠性/性能指标

软件设计师9--总线/可靠性/性能指标 考点1&#xff1a;总线总线的分类例题&#xff1a; 考点2&#xff1a;可靠性系统可靠性分析--可靠性指标串联系统与并联系统N模混合系统例题&#xff1a; 性能指标例题&#xff1a; 考点1&#xff1a;总线 一条总线同一时刻仅允许一个设备发…

Stable Diffusion 模型分享:CG texture light and shadow(CG纹理光影)

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八 下载地址 模型介绍 一个拥有cg质感和光影的融合模型&#xff0c;偏2.5D 条目内容类型大模型基础模型SD 1.5来…