获取可用串口名称

前言

       使用串口通信时,需要获取设备可用的串口名称,并放到UI界面组合框清单内,以供使用串口时选择。

       学习后,整理了两种可行的方法。

方法一

头文件

#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>

 前提

static const char blankString[] = QT_TRANSLATE_NOOP("SettingsDialog", "N/A");

QString description;
QString manufacturer;
QString serialNumber;

  获取可用串口

QList<QSerialPortInfo> serialPortInfos = QSerialPortInfo::availablePorts();

将所有可以使用的串口设备添加到ComboBox

for (const QSerialPortInfo &serialPortInfo : serialPortInfos)
    {
        QStringList list;
        description = serialPortInfo.description();
        manufacturer = serialPortInfo.manufacturer();
        serialNumber = serialPortInfo.serialNumber();
        qDebug() <<"serialPortInfo.portName"<<serialPortInfo.portName();
        
        list << serialPortInfo.portName()
             << (!description.isEmpty() ? description : blankString)
             << (!manufacturer.isEmpty() ? manufacturer : blankString)
             << (!serialNumber.isEmpty() ? serialNumber : blankString)
             << serialPortInfo.systemLocation()
             << (serialPortInfo.vendorIdentifier() ? QString::number(serialPortInfo.vendorIdentifier(), 16) : blankString)
             << (serialPortInfo.productIdentifier() ? QString::number(serialPortInfo.productIdentifier(), 16) : blankString);
        
//获取端口号清单放在端口号列表
ui->comboBox_serialPort->addItem(list.first(), list);

匹配端口号

ui->comboBox_serialPort->addItem(tr("custom"));

方法二

头文件

#include <QStandardItemModel>
#include <QtSerialPort/QSerialPortInfo>

 获取串口名称项目,并添加到组合框

const auto infos = QSerialPortInfo::availablePorts(); //infos = 可用的串口清单  const auto 
QStandardItemModel *model = new QStandardItemModel();//  构建一个有行列和父类的项目模型

for (const QSerialPortInfo &info : infos) {    //遍历串口信息
      if(!info.isBusy())    //如果信息是没被占用
        {
            QStandardItem *item = new QStandardItem(info.portName());//构造项目获取串口号名字
            item->setToolTip(info.description());//给项目设置工具提示:串行端口的描述字符串
            model->appendRow(item);//项目模型追加项目串口号名字行
        }
    }
ui->comboBox_serialPort_dianji_01->setModel(model);//界面串口号显示项目串口号名字

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值