QT中级(7)- 串口工具

news2024/12/26 23:28:42

QT中级(7)- 串口工具

  • 1 串口通信的基础知识
  • 2 需要准备的工具
  • 3 Qt中的串口编程
    • 3.1 引入QSerialPort
    • 3.2 设置参数
    • 3.3 读取数据
    • 3.4 发送数据
  • 4 源码

1 串口通信的基础知识

  1. 串行与并行:串口通信是一种串行通信方式。这意味着数据一位一位地通过通信线发送,这与并行通信不同,后者一次可以发送多个位。虽然串行通信在速度上可能不如并行通信快,但它可以在长距离上进行,而且硬件成本较低。

  2. 同步与异步:串口通信通常是异步的。这意味着发送设备和接收设备不需要同时进行。在异步通信中,每个字节的开始和结束由开始位和停止位标记。另一方面,同步通信需要发送设备和接收设备在时间上同步,但可以以更高的速率发送数据。

  3. 通信参数:串口通信需要设定一些参数以保证发送设备和接收设备能够正确地解码数据。这些参数包括串口号,波特率(数据传输的速度),数据位(每个字节的位数),奇偶校验(一种错误检测方法),和停止位(标记字节结束的位数)。

  4. 通信方式可以分为以下三种(RS-485是半双工;RS-232是全双工):
    1,单工通信:数据只能在一个方向上流动。例如,广播系统就是单工通信,信息只能从广播台传输到收听者,反之则不行。
    2,全双工通信:数据可以同时在两个方向上流动,且不会产生冲突。例如,电话就是全双工通信,双方可以同时进行说话和听话。
    3,半双工通信:数据可以在两个方向上流动,但不能同时进行。这就意味着,如果一方正在发送数据,那么另一方就必须等待,直到发送完毕后才能开始发送数据。

2 需要准备的工具

如果没有相应的硬件,在电脑上可以使用虚拟串口工具进行,将两个COM口进行连通信。
虚拟串口工具:https://pan.baidu.com/s/1YTTRP33LWkELX6GzekeCWQ?pwd=mqlc 提取码:mqlc

第三方串口工具(用来验证我们写的串口工具是否正确):https://pan.baidu.com/s/1QRW8Wq3io5B6DD_jLP0Yug?pwd=mqlc
提取码:mqlc

3 Qt中的串口编程

QSerialPort 是 Qt 库中用于串行通信的类,提供了一种跨平台的方式来处理串行端口。它可以被用于多种不同的串行通信任务,包括 RS-232 和 RS-485 通信。

  1. 跨平台性:QSerialPort 支持许多不同的平台,包括 Windows,Linux,macOS 和更多。
  2. 易用性:QSerialPort 提供了一种简单的接口来打开和关闭串行端口,设置通信参数(如波特率,数据位,停止位和奇偶校验),并读写数据。
  3. 信号和槽:与 Qt 的其他类一样,QSerialPort 利用 Qt 的信号和揽子系统来处理异步事件。

3.1 引入QSerialPort

  1. 在pro文件中加入:QT += serialport
  2. .h或者.cpp中加入:#include <QSerialPort>

3.2 设置参数

#include <QSerialPort
QSerialPort *serial = new QSerialPort;
serial->setPortName("COM1");  // 设置串行端口
serial->setBaudRate(QSerialPort::Baud9600);  // 设置波特率
serial->setDataBits(QSerialPort::Data8);  // 设置数据位
serial->setParity(QSerialPort::NoParity);  // 设置奇偶校验
serial->setStopBits(QSerialPort::OneStop);  // 设置停止位
if (serial->open(QIODevice::ReadWrite)) {
    // 串行端口已成功打开
} else {
    // 打开串行端口失败
}

3.3 读取数据

serialCom = new QSerialPort();
connect(serialCom,SIGNAL(readyRead()),this,SLOT(onReadyRead()));

 if(serialCom->bytesAvailable() <= 0) {
        return;
    }
    QByteArray temp = serialCom->readAll();

    QString data = byteArrayToHexStr(temp);

    emit msgTip(0,data);

3.4 发送数据

if(!serialCom->isOpen())
        return;
    QByteArray sendData = "1 2 3";
    serialCom->write(sendData);

4 源码

源码1:https://gitee.com/mqinglang/qt
在这里插入图片描述
高级地址:
链接:https://pan.baidu.com/s/1TXxDgrast7E3Pwt-2xDxXA?pwd=mqlc
提取码:mqlc

  1. 自定义界面UI布局(无边框)、qss
  2. 支持跨版本QT4、QT5、QT6
  3. 支持Win、linux平台(mac未测试,理论应该也可以)
  4. 支持图形字体(右上角菜单栏)
  5. 支持底部状态栏
  6. 支持自定义数据显示区域
  7. 支持异步串口收发数据
  8. 支持指定字节高亮显示
  9. 支持定时发送数据,以及数据校验
    在这里插入图片描述

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

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

相关文章

面试中关于自动化测试的认识

目录 一、什么是自动化测试&#xff0c;自动化测试的优势是什么&#xff1f; 二、什么样的项目比较适合做自动化测试&#xff0c;什么样的不适合做自动化测试&#xff1f; 三、在制定自动化测试计划的时候一般要考虑哪些点&#xff1f; 四、编写自动化脚本时的一些规范&…

02. 第一个Docker部署应用

目录 1、前言 2、Docker部署Nginx 3、修改镜像存储路径 3.1、默认存储路径 3.2、自定义存储路径 3.2.1、创建自定义的镜像存储路径 3.2.2、创建Docker守护进程的配置文件 3.2.3、重启docker服务 3.2.4、重新查看docker路径 4、配置镜像加速 4.1、配置阿里镜像加速器…

Unity 之 安卓平台上架隐私问题解决方案

Unity 之 助力游戏增长 -- 解决隐私问题 一&#xff0c;平台测试隐私问题二&#xff0c;解决方式一2.1 勾选自定义Mainifest2.2 修改自定义Mainifest2.3 隐私协议弹窗逻辑 三&#xff0c;解决方式二3.1 导出安卓工程3.2 创建上层Activity3.3 配置AndroidManifest 四&#xff0…

SOMEIP协议----第一节(概述)

SOMEIP协议 概述 1.什么是SOME/IP? SOME/IP: 如上图所述,连起来就是基于车载以太网技术的面向服务的可扩展中间件 汽车某ECU软件算法如果需要和其他ECU交互,大部分都通过跨ECU之间的服务来实现,即可以通过车载以太网异步调用其他ECU上的服务,应用开发者只需要关注服务…

携带时间戳主动写入数据到prometheus service

使用到的github公开项目 https://github.com/castai/promwrite 拉下来装依赖&#xff0c;然后使用 client_test.go t.Run(“write with custom options”, func(t *testing.T) 这个测试用例里面&#xff0c;删掉srv初始化的部分&#xff0c;这个是模拟一个客户端&#xff0c;直…

MySQL数据备份与恢复

目录 ​编辑 一、数据备份 1.1物理备份 1.1.1冷备份 1.1.2热备份 1.1.3温备份 二、逻辑分区 2.1完全分区 2.2差异分区 2.3增量备份 三、数据备份恢复实验 3.1做一个数据 3.2物理冷备份与恢复 3.3mysqldump 备份与恢复&#xff08;温备份&#xff09; 3.4Mysql数据…

mmdetection3.1.0 训练自己的数据集

目录 前言安装mmcv安装mmdetection验证安装数据集转为COCO划分训练集、验证集及测试集安装PaddlePaddle安装PaddleX划分数据集 修改对应文件修改coco.py重新安装修改模型文件 训练测试测试带真值的图像测试不带真值的图像批量测试 错误集锦ValueError: need at least one array…

设计模式 ~ 发布订阅者

发表订阅者模式 用于实现对象之间的松耦合通信&#xff1b; 在该模式中&#xff0c;存在一个或多个发布者&#xff08;Publishers&#xff09;和一个或多个订阅者&#xff08;Subscribers&#xff09;&#xff1b; 发布者负责发布消息&#xff0c;而订阅者负责订阅感兴趣的消息…

C++中的“三重”

博文内容&#xff1a;重载、重定义&#xff08;隐藏&#xff09;&#xff0c;重写&#xff08;覆盖&#xff09; 三重区别及联系 概念联系及区别1、作用域2、函数要求 概念 重载 函数名相同,函数的参数列表不同(包括参数个数和参数类型)&#xff0c;至于返回类型可同可不同。 …

如何应对黑产进行验证图片资源遍历

第一期&#xff0c;我们分享的攻防点是&#xff1a;验证图片资源遍历。 “遍历”指黑产通过穷举法获得所有验证码图片的答案&#xff0c;以便能在未来彻底无视验证码。由于验证码主要是通过图片语义答案来识别人机&#xff0c;因此攻破这层防御最有效的方式就是遍历该验证码图…

【电路原理学习笔记】第4章:能量与功率:4.4 能量转换与电阻的电压降

第4章&#xff1a;能量与功率 4.4 能量转换与电阻的电压降 图4-11以电子作为电荷进行举例说明&#xff0c;电子从电池的负极流过电路&#xff0c;然后流回正极。当它们从负极出来时&#xff0c;电子具有最高的能量水平。电子流经过每个电阻&#xff0c;这些电阻连接在一起形成…

微信要怎么定时自动发布朋友圈呢?

大家都知道&#xff0c;朋友圈营销在当今十分重要。对于那些做了私域的人来说&#xff0c;他们知道这可以给自己带来多少的收益。最近&#xff0c;很多客户都纷纷向我咨询朋友圈发圈的问题。客户们认为朋友圈多号操作很费事&#xff0c;拥有多个号容易漏发&#xff1b;若看到同…

【Ceph集群应用】Ceph对象存储系统之RGW接口详解

Ceph对象存储系统之RGW接口详解 1.创建Ceph对象存储系统RGW接口2. 开启httphttps,更改监听端口3. 更改监听端口4.S3接口访问测试5.实验中遇到的故障案例 接上文基于ceph-deploy部署Ceph集群详解 1.创建Ceph对象存储系统RGW接口 &#xff08;1&#xff09;对象存储概念 对象存…

【C语言】杨氏矩阵中寻找元素

题目名称&#xff1a; 杨氏矩阵 题目内容&#xff1a; 有一个数字矩阵&#xff0c;矩阵的每行从左到右是递增的&#xff0c;矩阵从下到上递增的&#xff08;杨氏矩阵的定义&#xff09;&#xff0c;请编写程序在这样的矩阵中查找某个数字是否存在。 形如这样的矩阵就是杨氏…

基于51单片机和proteus的八路抢答器系统

此系统是基于51单片机和proteus的仿真设计&#xff0c;功能如下&#xff1a; 1. 分别采集八路抢答器按键输入信号和系统按键信号。 2. 检测到按键输入后蜂鸣器发出提示音。 3. 数码管显示八路中首次按下的按键。 4. 重置按键可重置系统&#xff0c;重新抢答。 功能框图如下…

【文生图系列】stable diffusion webui 汉化(双语)教程

文章目录 安装双语插件下载json源文件设置双语 这篇博文记录于我成功安装双语插件之后&#xff0c;所以以下的示例页面均是双语。汉化教程分为三步&#xff0c;安装插件&#xff0c;JSON源文件下载和最后一步的双语设置。 安装双语插件 在扩展&#xff08;extensions&#xf…

HCIA作业(一)

题目 实现Client1能够通过域名www.baidu.com来获取Serverlet1&#xff08;Http服务器&#xff09;所放置的文件 配置信息 Servlet1配置&#xff1a; PC1配置&#xff1a; PC2配置&#xff1a; Client1配置&#xff1a; Servlet2配置&#xff1a; AR1配置&#xff1a; 结果

ceph集群(二)

ceph 一、资源池 Pool 管理二、创建 CephFS 文件系统 MDS 接口三、创建 Ceph 块存储系统 RBD 接口四、创建 Ceph 对象存储系统 RGW 接口五、OSD 故障模拟与恢复 一、资源池 Pool 管理 上次我们已经完成了 Ceph 集群的部署&#xff0c;但是我们如何向 Ceph 中存储数据呢&#x…

problem(1):VMware网络虚拟编辑器添加VMnet0+IDA远程调试

VMware网络虚拟编辑器添加VMnet0 桥接模式&#xff1a;由于VMnet0是跟桥接模式有关系的&#xff0c;是ping通的条件&#xff0c;所以很重要。是IDA远程调试的 关键&#xff08;remote window debugger&#xff09; NAT模式&#xff1a;外部网络&#xff08;桥接模式&#xff…

Pyhon:串口应用及数据解析过程

Pyhon:串口应用及数据解析过程 串口通信是一种常用的通信协议&#xff0c;本文重点记录在Python中使用串口&#xff0c;并且以一款电源保护板的串口数据协议为例&#xff0c;对其进行解析&#xff0c;记录收发过程中对16进制数据进行转换的过程。 1. 调用串口 在Python中进行…