关闭

QT串口编程的相关类(QSerialPortInfo)

标签: QT串口编程QT Serial PortQSerialPortInfoQSerialPortInfo实例QT串口类
3761人阅读 评论(0) 收藏 举报
分类:

QT Serial Port相关的类只有两个QSerialPortInfo(#include<QSerialPortInfo>) 和QserialPort(#include<QSerialPort>)

先来介绍QSerialPortInfo

1:QSerialPortInfo(#include<QSerialPortInfo>) 

该类是一个串口的辅助类类,提供主要是提供系统已经存在串口的信息。

该类中的静态函数(QList<QSerialPortInfo> availablePorts()后面详细介绍)生成了一个QSerialPortInfo对象的QList。

在该QList中的每个QSerialPortInfo对象分别对应于各个可用端口的信息(主要包括端口号(com),系统的位置,以及串口类型,厂商等信息)

可以调用静态该函数来获取系统的每一个可用端口信息QSerialPortInfo成员信息可以被调用于使用在QSerialPort设置串口


跨平台是QT的优势,该类支持几乎所有的主流平台,其QT WIKI截图如下:



下面来详细介绍QSerialPortInfo的成员以及功能

其成员public函数分为几类

1:构造函数

QSerialPortInfo()
QSerialPortInfo(const QSerialPort & port)
QSerialPortInfo(const QString & name)
QSerialPortInfo(const QSerialPortInfo & other)

以上四个构造函数是在定义该类的对象的时候接受不同的参数创建对象。

2:析构函数

~QSerialPortInfo()  

3:端口信息函数

该类函数主要是返回该对象所对应的端口信息。

QString description() const    该函数返回的是一个QString数据类型,表示对象所对应的端口类型,例如是标准的通信端口,还是USB转串口等

bool hasProductIdentifier() const 判断该端口是否有有效的的16位产品编码,有的话返true否则返回false

bool hasVendorIdentifier() const 判断该端口是否有有效的16位产品供应商的编码,有的话返true否则返回false

boolisBusy() const   判断该端口是否被被占用,有的话返true否则返回false

boolisNull() const  判断该对象是否有一个确定的对应关联端口,如果是有的话返true否则返回false

QStringmanufacturer() const  返回生产厂商的信息

QStringportName() const   返回对象对应的端口号类型,端口号类型用QString数据类型表示,若是没有有效厂家信息,返回的是空QString

quint16productIdentifier() const  返回端口的16位序列号,若是没有,返回的是0

QStringserialNumber() const  返回用QSrting表示的的序列号  是在5.3以后的版本才有的

void swap(QSerialPortInfo & other) 该对象与 other引用所指向的对象互换相关信息,该函数的运行非常快,而且不会失败。

QString systemLocation() const  返回串口系统的位置

quint16 vendorIdentifier() const返回该端口是否有有效的16位产品供应商的编码,若是没有则返回0

4:static函数

static函数为类的全部服务而不是为某一个类的具体对象服务。static成员函数与静态数据成员一样,都是类的内部实现,属于类定义的一部分。

QList<QSerialPortInfo>availablePorts()    该静态函数返回的是QSerialPortInfo对象的QList,该QList中的QSerialPortInfo对象对应于该系统的可用的端口。

调用该函数可以返回可用的端口

例如,该例子将每一个可用的端口的端口名打印出来,在comboBox控件上显示

 foreach (const QSerialPortInfo &qspinfo, QSerialPortInfo::availablePorts())
    {
        ui->comboBox->addItem(qspinfo.portName());
    }   
QList<qint32> standardBaudRates()  该函数返回的是当前串口标准的可用的波特率

其他函数:

QSerialPortInfo &operator=(const QSerialPortInfo & other)

如运算符重载函数等


实例:

在mainwindows上从comboBox显示可用端口号以及textEdit上显示端口号的具体信息

我的试验环境实在笔记本上用的是两个USB转串口设备,设备在设备管理器的显示信息如图:


新建qtwidget工程 选择mainwindow为主窗口

在mainwindow.cpp中添加如下代码

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    foreach (const QSerialPortInfo &qspinfo, QSerialPortInfo::availablePorts())
       {

           ui->comboBox->addItem(qspinfo.portName());
           ui->textEdit->append("portname   " + qspinfo.portName());
           ui->textEdit->append("description:   " + qspinfo.description());
           ui->textEdit->append("manufacture    "+ qspinfo.manufacturer());
           ui->textEdit->append("serialnumber   "+ qspinfo.serialNumber());
           ui->textEdit->append("systemlocation "+qspinfo.serialNumber());
       }

}
然后运行代码会得到如截图结果



源码连接为http://download.csdn.net/detail/mcu_tian/8426653



0
0
查看评论

Qt 串口类QSerialPort 使用笔记

Qt 串口类QSerialPort 使用笔记   虽然现在大多数的家用PC机上已经不提供RS232接口了。但是由于RS232串口操作简单、通讯可靠,在工业领域中仍然有大量的应用。Qt以前的版本中,没有提供官方的对RS232串口的支持,编写串口程序很不方便。现在好了,...
  • liyuanbhu
  • liyuanbhu
  • 2015-05-06 20:37
  • 43240

初次使用QT5串口类QSerialPort

因为工作需要,现在正在学习Qt的串口通信。Qt4的话需要使用第三方类,使用起来也非常简单,只需要把对应的文件添加到自己的项目中就可以了,我参考的是Qt论坛上的demo,刘大师和yafei的demo都非常详细,网上都可以下载到。不过,Qt5添加了串口类,使用起来就更方便了。   ...
  • zbw1185
  • zbw1185
  • 2016-05-25 11:24
  • 9992

QSerialPort,QSerialPortInfo使用

Qt操作串口的两个类便是QSerialPort和QSerialPortInfo 从类名可以知道QSerialPortInfo是用来获取串口信息的类,那么QSerialPort便是直接操作串口的类。QSerialPortInfo
  • Devout_programming
  • Devout_programming
  • 2017-12-23 20:46
  • 79

Qt之串口类QSerialPort使用笔记

本文转载自:http://blog.csdn.net/liyuanbhu/article/details/45540825 虽然现在大多数的家用PC机上已经不提供RS232接口了。但是由于RS232串口操作简单、通讯可靠,在工业领域中仍然有大量的应用。Qt以前的版本中,没有提供官方的对RS232...
  • u010780613
  • u010780613
  • 2016-01-22 10:36
  • 3947

Qt中的串口编程之二

Qt Serial Port【概述】   Qt Serial Port提供了基本的功能,包括配置,I/O操作,获取和设置RS-232引脚的信号。本模块暂不支持如下特性: *终端的特性,例如回显,控制CR/LF等等 *文本模式 *配置读操作的超时和延时 *当RS-232引脚...
  • chenlong12580
  • chenlong12580
  • 2013-06-01 11:13
  • 36187

Qt 串口类QSerialPort 学习笔记

一、串口类简介 当前的QtSerialPort模块中提供了两个C++类,分别是QSerialPort 和QSerialPortInfo。   QSerialPort 类提供了操作串口的各种接口。   QSerialPortInfo 是一个辅助...
  • tuwenqi2013
  • tuwenqi2013
  • 2016-09-12 19:47
  • 4076

QSerialPort处理串口通信简单示例

串口通信需要添加Qt相关库: QT += serialport 大概是这样的。首先可以利用QSerialPortInfo读取设备相关信息,然后我们用容器把他们装起来,再利用QSerialPort与端口进行输入输出交互。 读取设备信息时,可以这样做: foreach (const QSerial...
  • u014597198
  • u014597198
  • 2017-05-05 14:01
  • 972

QT串口编程的相关类2(QSerialPort)

QT Serial Port相关的类只有两个QSerialPortInfo(#include) 和QserialPort(#include) 在http://blog.csdn.net/mcu_tian/article/details/43527385介绍过QSerialPortInfo串口辅助类 ...
  • mcu_tian
  • mcu_tian
  • 2015-02-06 12:47
  • 3797

QT5.51使用QSerialPort

就和TCP差不多。初始化一下。连一个槽函数读数据 init() { _serialPort = new QSerialPort(this);//QSerialPort* _serialPort;    _serialPort->setBaudRate(19200);...
  • qq_35158695
  • qq_35158695
  • 2018-01-08 15:58
  • 36

QT与python的串口通信

由于最近接触到承重传感器,起初基于Python开发串口通信,在QT中通过process调用Python的串口程序,结果发现效果不是太好。最后转手在Qt中直接使用Qt的串口接口,达到了理想的效果。 Python接口      在python中需要使用pyserial接...
  • lovelyaiq
  • lovelyaiq
  • 2017-06-01 09:34
  • 973
    个人资料
    • 访问:78429次
    • 积分:1281
    • 等级:
    • 排名:千里之外
    • 原创:49篇
    • 转载:4篇
    • 译文:0篇
    • 评论:1条
    文章分类