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