iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Qt5串口类QSerialPort怎么实现
  • 641
分享到

Qt5串口类QSerialPort怎么实现

2023-06-30 13:06:39 641人浏览 泡泡鱼
摘要

这篇文章主要讲解了“Qt5串口类QSerialPort怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Qt5串口类QSerialPort怎么实现”吧!简述在Qt5以上提供了QtSeri

这篇文章主要讲解了“Qt5串口类QSerialPort怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Qt5串口类QSerialPort怎么实现”吧!

简述

在Qt5以上提供了QtSerialPort模块,方便编程人员快速的开发应用串口的应用程序。        

QtSerialPort模块中提供了两个c++类,分别是QSerialPort 和QSerialPortInfo。

 QSerialPort 类是Qt5封装的串口类,可与串口进行通信,提供了操作串口的各种接口。

QSerialPortInfo类是一个辅助类,可以提供计算机中可用串口的各种信息。如可用的串口名称,描述,制造商,序列号,串口16位产品编号等。利用QSerialPortInfo提供的可用串口信息,可设置串口波特率,并打开需要的串口进行通信。

使用Qt5进行串口通信大致步骤为:配置串口参数->打开串口->收发数据。

要使用QtSerialPort模块,需要在工程文件.pro文件或.pri中增加语句:

QT += serialport

Qt版本:5.12.8

1.QSerialPortInfo类   

列举出电脑上全部的串口设备,Cpp 文件如下:

#include <QCoreApplication>#include <QDebug> #include <QSerialPort>#include <QSerialPortInfo> int main(int arGC, char *argv[]){    QCoreApplication a(argc, argv);    foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts())    {        qDebug() << "Name : " << info.portName();        qDebug() << "Description : " << info.description();        qDebug() << "Manufacturer: " << info.manufacturer();        qDebug() << "Serial Number: " << info.serialNumber();        qDebug() << "System Location: " << info.systemLocation();    }    return a.exec();}

显示的结果如下:

Name :  "COM17"
Description :  "USB-SERIAL CH340"
Manufacturer:  "wch.cn"
Serial Number:  ""
System Location:  "\\\\.\\COM17"
Name :  "COM1"
Description :  "通信端口"
Manufacturer:  "(标准端口类型)"
Serial Number:  ""
System Location:  "\\\\.\\COM1"
Name :  "COM16"
Description :  "Prolific USB-to-Serial Comm Port"
Manufacturer:  "Prolific"
Serial Number:  "A400G3UXA"
System Location:  "\\\\.\\COM16"
Name :  "COM11"
Description :  "Prolific USB-to-Serial Comm Port"
Manufacturer:  "Prolific"
Serial Number:  ""
System Location:  "\\\\.\\COM11"

若USB串口每次插在不同的USB口上时获得的串口名称可能有变化,这时可以利用串口的序列号,指定程序使用某一个确定的串口。

#include <QCoreApplication>#include <QDebug>#include <QSerialPort>#include <QSerialPortInfo> int main(int argc, char *argv[]){    QCoreApplication a(argc, argv);    QSerialPortInfo com_info;    foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts())    {        if( info.serialNumber() == "A400G3UXA" )        {            com_info = info;            break;        }    }    qDebug() << "Name : " << com_info.portName();    qDebug() << "Description : " << com_info.description();    qDebug() << "serialNumber: " << com_info.serialNumber();    return a.exec();}

2.QSerialPort类

QSerialPort 类提供了操作串口的各种接口。

头文件:

class MySerial : public QObject{    Q_OBJECTpublic:    MySerial(QString portName = "ttyUSB1", QObject *parent = nullptr);    ~MySerial();    bool WriteToSerial(QByteArray cmd);    QByteArray ReadFromSerial();    bool SerialIsOpen() { return m_SerialPort->isOpen(); }    void closeSerial();signals:    void sig_SendTipInfo(bool result, QString info);    void sig_SendReadData(QByteArray data); private:    QSerialPort *m_SerialPort = nullptr;};

cpp文件:

MySerial::MySerial(QString portName, QObject *parent) :    QObject(parent){    m_SerialPort = new QSerialPort();    m_SerialPort->setPortName(portName);                //设置串行端口的名称    m_SerialPort->setBaudRate(QSerialPort::Baud115200); //波特率:115200 bps    m_SerialPort->setDataBits(QSerialPort::Data8);      //数据位:8 位    m_SerialPort->setStopBits(QSerialPort::OneStop);    //停止位:1 位    m_SerialPort->setParity(QSerialPort::NoParity);     //校验位:无    m_SerialPort->setFlowControl(QSerialPort::NoFlowControl);    qDebug() << "Port Name:" << portName;    if(!m_SerialPort->open(QIODevice::ReadWrite))    {        emit sig_SendTipInfo(false, "opened failed");        qDebug() << "open failed";    }    else qDebug() << "open successfully";} MySerial::~MySerial(){    m_SerialPort->clear();    //丢弃缓冲区中的所有字符, 同时终止挂起的读取或写入操作    m_SerialPort->close();    m_SerialPort->deleteLater();} bool MySerial::WriteToSerial(QByteArray cmd){    if(cmd.isEmpty()) return false;//    qDebug() << "[ == MySerial == ] Send Data:" << cmd.toHex();    this->m_SerialPort->clear();    this->m_SerialPort->write(cmd);    this->m_SerialPort->flush();    //尽可能多地从内部写缓冲区写入底层串口而不阻塞    this->m_SerialPort->waitForBytesWritten(10);    return true;} QByteArray MySerial::ReadFromSerial(){    QByteArray readData;    this->m_SerialPort->waitForReadyRead(5);    readData.append(this->m_SerialPort->readAll());    while (this->m_SerialPort->waitForReadyRead(5)) readData.append(this->m_SerialPort->readAll());    if(readData.isEmpty()) return QByteArray();//    qDebug() << "[ == MySerial == ] Read Data:" << readData.toHex();    return readData;} void MySerial::closeSerial(){    if(!m_SerialPort->isOpen()) return;    m_SerialPort->clear();    m_SerialPort->close();}

感谢各位的阅读,以上就是“Qt5串口类QSerialPort怎么实现”的内容了,经过本文的学习后,相信大家对Qt5串口类QSerialPort怎么实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Qt5串口类QSerialPort怎么实现

本文链接: https://www.lsjlt.com/news/329411.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Qt5串口类QSerialPort怎么实现
    这篇文章主要讲解了“Qt5串口类QSerialPort怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Qt5串口类QSerialPort怎么实现”吧!简述在Qt5以上提供了QtSeri...
    99+
    2023-06-30
  • Qt5串口类QSerialPort的实现
    目录简述1.QSerialPortInfo类   2.QSerialPort类简述 在Qt5以上提供了QtSerialPort模块,方便编程人员快速的开发应用串口...
    99+
    2024-04-02
  • C#基于SerialPort类怎么实现串口通讯
    本篇内容主要讲解“C#基于SerialPort类怎么实现串口通讯”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#基于SerialPort类怎么实现串口通讯”吧!最终效果窗体设置:using&n...
    99+
    2023-06-29
  • C#怎么实现串口通信
    本篇内容介绍了“C#怎么实现串口通信”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!框架准备出于简单考虑,首先创建一个Winform项目,本文...
    99+
    2023-07-05
  • C#中怎么实现监听串口
    C#中怎么实现监听串口,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。C#串口监听的实现在 Visual Stdio 2005中,对于串口操作Framework提...
    99+
    2023-06-17
  • Qt5 实现主窗口状态栏显示时间
    使用Qt Creator创建默认的窗体程序后,主窗口QMainWindow有statusBar状态栏,在此状态栏实时显示时间可以使用下面方法实现: mainwindow.h文件内容:...
    99+
    2024-04-02
  • linux串口读写异步怎么实现
    在Linux系统中,可以使用文件IO的方式来实现串口的读写操作。具体的步骤如下:1. 打开串口设备文件: 使用`open()`函数来...
    99+
    2023-09-16
    linux
  • 怎么使用Java实现串口通信
    要使用Java实现串口通信,可以使用Java的RXTX库。以下是一个简单的示例代码: import gnu.io.CommPort;...
    99+
    2023-10-22
    Java
  • C#怎么实现简单串口通讯
    本篇内容主要讲解“C#怎么实现简单串口通讯”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#怎么实现简单串口通讯”吧!参数设置界面代码:using System;using ...
    99+
    2023-06-29
  • C#基于SerialPort类实现串口通讯详解
    本文实例为大家分享了C#基于SerialPort类实现串口通讯的具体代码,供大家参考,具体内容如下 最终效果 窗体设置: using System; using System....
    99+
    2024-04-02
  • java怎么创建接口实现类
    这篇“java怎么创建接口实现类”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“java怎么创建接口实现类”文章吧。本教程操作...
    99+
    2023-06-30
  • Redis中怎么实现字符串类型
    Redis中怎么实现字符串类型,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Redis是一个基于键-值存储的数据库。Redis中使用字符串作为...
    99+
    2024-04-02
  • java中List接口怎么实现类
    这篇文章主要讲解了“java中List接口怎么实现类”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“java中List接口怎么实现类”吧!List接口介绍—ArrayList有序、可重复线程不...
    99+
    2023-06-22
  • c#模拟串口通信SerialPort怎么实现
    这篇“c#模拟串口通信SerialPort怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“c#模拟串口通信Serial...
    99+
    2023-06-30
  • Qt5如何实现主窗口状态栏显示时间
    这篇文章给大家分享的是有关Qt5如何实现主窗口状态栏显示时间的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。使用Qt Creator创建默认的窗体程序后,主窗口QMainWindow有statusBar状态栏,在此...
    99+
    2023-06-14
  • 怎么​使用Java实现串口SerialPort通讯
    要使用Java实现串口通讯,你可以使用Java的RXTX库。下面是一个简单的示例代码: 首先,你需要下载并安装RXTX库。你可以...
    99+
    2023-10-23
    Java
  • Python怎么使用Qt5实现水平导航栏
    本篇内容主要讲解“Python怎么使用Qt5实现水平导航栏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python怎么使用Qt5实现水平导航栏”吧!在 Qt5 中可以使用 QWidget 包含...
    99+
    2023-07-05
  • Python 串口读写实现
    #Python 串口读写实现 如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:12951803 1.安装pyserial https://pypi.python.org/pypi/p...
    99+
    2023-01-31
    串口 Python
  • Python3怎么利用Qt5实现简易的五子棋游戏
    这篇文章主要讲解了“Python3怎么利用Qt5实现简易的五子棋游戏”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python3怎么利用Qt5实现简易的五子棋游戏”吧!要写出一个五子棋游戏,...
    99+
    2023-06-30
  • 怎么在TypeScript中实现接口的类
    这篇文章主要介绍“怎么在TypeScript中实现接口的类”,在日常操作中,相信很多人在怎么在TypeScript中实现接口的类问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么在TypeScript中实现接...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作