QT 串口基本通信 笔记

QT串口传输解析&例程(Qextserialport库的使用方法) 目录 一、前言 二、QextSerialPort的常用函数 三、效果展示 四、源码分析 五、Demo/相关包 一、前言 QextSerialPort是一个串口通信库,使QT4具有串口通信的功能。本例主要讲解QextSerialPort的一些使用方法和例程。 二、QextSerialPort的常用函数 串口设置: setPortName(COM); ... 阅读详情

QT 串口基本通信笔记

Qt 中串口通讯提供了 一个QtSerialPort模块,其中提供了 两个c++类,分别是QSerialPort 和QSerialPortInfo。

QSerialPort 类提供了操作串口的各种接口。
QSerialPortInfo 是一个辅助类,可以提供计算机中可用串口的各种信息。

要在应用程序中使用这些类,请使用以下include语句:

#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>

QT 项目想要使用 ***QtSerialPort***模块必须在.pro 文件中加入以下代码:

QT += serialport

所需 函数

1. 获取串口列表 QSerialPortInfo::availablePorts

[static] QList<QSerialPortInfo> QSerialPortInfo::availablePorts()

QSerialPortInfo 提供的静态函数,
返回系统上可用的串口列表

主要作用是用来遍历 系统上可以使用的所有串口信息,以供 QSerialPort 链接使用。
具体用请看 实例 一

2. 设置 需要打开的串口名称 setPortName ,(这个一般由 QSerialPortInfo::availablePorts 提供)

void setPortName(const QString &name);

QSerialPort 提供的设置串行端口的名称。如果需要,可以将串行端口的名称作为短名称或长系统位置传递。

3. 设置波特率 setBaudRate

bool setBaudRate(qint32 baudRate, Directions directions = AllDirections);
qint32 baudRate(Directions directions = AllDirections) const;

QSerialPort 提供的设置波特率的函数,对应此属性保留所需方向的数据波特率。

如果设置成功或在打开端口之前设置,则返回“真”;否则返回“假”,并设置一个错误代码,可以通过访问qserialport::error属性的值来获取该代码。要设置波特率,请使用枚举QSerialPort::BaudRate或任何正qint32值。

注意:如果在打开端口之前设置了该设置,则实际的串行端口设置将在qserialPort::open()方法中自动完成,然后端口打开成功。

默认值为baud9600,即每秒9600位。

4. 设置数据位 setDataBits

bool setDataBits(DataBits dataBits);
DataBits dataBits() const;

QSerialPort 提供的数据位的函数。
设置数据的函数,此属性将数据位保存在帧中。

如果设置成功或在打开端口之前设置,则返回“true”;否则返回“false”,并设置一个错误代码,可以通过访问 QSerialPort::error 属性的值来获取该代码。

注意:如果在打开端口之前设置了该设置,则实际的串行端口设置将在QSerialPort::open() 方法中自动完成,然后端口打开成功。

默认值为QSerialPort::Data8,即8个数据位。

数据位使用的是QT提供的枚举:QSerialPort::DataBits

5. 设置奇偶效验位 setParity

bool setParity(Parity parity);
Parity parity() const;

QSerialPort 提供的设置奇偶校验函数,此属性保持奇偶校验模式。
如果设置成功或在打开端口之前设置,则返回“true”;否则返回“false”,并设置一个错误代码,可以通过访问QSerialPort::error 属性的值来获取该代码。

注意:如果在打开端口之前设置了该设置,则实际的串行端口设置将在**QSerialPort::open()**方法中自动完成,然后端口打开成功。

默认值为NoParity,即无奇偶校验。

6. 设置停止位 setStopBits

bool setStopBits(StopBits stopBits);
StopBits stopBits() const;

QSerialPort 提供的 设置停止位的函数,此属性保存帧中的停止位数。
如果设置成功或在打开端口之前设置,则返回“true”;否则返回“false”,并设置一个错误代码,可以通过访问QSerialPort::error 属性的值来获取该代码。

注意:如果在打开端口之前设置了该设置,则实际的串行端口设置将在**QSerialPort::open()**方法中自动完成,然后端口打开成功。

默认值为***OneStop***,即1个停止位。

7. 设置控制流模式 setFlowControl

bool setFlowControl(FlowControl flowControl);
FlowControl flowControl() const;

QSerialPort 提供的 设置控制流模式的函数,此属性保持所需的流控制模式。
默认值为NoFlowControl,即没有流控制。

8. 链接接受数据信号 readyRead

//!接收到数据信号
[signal] void QIODevice::readyRead()

QSerialPort* 提供的 每当有新数据可用于从设备的当前读取通道读取时,就会发出此信号。 仅当有新数据可用时(例如,当网络套接字上有新的网络数据有效负载时,或将新的数据块附加到设备上时),才会再次发出该数据。
readyRead() 不会递归地发出; 如果您重新进入事件循环或在连接到 readyRead() 信号的插槽内调用 waitForReadyRead() ,则不会重新发出该信号(尽管 ** waitForReadyRead()** 可能仍返回true)。
对于实现从QIODevice派生的类的开发人员请注意:当新数据到达时,您应该始终发出readyRead()(不要仅仅因为缓冲区中仍有待读取的数据而发出它)。 在其他情况下不要发出readyRead()。
另请参见bytesWritten()。

注:这个信号是 QSerialPort 从QIODevice 继承的。

9. 链接发送数据信号 bytesWritten

//! 写入数据信号数据信号
[signal] void QIODevice::bytesWritten(qint64 bytes)

QSerialPort* 提供的 每次将数据的有效负载写入设备的当前写入通道时,都会发出此信号。bytes参数被设置为在这个有效负载中写入的字节数。

实例 一

#include <QSerialPort>
#include <QSerialPortInfo>
#include <QDebug>
#include <QApplication>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
    {
        qDebug() << "端口名称:" << info.portName();
        qDebug() << "描述 : " << info.description();
        qDebug() << "制造商: " << info.manufacturer();
        qDebug() << "序号: " << info.serialNumber();
        qDebug() << "系统的位置:" << info.systemLocation();
    }
    return a.exec();
}

实例 二

#include <QSerialPort>
#include <QSerialPortInfo>
#include <QDebug>
#include <QApplication>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QSerialPort *serial = new QSerialPort;
    serial->setPortName("COM2");
    bool opt = serial->open(QIODevice::ReadWrite);
    if(opt){
        qDebug()<<"打开成功";
    }else {
         qDebug()<<"打开失败";
}
    //设置波特率
    serial->setBaudRate(QSerialPort::Baud115200);
    //设置数据位
    serial->setDataBits(QSerialPort::Data8);
    //设置奇偶效验位
    serial->setParity(QSerialPort::NoParity);
    //设置停止位
    serial->setStopBits(QSerialPort::OneStop);
    //设置流模式
    serial->setFlowControl(QSerialPort::NoFlowControl);
    
    //简单写入数据
    serial->write("我在写数据");

    return a.exec();
}
Qt6上位机串口通信详解 在Windows系统使用串口 阅读详情

相关推荐

QT的串口收发数据类QSerialPort

串口通讯,大于65535(0xFFFF)赋值的处理方式。

video_plugin_yue的博客 1060

qt 打开固定/指定的串口号 比如打开串口2

QSerialPort serial; //设置串口名,打开固定的串口号都是通过setPortName来实现的,PortName格式为:COM+串口号,比如COM2 serial.setPortName("COM2"); //设置波特率 serial.setBaudRate(QSerialPort::Baud9600); //设置数据位数 serial.setDataBits(QSerialPort::Data8); //设...

lxj362343的博客 2929

Qt实现串口通信

首先新建Qt Gui工程TestSerialPort。设计程序界面 对于指示灯,他是一个label标签,设置宽度24*24。右键点击它,改变样式表 编辑样式表 在工程文件TestSerialPort.pro中加入 之后点击构建,执行一次qmake 在窗口类的头文件中,加入串口通信用到的头文件 窗口类中,加入初始化串口函数声明 窗口类中,加入槽函数 窗口类中,定义串口指针 在窗口类的构造函数中,创建串口。初始化串口,关联发送数据按钮、串口接受数据和打开串口按钮对应的功能函数 实现初始化串口函数 实现打开

m0_60352504的博客 2万+

QSerialPort类方法解析

还有一个串口辅助的类QSerialPortInfo,它可以列举出系统里所有的串口,通过这个类,配合setPort和setPortName方法,我们就可以安排一下自己想用的串口了。波特率是串口通信中一个重要的参数,它指定了数据传输的速率,以每秒传输的比特数(波特)来表示。波特率是串口通信中一个重要的参数,它指定了数据传输的速率,以每秒传输的比特数(波特)来表示。是 Qt Serial Port 模块中的一个成员函数,用于设置请求发送(Request to Send,RTS)信号的状态。

舔狗俱乐部 5113

Qt5实现串口通信

qt实现串口通信示例 1.串口通信简介 串口通信是上下位机进行通信的一种常用的通信协议,大部分单片机中都有一到多个串口资源经过简单的配置就可以实现上下位机的通信,下图是串口通信协议中的一中形式。如果你不是用硬件描述语言去实现一个串口,这部分了解下即可。常用的是8位数据位加起始位加停止位,因此串口是只能发送0-255区间的数据。 2.Qt中的串口通信 qt中集成了QSeria

WAmani的博客 1万+

QT串口通信

如果用qt写程序作为上位机,然后通过和usb和下位机通信的时候,就需要用到qt中的串口通信了。

QtCompany的博客 6987

Qt串口通信,QSerialPort的使用

前言 Qt写上位机时,串口通信是个常用功能,在Qt4的时候有第三方模块QextSerialPort,到了Qt5.1官方提供了QSerialPort模块。 目录 前言 获取串口信息:QSerialPortInfo 串口IO操作:QSerialPort 实例操作 补充:16进制文本(如“0A 13 EF”)转16进制数据(如0x0A 0x13 0xEF) 使用该模块需要在pro文件中添...

龚建波 2万+

关于Qt5 QtSerialPort串口通信

最近用Qt5重写了以前用MFC做的串口通信程序,从中提取了基础的部分, 做了一个简单的程序完成了一些功能: 串口基本的收,发数据 串口是否可用判定,串口状态与按钮状态之间联系 串口发送:字符和16进制发送的选择 串口接收:16进制的接收,按1字节显示与按1个字显示选择 串口接收数据:txt的形式保存,清除接收数据 串口自动发送 我把这个简单的通信程序和一些用到的工具上传了,有需

lovebird_27的专栏 2万+

QT实现串口通信

​ 串行接口:是一种可以将接收来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接收的串行数据流转换为并行的数据字符供给CPU的器件。一般完成这种功能的电路,我们称为串行接口电路。

weixin_56169816的博客 4669

QT 串口通信详解

1、前言

lml521lml927的博客 7032

QT开发--串口通信

qt5

荒野 4118

qt 串口通信

#ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include <QtWidgets> #include <QSerialPort> #include <QSerialPortInfo> namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT public: explicit Widget.

weixin_43246170的博客 1万+

PSM-DID实战指南:Stata代码解析与案例应用

本文详细解析PSM-DID方法在Stata中的实战应用,从理论到代码实现全面覆盖。通过倾向得分匹配(PSM)和双重差分(DID)的结合,有效解决政策评估中的选择偏差问题。文章提供完整的Stata命令代码、样例数据处理技巧和案例应用,帮助研究者准确评估政策效果。

vulkan6gpu的博客 793

用QT实现简单的串口通信

用QT实现简单的串口通信 大家好,这是我人生中的第一篇博客,之所以想开始写博客的原因是因为本人刚毕业进行工作,在工作中常常会遇到很多困难,就常常跑来看大佬们的博客,对我的帮助特别大,所以自己也想把自己的学习经验记录下来,方便以后查看,其实也是想把自己遇到的困难以及如何解决的分享给大家,让大家给我这个小白提提意见。 创建一个QT Widgets Application 这一步就不用过多的叙述了,就是简单的创建一个项目。 设计串口助手界面 在新项目中,Forms文件夹下有一个ui文件,双击便可以进行界面设计

weixin_44383635的博客 7616

从X86到ARM:将VINS-Fusion-GPU和ego-planner迁移到Jetson Orin-NX时,我踩过的那些‘环境差异’坑

本文详细介绍了将VINS-Fusion-GPU和ego-planner从X86平台迁移到Jetson Orin-NX(ARM架构)时遇到的环境差异问题及解决方案。内容涵盖ARM与X86的架构差异、依赖管理、性能调优和硬件接口适配,特别强调了CUDA在ARM平台上的优化配置和内存访问技巧,帮助开发者高效完成跨平台迁移。

weixin_42647395的博客 119

2018南京大学计算机夏令营机试

1. Count number of binary strings without consecutive 1’s Given a positive integer n(3≤n≤90), count all possible distinct binary strings of length n such that there are no consecutive 1's . Examples...

climber16的博客 1万+

Qt串口通信

串口通信被广泛应用于以下领域:电子设备:串口通信用于连接电脑与外部设备,如打印机、扫描仪、传感器、测量仪器等。通信设备:串口通信用于连接调制解调器、路由器、交换机等网络设备。工业自动化:串口通信用于连接工业机器人、PLC(可编程逻辑控制器)、传感器、仪器仪表等设备,实现数据采集、控制与监测。仪器仪表:串口通信用于连接各类仪器仪表,如温度计、压力计、流量计等,传输数据并进行监测与控制。汽车电子:串口通信用于连接汽车中各种电子部件,如发动机控制单元、车载导航系统、车载娱乐系统等。

weixin_70293633的博客 2218

四旋翼无人机数学模型推导

本周开始进行四旋翼无人机的学习工作,首先来进行四旋翼无人机的数学模型推导工作。。 四旋翼动力学数学模型 坐标变换 介绍四旋翼数学模型之前,首先引入坐标变换的概念,定义两个坐标系惯性坐标系{E},以及机体坐标系{B},惯性坐标系就相当于在地面建立的、静止不动的坐标系,也是我们操纵无人机所在的空间,而机体坐标系是建立于四旋翼机体之上,随着四旋翼姿态变换而变化,所以建立一种地面上的惯性坐标系与四旋翼机体坐标系之间的转换关系,就有这个必要。 对于惯性坐标系{E},以及机体坐标系{B},它们之间的转换关系

BiuBiuSun的博客 1万+

QT通信-串口通信

QT通信-串口通信前言一、串口搜索二、打开串口二、发送或接收数据二、程序如下:总结 前言 QT 串口通信基于QT的QSerialPort类,先在项目文件pro中添加QT += serialport。 我使用的是ubuntu16.04,window下未测试是否能用。 QT的QSerialPort类说明见官网 一、串口搜索 使用QT串口通信类中QSerialPortInfo类的availablePorts()来获取计算机存在的串口。 初始化串口对象 m_serialPort = new QSeri

博咯的博客 7484

一文读懂 SAP BTP Application Router 的 Resource Files:从 xs-app.json 到本地开发的默认设置

本文详解SAP BTP中Application Router的资源文件配置与本地开发实践。核心包括:xs-app.json定义路由规则与安全策略,package.json声明依赖与启动脚本,resources/存放静态资源,default-services.json和local-destinations.json用于本地模拟云服务。文章通过真实案例展示如何配置静态资源直出、反向代理后端服务,并强调本地开发时的注意事项与常见问题解决路径。关键配置均提供示例代码,帮助开发者快速实现业务应用的部署与联调。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 177

SpringBoot 插件化开发详细总结

SpringBoot 插件化开发方案总结

congge 1万+

QT编程之串口通信

在Qt中实现串口通信,你可以使用Qt的类,它是从Qt 5.3开始引入的。类提供了一个跨平台的API来访问串行端口。下面是如何使用。

深之JohnChen的专栏 2747

Spring AI 项目实战(五):Spring Boot + AI + DeepSeek + Redis 实现聊天应用上下文记忆功能(附完整源码)

本文介绍了如何基于Spring Boot 3.2、Spring AI 1.0.0-M4、DeepSeek API和Redis构建具备上下文记忆功能的智能聊天应用。项目采用现代化技术栈,包括Java 17、Maven、Lombok等,实现了智能对话、会话管理、异常处理等核心功能。文章详细讲解了环境搭建、配置管理(含Redis和AI服务集成)、核心组件设计(如消息实体、控制器和服务层实现),以及完整的项目结构。该项目提供了美观的Web界面和REST API,支持对话上下文存储(通过Redis实现)和系统监控,可

博客 829
上一篇: TDengine 32位版本挖坑
下一篇: STM32 F103核心板 刷Arduino 固件
低配天才
博客等级 码龄10年 277粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值