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