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控件上显示:
{
ui->comboBox->addItem(qspinfo.portName());
}
其他函数:
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