#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.rhkb.cn/news/269132.html

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

相关文章

Java架构之路-架构应全面了解的技术栈和工作域

有时候我在想这么简单简单的东西&#xff0c;怎么那么难以贯通。比如作为一个架构师可能涉及的不单单是技术架构&#xff0c;还包含了项目管理&#xff0c;一套完整的技术架构也就那么几个技术栈&#xff0c;只要花点心思&#xff0c;不断的往里面憨实&#xff0c;总会学的会&a…

JavaScript基础2之运算符、函数

JavaScript基础 运算符一元操作符递增/递减一元加和减 布尔操作符逻辑非逻辑与逻辑或 乘性操作符乘法操作符除法操作符取模操作符 加性操作符加法操作符减法操作符 比较操作符相等操作符关系操作符 函数函数声明函数表达式箭头函数函数的实参和形参arguments 默认参数参数的拓展…

tomcat优化、nginx +tomcat 部署 (三)

在目前流行的互联网架构中&#xff0c;Tomcat在目前的网络编程中是举足轻重的&#xff0c;由于Tomcat的运行依赖于JVM&#xff0c;从虚拟机的角度把Tomcat的调整分为外部环境调优 JVM 和 Tomcat 自身调优两部分 Tomcat 是一个流行的开源 Java 服务器&#xff0c;用于托管 Java …

第十二届“中关村青联杯”全国研究生数学建模竞赛-A题:水面舰艇编队防空和信息化战争评估模型(续)

目录 5.5 问题五模型的建立与求解 5.5.1 战略级信息化战争评估模型 5.5.2 战略级信息化战争评估模型的验证 6. 模型的评价 6.1 模型的优点 6.2 模型的缺点 参考文献 代码实现 附件1 &#xff08;1&#xff09;No_1_result.m 源代码 &#xff08;2&#xff09;No_1_figure.m 源代…

汽车零部件制造中的信息抽取技术:提升效率与质量的关键

一、引言 在汽车制造业中&#xff0c;零部件的生产是整个制造流程的关键一环。这些零部件&#xff0c;包括但不限于制动系统、转向系统和传动系统&#xff0c;是确保汽车安全、可靠运行的基础。为了满足现代汽车工业对效率和质量的严格要求&#xff0c;制造商们纷纷投入到高度…

HarmonyOS—HAP唯一性校验逻辑

HAP是应用安装的基本单位&#xff0c;在DevEco Studio工程目录中&#xff0c;一个HAP对应一个Module。应用打包时&#xff0c;每个Module生成一个.hap文件。 应用如果包含多个Module&#xff0c;在应用市场上架时&#xff0c;会将多个.hap文件打包成一个.app文件&#xff08;称…

P-States/C-States/S-States/G-States/D-States

P-States是指处理器的性能状态&#xff0c;可以根据需要调整处理器的工作频率和电压来平衡性能和能效。 S-States是指系统的睡眠状态&#xff0c;可以让系统在空闲时进入低功耗状态以节省能量。 G-States是系统的全局状态&#xff0c;通常用于描述整个系统的运行状态。 C-St…

文件上传之图片马

图片马介绍 图片马&#xff1a;就是在正常图片中插入木马。 图片马的制作 1.我们先创建php木马文件1.php&#xff0c;内容有以下两种方式&#xff1a; <?php eval($_POST[a]); ?> /* 常规一句话木马 */ <?php $aPD9waHAgQGV2YWwoJF9QT1NUWydhJ10pOz8; $myfile…

使用Pytorch导出自定义ONNX算子

在实际部署模型时有时可能会遇到想用的算子无法导出onnx&#xff0c;但实际部署的框架是支持该算子的。此时可以通过自定义onnx算子的方式导出onnx模型&#xff08;注&#xff1a;自定义onnx算子导出onnx模型后是无法使用onnxruntime推理的&#xff09;。下面给出个具体应用中的…

重构笔记系统:Docker Compose在微服务架构中的应用与优化

虽然我的笔记系统的开发是基于微服务的思想&#xff0c;但是在服务的配置和编排上感觉还是不太合理&#xff0c;具体来说&#xff0c;在开发上的配置和在生产上的配置差别太大。现在规模小&#xff0c;后面规模变大&#xff0c;估计这一块会成为系统生长的瓶颈。 因此&#xff…

推特API(Twitter API)对接说明,用户code To Token换取

前期准备 提前准备、说明&#xff1a;目前对接推特api开发门户分为3个版本&#xff0c;分别是免费的&#xff0c;100美金一个月的基础版以及5000美金一个月的企业版&#xff0c;免费的目前就两个接口可以调用&#xff0c;所以想要对接和使用推特最基本的也需要付100美元一个月…

ETAS工具链ISOLAR-AB重要概念,RTE配置,ECU抽取

RTE配置界面&#xff0c;包含ECU抽取关联 首次配置RTE&#xff0c;出现需要勾选的抽取EXTRACT 创建System System制作SWC到ECU的Mapping System制作System Data 的Mapping

LabVIEW眼结膜微血管采集管理系统

LabVIEW眼结膜微血管采集管理系统 开发一套基于LabVIEW的全自动眼结膜微血管采集管理系统&#xff0c;以提高眼结膜微血管临床研究的效率。系统集成了自动化图像采集、图像质量优化和规范化数据管理等功能&#xff0c;有效缩短了图像采集时间&#xff0c;提高了图像质量&#…

9.WEB渗透测试-Linux基础知识-Linux用户权限管理(上)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;8.WEB渗透测试-Linux基础知识-Linux基础操作&#xff08;二&#xff09;-CSDN博客 用户管…

Laravel框架: Call to a member function connect() on null 异常报错处理

Laravel框架&#xff1a; Call to a member function connect() on null 异常报错处理 Date: 2024.03.01 21:03:11 author: lijianzhan 原文链接: https://learnku.com/laravel/t/63721 问题&#xff1a; local.ERROR: Call to a member function connect() on null {"…

【办公类-21-08】三级育婴师 多个二级文件夹的docx合并成PDF

背景需求: 前期制作了单题文件夹 【办公类-21-07】新建文件夹 三级育婴师操作参考题目-CSDN博客文章浏览阅读439次&#xff0c;点赞7次&#xff0c;收藏10次。【办公类-21-07】新建文件夹 三级育婴师操作参考题目https://blog.csdn.net/reasonsummer/article/details/1363360…

Spring Boot项目中不使用@RequestMapping相关注解,如何动态发布自定义URL路径

一、前言 在Spring Boot项目开发过程中&#xff0c;对于接口API发布URL访问路径&#xff0c;一般都是在类上标识RestController或者Controller注解&#xff0c;然后在方法上标识RequestMapping相关注解&#xff0c;比如&#xff1a;PostMapping、GetMapping注解&#xff0c;通…

Gitlab: PHP项目CI/CD实践

目录 1 说明 2 CI/CD 2.1 部署方式一&#xff1a;增量部署 2.1.1 目标服务器准备 2.2.2 Gitlab及Envoy脚本 2.2 部署方式二&#xff1a;镜像构建与部署 2.2.1 推送到私有化容器仓库 准备工作 脚本 要点 2.2.2 推送到hub.docker.com 准备工作 脚本 3 参考&#x…

鸿蒙实战应用开发:【拨打电话】功能

概述 本示例通过输入电话&#xff0c;进行电话拨打&#xff0c;及电话相关信息的显示。 样例展示 涉及OpenHarmony技术特性 网络通信 基础信息 拨打电话 介绍 本示例使用call相关接口实现了拨打电话并显示电话相关信息的功能 效果预览 使用说明 1.输入电话号码后&#…

「滚雪球学Java」:多线程(章节汇总)

咦咦咦&#xff0c;各位小可爱&#xff0c;我是你们的好伙伴——bug菌&#xff0c;今天又来给大家普及Java SE相关知识点了&#xff0c;别躲起来啊&#xff0c;听我讲干货还不快点赞&#xff0c;赞多了我就有动力讲得更嗨啦&#xff01;所以呀&#xff0c;养成先点赞后阅读的好…