1. 程式人生 > 其它 >初學銀河麒麟linux筆記 第七章 虛擬機器內的qt程式連線串列埠

初學銀河麒麟linux筆記 第七章 虛擬機器內的qt程式連線串列埠

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

改成普通使用者都可使用,重啟之後可正常使用串列埠