Qt从pc端获取系统的串口信息

目前我获取的是window系统上的串口信息,可以使用Qt Serial Port模块来获取系统的串口。

Qt的帮助文档:

在项目文件(.pro)里包含serialport模块

QT       += serialport

以下方法来获取系统的串口列表

#include <QSerialPortInfo>
#include <QDebug>

shangwei::shangwei(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::shangwei)
{
    ui->setupUi(this);

    //获取win系统串口——————————
    QList<QSerialPortInfo> winSerialList = QSerialPortInfo::availablePorts();
    QStringList wSerialPNameList ;
    QStringList wDescription;
    QStringList wManufacturer;
    QStringList wSerialNumber;
    QStringList wSystemLocation;

    /* foreach (声明变量, 容器) {}:声明变量是遍历过程中每次使用的变量
     **QSerialPortInfo &QSerialPortInfo::operator=(const QSerialPortInfo &other)
     * Sets the QSerialPortInfo object to be equal to other.将QSerialPortnfo对象设置为等于其他对象。
     * 我的理解是将QSerialPortnfo对象的地址记录到info里,使用foreach时就用info指向QSerialPortnfo对象并调用函数方法
    */
    foreach(const QSerialPortInfo &info,winSerialList){
        wSerialPNameList<<info.portName();
        wDescription<<info.description();
        wManufacturer<<info.manufacturer();
        wSerialNumber<<info.serialNumber();
        wSystemLocation<<info.systemLocation();
    }
    qDebug()<<wSerialPNameList;
    qDebug()<<"————";
    qDebug()<<wDescription;
    qDebug()<<"————";
    qDebug()<<wManufacturer;
    qDebug()<<"————";
    qDebug()<<wSerialNumber;
    qDebug()<<"————";
    qDebug()<<wSystemLocation;
    /*为什么直接打印会出错:debug<<winSerialList;?
      因为传递的参数(const QSerialPortInfo)与该方法或者函数定义的参数类型不匹配
      no match for 'operator<<' (operand types are 'QDebug' and 'const QSerialPortInfo')
    */
}

PC端串口信息

代码输出结果

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的示例代码,用于在QT项目中实现电子横幅的PC端开发板之间的USB转串口通信: ```c++ #include <QtSerialPort/QSerialPort> #include <QtSerialPort/QSerialPortInfo> #include <QUsbDevice> // 查找USB设备 QList<QUsbDevice> devices = QUsbDevice::devices(); if (devices.isEmpty()) { qDebug() << "No USB devices found!"; return; } QUsbDevice device = devices.first(); // 打开USB设备 if (!device.open()) { qDebug() << "Failed to open USB device!"; return; } // 将USB设备转换为串口设备 QString portName = device.portName(); QSerialPort serialPort(portName); serialPort.setBaudRate(QSerialPort::Baud9600); serialPort.setDataBits(QSerialPort::Data8); serialPort.setParity(QSerialPort::NoParity); serialPort.setStopBits(QSerialPort::OneStop); // 打开串口 if (serialPort.open(QIODevice::ReadWrite)) { qDebug() << "Serial port opened successfully!"; } else { qDebug() << "Failed to open serial port!"; } // 发送数据 QString data = "Hello, world!"; serialPort.write(data.toUtf8()); // 接收数据 while (serialPort.waitForReadyRead()) { QByteArray responseData = serialPort.readAll(); qDebug() << responseData; } // 关闭串口 serialPort.close(); // 关闭USB设备 device.close(); ``` 在这个示例代码中,我们首先使用了QT USB通信库(QUsbDevice)查找所有连接的USB设备,并且使用`open()`函数打开USB设备。然后,我们使用`portName()`函数获取USB设备的串口名称,并且使用QT串口通信库(QSerialPort)来建立和控制串口通信,并且设置串口的基本参数,比如波特率、数据位数、校验位等等。我们通过`write()`函数向开发板发送数据,通过`readAll()`函数接收开发板返回的数据,最后通过`close()`函数关闭串口和USB设备。 你需要根据实际的硬件平台和通信协议,修改代码中的设备信息串口参数,以便正确地建立和控制USB转串口通信。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值