Qt中串口通信

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

Qt中提供QSerialPort类实现串口通信。

示例代码:

//serialportdemo.h
#include <QMainWindow>
#include <QDebug>
#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>

QT_BEGIN_NAMESPACE
namespace Ui { class SerialPortDemo; }
QT_END_NAMESPACE

class SerialPortDemo : public QMainWindow
{
    Q_OBJECT

public:
    SerialPortDemo(QWidget *parent = nullptr);
    ~SerialPortDemo();

private slots:
    void readData();

    void on_openSerialBtn_clicked();

    void on_sendBtn_clicked();

private:
    Ui::SerialPortDemo *ui;
    QSerialPort *serial;
    bool SerialIsOpen = false;
};

//serialportdemo.cpp
#include "serialportdemo.h"
#include "ui_serialportdemo.h"

SerialPortDemo::SerialPortDemo(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::SerialPortDemo)
{
    ui->setupUi(this);
    foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts()){
        QSerialPort serial;
        serial.setPort(info);
        if(serial.open(QIODevice::ReadWrite)){
            ui->portBox->addItem(serial.portName());
            serial.close();
        }
    }
    ui->baudBox->setCurrentIndex(0);
}

SerialPortDemo::~SerialPortDemo()
{
    delete ui;
}

void SerialPortDemo::on_openSerialBtn_clicked()
{
    if(!SerialIsOpen){
        serial = new QSerialPort;
        serial->setPortName(ui->portBox->currentText());
        serial->open(QIODevice::ReadWrite);
        serial->setBaudRate(QSerialPort::Baud115200);
        switch (ui->dataBox->currentIndex()) {
        case 0:
            serial->setDataBits(QSerialPort::Data8);
            break;
        default:
            break;
        }
        switch (ui->checkBox->currentIndex()) {
        case 0:
            serial->setParity(QSerialPort::NoParity);
            break;
        default:
            break;
        }
        switch (ui->stopBox->currentIndex()) {
        case 0:
            serial->setStopBits(QSerialPort::OneStop);
            break;
        case 1:
            serial->setStopBits(QSerialPort::TwoStop);
            break;
        default:
            break;
        }
        serial->setFlowControl(QSerialPort::NoFlowControl);

        SerialIsOpen = true;
        ui->portBox->setEnabled(false);
        ui->dataBox->setEnabled(false);
        ui->checkBox->setEnabled(false);
        ui->stopBox->setEnabled(false);
        ui->baudBox->setEnabled(false);
        ui->openSerialBtn->setText("Close");
        QObject::connect(serial, &QSerialPort::readyRead, this, &SerialPortDemo::readData);
    }else{
        serial->clear();
        serial->close();
        serial->deleteLater();

        SerialIsOpen = false;
        ui->portBox->setEnabled(true);
        ui->dataBox->setEnabled(true);
        ui->checkBox->setEnabled(true);
        ui->stopBox->setEnabled(true);
        ui->baudBox->setEnabled(true);
        ui->openSerialBtn->setText("Open");
    }

}

void SerialPortDemo::on_sendBtn_clicked()
{
    serial->write(ui->txtWrite->toPlainText().toLatin1());
}

void SerialPortDemo::readData(){
    QByteArray buf;
    buf = serial->readAll();
    if(!buf.isEmpty()){
        QString str = buf;
        ui->txtRead->append(str);
    }
    buf.clear();
}

UI界面:

QT实现串口通信 要实现串口通信,需要知道串口通信需要的信息 主要参数有:波特率、校验位、数据位、停止位、控制流 主要操作有:串口的打开和关闭、刷新设备串口、接发数据、开关显示灯等。 实现效果如图: 最后附赠完整源码。 第一步:在头文件中引入 QtSerialPort 类的两个头文件(必须引入) // 引入串口通信的两个头文件(第一步) #include <QtSerialPort/QSerialPort> // 提供访问串口的功能 #include <QtSerialPo 阅读详情

相关推荐

Qt实现串口通信

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

m0_60352504的博客 2万+

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万+

Qt5实现串口通信

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

WAmani的博客 1万+

【Qt5.8】Qt5.8中串口类QSerialPort

00. 目录 00. 目录 01. 串口通信基础 02. QtSerialPort模块简介 03. QSerialPort简介 04. QSerialPort类成员函数 05. 参考示例 01. 串口通信基础 串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一...

C/C++软件工程师、嵌入式软件工程师、物联网研发工程师、C/C++讲师、物联网讲师、嵌入式讲师、鸿蒙讲师---欢迎大家一起交流(私信添加博主微信) 1万+

QT 串口通信详解

1、前言

lml521lml927的博客 7032

Qt串口通信

一、简介随着物联网、智能化的浪潮,加上嵌入式设备硬件资源的限制,越来越多的通信模块开始倾向于串口,比如WiFi模块、BT模块、ZigBee模块等等。 串口的特点:1、通用。由于串口的悠久历史,就连8位机51都必含串口。2、易用易调试。硬件上来说,Rx/Tx/GND搞定;软件上,读写串口同样相当简易。而且,由于串口的普及,我们可以极其方便的结合PC上的串口工具辅助调试。3、稳定。基于以上原因,在开发...

u013686019的专栏 2216

Qt串口通信,QSerialPort的使用

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

龚建波 2万+

QT开发--串口通信

qt5

荒野 4118

Qt实现串口通信(C++实现串口通信小助手)---串口收发及串口数据解码、串口通信模拟器。

Qt实现串口通信示例 前言:以下串口通信示例并不完全属于原创,参考了现有网上前辈们的资源,最后结合部分个人的思想,所以下述博客会将实现的原理及代码的案例进行公开。 这里我们先上效果图: 一、串口通信简介 串口通信是上下位机进行通信的一种常用的通信协议...

zijinmu69的博客 4万+

【全开源】废品回收垃圾回收小程序APP公众号源码PHP版本

废品回收小程序是一款基于移动端的应用程序,它提供了废品分类、预约回收、积分兑换等多种功能,帮助用户更方便地进行废品回收,同时还能兑换到一些小礼品或优惠券,让回收变得更加有趣和有价值。随着环保意识的逐渐提高,废品回收成为了我们日常生活中的重要一环。但是,如何更方便、高效地进行废品回收呢?今天,我要向大家推荐一款超级实用的工具——废品回收小程序!废品回收小程序不仅让我们的生活更加便捷,还让我们为环保事业贡献了一份力量。让我们一起行动起来,用废品回收小程序为我们的家园添一抹绿色吧!

2401_84593614的博客 1359

用QT实现简单的串口通信

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

weixin_44383635的博客 7616

AI驱动视频剪辑自动化:cutcli命令行工具重塑工作流

视频剪辑自动化是提升内容生产效率的关键技术,其核心原理在于通过程序化指令替代手动操作,将创意执行过程代码化。这项技术的价值在于能够将创作者从重复性劳动中解放,实现批量化、标准化的视频内容生产,尤其适用于社交媒体运营、产品宣传等高频产出场景。通过封装专业软件(如剪映/CapCut)的底层草稿格式,自动化工具在保证工业级渲染质量的同时,提供了可编辑的中间态,为AI智能体(Agent)与生产工具的结合提供了清晰接口。本文以cutcli为例,深入探讨了如何通过命令行工具和AI助手,构建从自然语言指令到可编辑视频草稿

weixin_27210125的博客 1063

Qt实现串口通信总结

注意: Qt5发布之前,Qt实现串口通信一般是采用第三方类库qextserialport。Qt5发布后自带了QtSerialPort 能够支持串口通信。 1、Qextserialport类介绍      在Qt5之前的版本中并没有特定的串口控制类,现在大部分人使用的是第三方写的qextserialport类,本文章主要是讲解怎样利用此类实现串口通信。 2、文件下载地址:      http

believe的专栏 4万+

python解析通达信dat与blk数据文件【附源码】

本文介绍了一个完整的通达信金融数据解析器项目,该项目攻克了通达信专有二进制文件格式解析的技术难题。项目采用模块化架构,从基础二进制解析到增强数据分类,最终实现智能语义化列名生成,形成完整的数据处理链路。核心技术包括自适应编码检测、智能数据类型推断和基于业务规则的语义化处理,解决了逆向工程、多编码兼容性等挑战。项目成果显著,解析成功率达100%,数据可读性大幅提升,开发效率提高50%,为量化交易、可视化分析等场景提供了可靠数据支持。该方案不仅具备技术创新性,更具有实际工程应用价值,为金融数据分析领域提供了可复

qq_36224726的博客 2688

yolov26改进 | 融合改进篇 | 基于 MobileNetV4 和双向特征金字塔网络BiFPN的融合改进(全网独家首发)

本文介绍BiFPN与MobileNetV4融合改进的YOLOv26。许多模块单独使用能够涨点,但直接叠加后可能因功能重复、通道不匹配、尺度冲突而掉点,因此融合前必须理解各模块作用。MobileNetV4利用UIB与Mobile MQA构建轻量主干,提升特征提取能力;BiFPN通过可学习权重完成双向多尺度融合,强化大、中、小目标的信息交互。两者优化Backbone与Neck,功能互补、结构冲突较少。本文提供代码、配置、消融对比及Codex修改思路,MobileNetV4也可替换其他主干,便于组合实验与二次创新

Snu77的博客 240

使用QT实现串口通信

使用QT调用库函数实现简单的串口通信

m0_62683461的博客 2943

[Python从零到壹] 十三.机器学习之聚类算法四万字总结全网首发(K-Means、BIRCH、树状聚类、MeanShift)

欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界。所有文章都将结合案例、代码和作者的经验讲解,真心想把自己近十年的编程经验分享给大家,希望对您有所帮助,文章中不足之处也请海涵。Python系列整体框架包括基础语法10篇、网络爬虫30篇、可视化分析10篇、机器学习20篇、大数据分析20篇、图像识别30篇、人工智能40篇、Python安全20篇、其他技巧10篇。您的关注、点赞和转发就是对秀璋最大的支持,知识无价人有情,希望

杨秀璋的专栏 2万+

Qt 串口通信(QSerialPort)

与下位机,单片机通信少不了使用串口进行通信,Qt 也提供了串口通信的类 QSerialPort https://doc.qt.io/qt-5.9/qserialport.html //小伙伴们具体去看文档 使用的时候在 pro 添加这句导入模块 QT += serialport 1.连接串口 第一步就是 要先获取到 可连接的所有的串口的名字 QSerialPortInfo::ava...

shenmingyi.blog.youkuaiyun.com 17万+

kylinos-SP3的软件包降级到V10-SP1中的版本

如果想再次回退到原来版本,将repo改为原来的SP3版本,然后执行yum history 查看ID号,执行yum history rollback ID就可以恢复了。此时我们发现已安装的版本是1.32-2.ky10,而sp1网络源里的版本是1.30-11.ky10,我们将降级安装网络源中的低版本软件包。近期有个客户想要把kylinos-V10-sp3的软件包降级到kylinos-V10-SP1的版本。3、以tar包为例,查看已安装版本及网络源中其他版本。1、查看系统版本,确认是V10-SP3。

太极淘的博客 1103

GD32F4xx 移植agile_modbus软件包与电能表通信

GD32F4XX 移植agile modbus软件包实现与DTSU电能表通信调试记录

madao1234的博客 1304
上一篇: 经典排序(7+3)
下一篇: Qt创建设计师自定义控件(Qt Designer自定义控件)
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值