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短接
相关文章:

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…...
什么是Java中的JVMTI(JVM Tool Interface)?
Java中的JNI(Java Native Interface)和JVMTI(JVM Tool Interface)都是与Java运行时环境(JVM)交互的工具,但它们有不同的目的和使用场景。下面我从新手的角度来幽默地解释一下它们的区别和用途。…...

WAF独木难支 RASP与ADR将成应用安全防护2.0时代新宠
曾几何时,黑客攻击大多通过网络层进行,但随着基于网络层的基础安全防护措施趋于严密,防火墙、入侵防御、防病毒等安全软硬件构建起了相对完善的防护体系,想再从网络层钻空子的难度增大。如今,黑客攻击从网络层转入Web为…...

四、Unity中颜色空间
Unity中的设置 通过点击菜单Edit->Project Settings->Player页签->Other Settings下的Rendering部分进行修改,参数Color Space可以选择Gamma或Linear。 当选择Gamma Space时,Unity不会做任何处理。当选择Linear Space时,引擎的渲染…...
Java程序员面试题
Java程序员面试题目 1.Java基础1.1 Java有list,list有很多种,你平时开发喜欢用哪个list?(容易)1.2 Java的map,你知道有哪几种map,你平时喜欢用哪个?(容易) 2.…...

【自动化剧本】Role角色
目录 一、Roles模块1.1roles的目录结构1.2roles 内各目录含义解释1.3在一个 playbook 中使用 roles 的步骤 二、使用Role编写LNMP剧本2.1 搭建Nginx角色2.2搭建Mysql角色2.3搭建php角色2.4lnmp剧本 一、Roles模块 roles用于层次性、结构化地组织playbook。roles能够根据层次型结…...

安全文件传输:如何避免数据泄露和黑客攻击
网络安全问题日益严重,导致许多数据被泄露和黑客袭击的事件频发。为了保证文件传输的安全,需要实施一系列安全文件传输策略来防止数据被泄露和黑客袭击。 第一、选择适合的加密方法是非常关键的 加密是一种将明文转换成密文的过程,这样只有授…...
web基础与http
一,dns与域名 网络基于tcp/ip协议进行通信和连接的,其中主机以ip地址做固定的地址标识,用以区分用户和计算机。ip地址是由32位二进制数组成,不方便记忆。为了方便记忆,采用了域名。但是网络通信的唯一标识是ip地址&…...

寒假作业(蓝桥杯2016年省赛C++A组第6题 )
题目: 注:蓝桥杯2016年省赛CA组第6题 请填写表示方案数目的整数。 题解: 由题可知这是一道全排列问题,因此我们可以使用c的next_permutation函数对于1-13的数字进行全排列即可,并每次排列判断是否满足题意。 注意…...
NUMA架构在kubernetes中的应用
numactl使用 numactl 通过将 CPU 划分多个 node 减少 CPU 对总线资源的竞争,一般使用在高配置服务器部署多个 CPU 消耗性服务使用。 numactl使用,numa常用命令,numa命令行使用 #numactl -H available: 2 nodes (0-1) node 0 cpus: 0 2 4 6 8 10 12 14 16 18 20 22 node 0…...

Gogs Git windos服务搭建指南
Gogs Git服务器搭建指南 背景: 近期在Linux 麒麟 v10 系统上开发;为了团队协同编程;选用了Git服务器;之前在windos开始时候使用的visualSVN server; visualSVN server从4.x.x.x开始收费;限制15个开发者用户ÿ…...
leetcode 983. 最低票价
在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为 days 的数组给出。每一项是一个从 1 到 365 的整数。 火车票有 三种不同的销售方式 : 一张 为期一天 的通行证售价为 costs[0] …...
七种遍历Map的方法
七种遍历Map的方法 import java.util.HashMap; import java.util.Iterator; import java.util.Map;public class Wan {public static void main(String[] args) {Map<String,String> dataMap new HashMap<>();dataMap.put("A","Abb");dataMap…...

Android性能优化—内存优化
一、App内存组成以及管理 Android 给每个 App 分配一个 VM ,让App运行在 dalvik 上,这样即使 App 崩溃也不会影响到系统。系统给 VM 分配了一定的内存大小, App 可以申请使用的内存大小不能超过此硬性逻辑限制,就算物理内存富余&…...

Python自动计算Excel数据指定范围内的区间最大值
本文介绍基于Python语言,基于Excel表格文件内某一列的数据,计算这一列数据在每一个指定数量的行的范围内(例如每一个4行的范围内)的区间最大值的方法。 已知我们现有一个.csv格式的Excel表格文件,其中有一列数据&#…...

FTP文件传输协议
FTP文件传输协议 介绍 将某台计算机中的文件通过网络传送到可能相距很远的另一台计算机中,是一项基本的网络应用,即文件传送文件传输协议(File Transfer Protocol)是因特网上使用得最广泛的文件传输协议 FTP提供交互式访问,允许客户指明文件…...

运维高级--tomcat和jpress
1. 简述静态网页和动态网页的区别。 静态网页:事先创建好的网页,通常通过HTML、CSS和JavaScript等静态文件组成,不需要和服务器进行交互,加载速度快 动态网页:根据用户需求动态生成网页,动态网页通常使用…...

【LeetCode】141. 环形链表 进阶题142. 环形链表 II
141. 环形链表 这道题还是用经典的快慢指针法来做。每次让快的指针走两步,慢的走一步。如果有环,则绝对会在环内的某一节点相遇。思想跟物理知识有点关系,如果有环,则在相对运动过程中,可以相当于慢指针静止࿰…...

MySQL索引1——基本概念与索引结构(B树、R树、Hash等)
目录 索引(INDEX)基本概念 索引结构分类 BTree树索引结构 Hash索引结构 Full-Text索引 R-Tree索引 索引(INDEX)基本概念 什么是索引 索引是帮助MySQL高效获取数据的有序数据结构 为数据库表中的某些列创建索引,就是对数据库表中某些列的值通过不同的数据结…...

TikTok数据分析 | 用好超店有数,生意增长快人一步
TikTok在东南亚崛起之快令人叹服。 在东南亚第一大经济体印度尼西亚,超过200万小商家入驻了TikTok的电商平台; TikTok Shop 以6.9亿美元的收入市场份额超越Lazada成为越南第二大电商平台; 2023年泰国TikTok Shop的销售额一路猛涨ÿ…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...

Razor编程中@Html的方法使用大全
文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10pip3.10) 一:前言二:安装编译依赖二:安装Python3.10三:安装PIP3.10四:安装Paddlepaddle基础框架4.1…...

实战设计模式之模板方法模式
概述 模板方法模式定义了一个操作中的算法骨架,并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下,重新定义算法中的某些步骤。简单来说,就是在一个方法中定义了要执行的步骤顺序或算法框架,但允许子类…...