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

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



  • 6
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
写一个QT上位机串口编程涉及到以下几个步骤: 1. **创建串口**:首先,你需要使用QT提供的串口控件或串口工具(如QSerialPortQSerialPortInfo)来打开串口。通常,这需要在你的代码中添加QT串口处理库。 ```cpp QSerialPort serial; serial.setPortName("COM1"); // 更改为你设备的串口名称 serial.setBaudRate(QSerialPort::Baud9600); // 设置波特率 serial.setDataBits(QSerialPort::Data8); // 设置数据位 serial.setParity(QSerialPort::NoParity); // 设置校验位 serial.setStopBits(QSerialPort::OneStop); // 设置停止位 serial.setFlowControl(QSerialPort::NoFlowControl); // 设置流控制 if (!serial.open(QIODevice::ReadWrite)) { qDebug() << "Could not open the serial port:" << errorString(); return; } ``` 这段代码打开了一个名为"COM1"的串口,并设置了其波特率、数据位、校验位、停止位和流控制。 2. **接收数据**:一旦串口被打开,你就可以使用readAll()方法来接收数据。当有数据到来时,这个方法会返回一个包含所有接收到的数据的字符串。 ```cpp QString receivedData = serial.readAll(); ``` 这段代码会读取并返回所有接收到的数据。 3. **发送数据**:你可以使用write()方法来发送数据。这个方法需要一个QString型的参数,这个参数就是你想要发送的数据。 ```cpp QString dataToSend = "Hello, world!"; serial.write(dataToSend.toUtf8()); ``` 这段代码会发送一个字符串"Hello, world!"。 4. **关闭串口**:在程序结束前,你应该关闭串口。否则,你可能会遇到资源泄漏的问题。 总的来说,Qt串口编程涉及到的知识包括串口的打开、关闭、读写等操作,以及对错误的处理等。这需要你熟悉Qt串口处理库和相关的API。此外,你可能还需要了解一些关于串口通信的基本知识,如波特率、数据位、校验位、停止位等概念。如果你对这些内容还不熟悉,我建议你查阅相关的文档和教程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值