Qt 5. QSerialPort串口收发

1. 代码
//ex2.cpp
#include "ex2.h"
#include "ui_ex2.h"
#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>int static cnt = 0;Ex2::Ex2(QWidget *parent): QDialog(parent), ui(new Ui::Ex2)
{ui->setupUi(this);//查找可用的串口foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts()){QSerialPort serial;serial.setPort(info);if(serial.open(QIODevice::ReadWrite)){ui->comboBox_PortBox->addItem(serial.portName());serial.close();}}//设置波特率下拉菜单默认显示第三项ui->comboBox_BaudBox->addItem("2400");ui->comboBox_BaudBox->addItem("4800");ui->comboBox_BaudBox->addItem("9600");ui->comboBox_BaudBox->addItem("19200");ui->comboBox_BaudBox->addItem("115200");ui->comboBox_BaudBox->setCurrentIndex(0);//关闭发送按钮的使能ui->sendButton->setEnabled(false);
}Ex2::~Ex2()
{delete ui;
}void Ex2::on_pushButtonMy1_clicked()
{cnt ++;QString str = QString::number(cnt,10);ui->textEditMy1->setText(str);
}void Ex2::on_pushButtonMy2_clicked()
{if(cnt > 0) cnt --;QString str = QString::number(cnt,10);ui->textEditMy1->setText(str);
}void Ex2::on_pushButtonClr_clicked()
{ui->textEditMy1->clear();
}void Ex2::on_pushButtonComm_clicked()
{QList<QSerialPortInfo> list = QSerialPortInfo::availablePorts();ui->textEditMy1->setText("Total number of availiable ports:" + QString::number(list.count(), 10));foreach(const QSerialPortInfo &serialportinfo, list){ui->textEditMy1->append( "===========================================");ui->textEditMy1->append( "Port: " + serialportinfo.portName());ui->textEditMy1->append( "Location: " + serialportinfo.systemLocation());ui->textEditMy1->append( "Description: " + serialportinfo.description());ui->textEditMy1->append( "Manufactutor: " + serialportinfo.manufacturer());ui->textEditMy1->append( "Vendor Indentifier: " + QString::number(serialportinfo.vendorIdentifier(), 10));ui->textEditMy1->append( "Busy: " + QString::number(serialportinfo.isBusy()));}
}//读取接收到的数据
void Ex2::Read_Data()
{QByteArray buf;buf = serial->readAll();if(!buf.isEmpty()){QString str = ui->textEditMy1->toPlainText();str+=tr(buf);ui->textEditMy1->clear();ui->textEditMy1->append(str);}buf.clear();
}void Ex2::on_sendButton_clicked()
{serial->write(ui->textEditMy2->toPlainText().toLatin1());
}void Ex2::on_openButton_clicked()
{if(ui->openButton->text()==tr("打开串口")){serial = new QSerialPort;//设置串口名serial->setPortName(ui->comboBox_PortBox->currentText());//打开串口serial->open(QIODevice::ReadWrite);//设置波特率serial->setBaudRate(ui->comboBox_BaudBox->currentText().toInt());//设置数据位数serial->setDataBits(QSerialPort::Data8);//设置奇偶校验serial->setParity(QSerialPort::NoParity);//设置停止位serial->setStopBits(QSerialPort::OneStop);//设置流控制serial->setFlowControl(QSerialPort::NoFlowControl);//关闭设置菜单使能ui->comboBox_PortBox->setEnabled(false);ui->comboBox_BaudBox->setEnabled(false);ui->openButton->setText(tr("关闭串口"));ui->sendButton->setEnabled(true);//连接信号槽QObject::connect(serial, &QSerialPort::readyRead, this, &Ex2::Read_Data);}else{//关闭串口serial->clear();serial->close();serial->deleteLater();//恢复设置使能ui->comboBox_PortBox->setEnabled(true);ui->comboBox_BaudBox->setEnabled(true);ui->openButton->setText(tr("打开串口"));ui->sendButton->setEnabled(false);}
}//main.cpp
#include "ex2.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Ex2 w;w.show();return a.exec();
}//ex2.pro
//在ex2.pro 添加:QT += serialport
QT       += core guiQT += serialportgreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsCONFIG += c++11# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0SOURCES += \main.cpp \ex2.cppHEADERS += \ex2.hFORMS += \ex2.ui# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
2.效果

RX-TX短接
在这里插入图片描述

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

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

相关文章

写Acknowledgement的时候,latex日志出现警告

用latex写论文的时候&#xff0c;\section{Conclusion}下面添加 \backmatter \bmhead{Acknowledgments}时报错&#xff1a;错误log&#xff1a; \bmhead Package hyperref Warning: Difference (4) between bookmark levels is greater than one, level....错误原因&#xff…

【深度学习】InST,Inversion-Based Style Transfer with Diffusion Models,论文,风格迁移,实战

代码&#xff1a;https://github.com/zyxElsa/InST 论文&#xff1a;https://arxiv.org/abs/2211.13203 文章目录 AbstractIntroductionRelated WorkImage style transferText-to-image synthesisInversion of diffusion models MethodOverview ExperimentsComparison with Sty…

Java版企业电子招标采购系统源代码Spring Boot + 二次开发 + 前后端分离 构建企业电子招采平台之立项流程图

项目说明 随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大&#xff0c;公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境&#xff0c;最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范&#xff0c;以及审…

android 如何分析应用的内存(十四)——jdb命令行

android 如何分析应用的内存&#xff08;十四&#xff09; 前面的系列文章介绍了android应用如何分析native内存。 接下来就是android应用如何分析java内存。同native一样&#xff0c;我们也希望能够看到 ART的堆和栈的情况&#xff0c;以及锁的情况&#xff0c;方法的本地变…

【驱动开发day8作业】

作业1&#xff1a; 应用层代码 #include <stdlib.h> #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <string.h> #include <sys/ioctl.h>int main(int…

代码随想录算法训练营day51

文章目录 Day51 最佳买卖股票时机含冷冻期题目思路代码 买卖股票的最佳时机含手续费题目思路代码 Day51 最佳买卖股票时机含冷冻期 309. 买卖股票的最佳时机含冷冻期 - 力扣&#xff08;LeetCode&#xff09; 题目 给定一个整数数组&#xff0c;其中第 i 个元素代表了第 i 天…

Docker安装es以及ik分词器

1、拉取镜像 docker pull elasticsearch:7.10.12、下载对应版本的ik分词、并将它们解压到ik文件夹下&#xff0c;如图 https://github.com/medcl/elasticsearch-analysis-ik/releases 3、在服务器上创建文件夹 mkdir /usr/elklog/elk/es mkdir /usr/elklog/elk/es/data mkdi…

Web3教程| 如何发现并追踪“聪明钱”?

在加密领域&#xff0c;聪明钱&#xff08;Smart Money&#xff09;是指拥有专业知识、对市场有深入了解以及具有信息优势的专业投资机构或个人投资者。 聪明钱一直以来都是加密市场中的关注焦点&#xff0c;因为这些实体通常可以获得普通交易者不易获得的信息和资源&#xff0…

【Web开发指南】如何用MyEclipse进行JavaScript开发?

由于MyEclipse中有高级语法高亮显示、智能内容辅助和准确验证等特性&#xff0c;进行JavaScript编码不再是一项繁琐的任务。 MyEclipse v2023.1.2离线版下载 JavaScript项目 在MyEclipse 2021及以后的版本中&#xff0c;大多数JavaScript支持都是开箱即用的JavaScript源代码…

ChatGPT:人工智能交互的新时代

ChatGPT的背景和发展&#xff1a; ChatGPT是OpenAI公司在GPT-3基础上的进一步升级。GPT&#xff08;Generative Pre-trained Transformer&#xff09;是一种基于Transformer架构的深度学习模型&#xff0c;它能够处理自然语言&#xff0c;实现自动对话、写作等任务。而ChatGPT在…

【运维】hive 终端突然不能使用:Hive Schema version does not match metastore‘s schema version

文章目录 一. 问题描述二. 常规排查1. 元数据库2. hive-site.xml相关meta连接信息检查 三. 正解 一. 问题描述 进入hive终端&#xff0c;执行如下命令报错&#xff1a; hive> show tables; FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: …

Entity Framework(EF)查询

一、In 查询 var list = dbContext.Users.Where(u => new int[] {1, 2, 3, 5,

冒泡排序算法

冒泡排序 算法说明与代码实现&#xff1a; 简单分析&#xff0c;外循环次数为数据len(arr)-1次&#xff0c;内循环为len(arr)-外循环次数 下面是使用Go语言实现冒泡排序算法的示例&#xff1a; package mainimport "fmt"func bubbleSort(arr []int) {n : len(arr…

【JavaEE】简单了解JVM

目录 一、JVM中的内存区域划分 二、JVM的类加载机制 1、类加载的触发时机 2、双亲委派模型 1.1、向上委派 1.2、向下委派 三、JVM中的垃圾回收机制&#xff08;GC&#xff09; 1、确认垃圾 1.1、引用计数&#xff08;Java实际上没有使用这个方案&#xff0c;但是Pytho…

【HttpRunnerManager】搭建接口自动化测试平台实战

目录 一、需要准备的知识点 二、我搭建的环境 三、搭建过程 四、访问链接 五、两个问题点 【整整200集】超超超详细的Python接口自动化测试进阶教程&#xff0c;真实模拟企业项目实战&#xff01;&#xff01; 一、需要准备的知识点 1. linux: 安装 python3、nginx 安装和…

emWin - BMP图片显示

BmpCvt.exe 用途 利用BMP图片&#xff0c;进行GUI显示&#xff1b;ICON等图标都是小BMP图片&#xff0c;核心是将BMP图片&#xff0c;转成emWin支持的方式&#xff0c;最终显示到TFT屏上 使用BmpCvt.exe工具&#xff0c;将各个图片转成相应的C文件. emWin有关的工具&#xff…

Redis的数据淘汰策略

目录 一、概念 二、redis有哪些数据淘汰策略 三、注意事项 四、怎么选择数据淘汰策略 五、总结 一、概念 Redis的数据淘汰策略指的是在内存不足的情况下&#xff0c;如何决定哪些数据需要被淘汰以释放内存空间&#xff0c;当Redis中的内存不够用时&#xff0c;此时在向Red…

测试|Selenium介绍及环境搭建

测试|Selenium介绍及环境搭建 1.Selenium是什么 Selenium是用来做web网站 UI自动化的测试工具/测试框架。 我们这里说的Selenium是Selenium2.0&#xff0c;它由Selenium IDE&#xff0c;Webdriver, Selenium Grid组成。 Selenium IDE是用于Selenium测试的完成集成开发环境&…

云计算——云计算关键技术

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​ 目录 前言 一.云计算关键技术 1.虚拟化技术 2.分布式数据存储技术 &#xff08;1&…

ubuntu 相关命令记录

检查ssh 是否可用 ssh 安装curl apt install curl 进入root 进入root 账号 sudo -i 修改密码 sodo passwd 开启root 可远程连接 修改SSH配置文件 可以通过SSH配置文件更改包括端口、是否允许root登录等设置&#xff0c;配置文件位置&#xff1a; /etc/ssh/sshd_config…