初學銀河麒麟linux筆記 第七章 虛擬機器內的qt程式連線串列埠
阿新 • • 發佈:2022-12-04
QT程式可以正常在虛擬機器裡的麒麟系統裡運行了,但是無法連線串列埠,這裡進行配置
首先參考
https://blog.csdn.net/zxw1473474655/article/details/126102955
完成串列埠埠設定,但是QT程式裡還是無法識別
這裡下載cutecom工具進行測試
直接在終端輸入
sudo apt-get install cutecom
進行下載
然後開啟終端,用
sudo cutecom
命令來開啟,開啟介面如下。
在主機中配置了虛擬串列埠,並將其中一個串列埠配置給虛擬機器,在嘗試使用了ttyS0和ttyS1後,發現ttyS1可以接到主機串列埠助手發來的資料
然後開始除錯QT程式
windows的串列埠是com1~com n
而linux的串列埠是tty*,因此搜尋串列埠的程式需要改動
void XXXX::SerialPortInit() { QFile file(PORTFILENAME); if(file.exists()) // 如果檔案存在刪除,或清空 { file.remove(); } // 檢視當前的串列埠,並儲存到檔案中 int ret = system("ls /dev/tty* > serialport.dat"); if(ret < 0) { QMessageBox::information(this, QString::fromUtf8("提示"), QString::fromUtf8("串列埠異常")); } // 讀取檔案中的串列埠並新增到combobox中 if(!file.open(QIODevice::ReadOnly | QIODevice::Text)) { QMessageBox::information(this, QString::fromUtf8("提示"), QString::fromUtf8("串列埠異常")); exit(0); } // 讀取當前的串列埠並新增到combobox中 while(!file.atEnd()){ QByteArray line = file.readLine(); line.remove(0, 5); ui->cmbPortName->addItem(QString::fromLocal8Bit(line).trimmed()); } file.close(); file.remove(); }
執行之後,
可用看到有很多串列埠都能使用,這裡首先檢視是否有ttyUSB字首的串列埠,有的話直接開啟連線。如果沒有的話,可能是虛擬串列埠,這時需要在終端輸入
dmesg | grep ttyS*
此時會顯示
說明ttyS0和ttyS1可用,則可以選擇對應的串列埠開啟。
但麒麟系統的串列埠預設是ROOT許可權,每次開啟都需要終端手動開許可權,因此這裡採用
sudo usermod -a -G dialout $USER
改成普通使用者都可使用,重啟之後可正常使用串列埠