QT 下获取Linux系统的可用串口号,并在下拉框 comboBox 控件上显示出来

1. 先在UI添加一个下拉框控件 comboBox

  

 2. 添加头文件

#include <QSerialPortInfo>
#include <QSerialPort>

 3.在 .pro 文件最后加上下面一行代码

QT += serialport //测试必须要加这个,不然会报各种找不到匹配的函数的错误

4.获取串口号,并在下拉框显示

    ui->comboBox->clear();   //清空下拉框的显示
    foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())   //通过 QSerialPortInfo 查询 LInux 系统下的可用串口号;forreach 是增强的for循环,适用于循环次数未知的情况
{

    ui->comboBox->addItem("/dev/"+info.portName()); //把获取到的串口号显示在下拉框,“/dev/”是串口节点,获取串口号是没办法获取到这部分的,只能获取到 “ttyS*” 这些,为了显示完整这里加了“/dev/”上去
    }

5.获取显示在下拉框的串口号

    QString myCom = ui->comboBox->currentText();  //获取下拉框串口号
    /* 把QString类型转换为string类型,QT的字符串类型跟C语言的字符串类型不可用直接引用 */
    char* myComString;
    QByteArray tran = myCom.toLatin1();
    myComString = tran.data();
/* 后面要用open函数打开串口的话,直接调用 myCom 作为串口号掉用即可 */

 6.运行结果

  

关于具体的Linux下的串口通信可以参考我的另一篇博客:https://www.cnblogs.com/xingboy/p/14416196.html

注意:提示错误 QT Unknown module(s) in QT: serialport 的解决方法如下:

  主要原因是你的QT安装的时候没有安装到该串口插件,在控制台输入以下命令即可 

sudo apt-get install libqt5serialport5
sudo apt-get install libqt5serialport5-dev
原文地址:https://www.cnblogs.com/xingboy/p/14523998.html