【Qt5.8】Qt5.8中串口信息类QSerialPortInfo

00. 目录

01. QSerialPortInfo简介

QSerialPortInfo类提供已存在串口设备的信息。使用QSerialPortInfo类的静态成员函数生成QSerialPortInfo对象的链表。链表中的每个QSerialPortInfo对象代表一个串口,每个串口可以使用端口名、系统定位、描述、制造商查询。QSerialPortInfo类对象也可以用做QSerialPort类的setPort()成员函数的参数。

02. QSerialPortInfo类成员函数

//构造函数
QSerialPortInfo()
QSerialPortInfo(const QSerialPort &port)
QSerialPortInfo(const QString &name)
QSerialPortInfo(const QSerialPortInfo &other)

//析构函数
~QSerialPortInfo()

//返回当前系统可用串口的链表
[static] QList<QSerialPortInfo> QSerialPortInfo::availablePorts()

//如果串口可用,返回串口的描述信息
QString QSerialPortInfo::description() const

//如果有一个合法的16位生产码,返回true
bool QSerialPortInfo::hasProductIdentifier() const

//如果有一个合法的16位制造商编码,返回true
bool QSerialPortInfo::hasVendorIdentifier() const

//如果串口当前正忙,返回true
bool QSerialPortInfo::isBusy() const

//如果串口可用,返回串口的制造商的名字
QString QSerialPortInfo::manufacturer() const

//返回串口的名字
QString QSerialPortInfo::portName() const

//如果串口可用,返回串口的16位的生产编码
quint16 QSerialPortInfo::productIdentifier() const

//如果串口可用,返回串口的序列号
QString QSerialPortInfo::serialNumber() const

//返回目标平台支持的可用的标准波特率的链表
[static] QList<qint32> QSerialPortInfo::standardBaudRates()

//使用other交换QSerialPortInfo对象
void QSerialPortInfo::swap(QSerialPortInfo &other)

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

//如果串口可用,返回16位的制造商编码
quint16 QSerialPortInfo::vendorIdentifier() const

03. 程序示例一

#include "widget.h"
#include <QDebug>
#include <QList>
#include <QtSerialPort/QSerialPortInfo>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    //获取当前系统下所有可以用的串口
    QList<QSerialPortInfo> serialPortInfo = QSerialPortInfo::availablePorts();
    qDebug() << "串口的个数: " << serialPortInfo.count();

    //显示目标串口支持的波特率列表
    QList<qint32> baudRates = QSerialPortInfo::standardBaudRates();
    qDebug() << baudRates;

    qDebug() << "串口的描述:" << serialPortInfo.at(0).description();
    qDebug() << "hasProductIdentifier(): " << serialPortInfo.at(0).hasProductIdentifier();
    qDebug() << "hasVendorIdentifier(): " << serialPortInfo.at(0).hasVendorIdentifier();
    qDebug() << "isBusy: " << serialPortInfo.at(0).isBusy();
    qDebug() << "manufacturer: " << serialPortInfo.at(0).manufacturer();
    qDebug() << "portName: " << serialPortInfo.at(0).portName();
    qDebug() << "productIdentifier: " << serialPortInfo.at(0).productIdentifier();
    qDebug() << "serialNumber: " << serialPortInfo.at(0).serialNumber();
    qDebug() << "vendorIdentifier: " << serialPortInfo.at(0).vendorIdentifier();
    qDebug() << "systemLocation: " << serialPortInfo.at(0).systemLocation();

}

Widget::~Widget()
{

}

运行结果:
这里写图片描述

04. 程序示例二

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QTextStream out(stdout);
    const auto serialPortInfos = QSerialPortInfo::availablePorts();

    out << QObject::tr("Total number of ports available: ") << serialPortInfos.count() << endl;

    const QString blankString = QObject::tr("N/A");
    QString description;
    QString manufacturer;
    QString serialNumber;

    for (const QSerialPortInfo &serialPortInfo : serialPortInfos) {
        description = serialPortInfo.description();
        manufacturer = serialPortInfo.manufacturer();
        serialNumber = serialPortInfo.serialNumber();
        out << endl
            << QObject::tr("Port: ") << serialPortInfo.portName() << endl
            << QObject::tr("Location: ") << serialPortInfo.systemLocation() << endl
            << QObject::tr("Description: ") << (!description.isEmpty() ? description : blankString) << endl
            << QObject::tr("Manufacturer: ") << (!manufacturer.isEmpty() ? manufacturer : blankString) << endl
            << QObject::tr("Serial number: ") << (!serialNumber.isEmpty() ? serialNumber : blankString) << endl
            << QObject::tr("Vendor Identifier: ") << (serialPortInfo.hasVendorIdentifier() ? QByteArray::number(serialPortInfo.vendorIdentifier(), 16) : blankString) << endl
            << QObject::tr("Product Identifier: ") << (serialPortInfo.hasProductIdentifier() ? QByteArray::number(serialPortInfo.productIdentifier(), 16) : blankString) << endl
            << QObject::tr("Busy: ") << (serialPortInfo.isBusy() ? QObject::tr("Yes") : QObject::tr("No")) << endl;
    }

    return 0;
}

运行结果:
这里写图片描述

© 版权声明
THE END
喜欢就支持一下吧
点赞535 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容