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
暂无评论内容