Qt 5.12 串口調試助手

安裝 Qt 開發環境

靜態編譯和動態編譯

        如果你選擇在 Windows 上開發 Qt 應用,官方推薦的方式是動態編譯的(即下載一個 exe 的安裝應用程序,然後一直安裝就行了),這種方式最後在發佈最後的應用程序的時候會有一大堆的 dll 動態鏈接庫,打包發給需要使用的人的時候不太方便(也可以使用加殼軟件,比如 Engima Virtual Box,但是360等 電腦管家會認爲加殼後的 exe 文件這是病毒,目前我也沒有找到解決辦法,歡迎大家補充)。靜態編譯則是下載 Qt 源碼,在自己的電腦上編譯,這個過程很漫長(我用自己的筆記本電腦 I5 處理器,編譯 5.12 版本的 Qt 大概用了20 個小時),但是在使用的時候發現報錯了(同樣的代碼使用動態編譯沒問題,靜態編譯報錯),這肯定是某些地方的配置有問題,和 Qt 沒關係。據說使用靜態編譯的方法,最後生成的 release 版本,一個單獨的 exe 文件便可以在所有的電腦上運行,只是文件相對比較大。

安裝動態編譯環境

        從官網下載對應版本的安裝包進行安裝即可,安裝的過程中會讓你選擇組件。

MinGW :選中,這是在 windows 上面開發會用的一個工具,類似於 cmd 控制檯。

MSVC:如果你選擇使用 VS2017(以後或許有更新的版本,或者是之前的版本)作爲你的集成開發環境的話,勾選一個適合你自己電腦版本的就行了。

Strawberry :樹莓派應用開發工具。

Qt Creator :選中,這是Qt Creator集成開發環境。

所有以 Qt 開頭的組件都勾選上。

        Qt Creator 是官方推薦的集成開發環境,導入所有的庫沒有任何問題,只是即使你已經選擇了MinGW,還是會無響應,出現的次數不多,這應該是bug。必須要註銷或者重啓電腦後再次打開即可。VS2017不會無響應,但是在導入一些庫的時候很麻煩,比如 QSerialPort ,各種百度導入進去後效果還是不好,總是有各種稀奇古怪的錯誤。所以,個人推薦使用 Qt Creator,而且相對來說網上的解決辦法更多。

 

我的開發環境:Win10,Qt Creator集成開發環境,Qt 版本5.12。(動態編譯)

一、修改項目的 .pro 文件

開發串口調試助手第一件事就是要在工程的 .pro 文件夾下添加:

QT += serialport

官方文檔: https://doc.qt.io/qt-5/qtserialport-index.html

二、導入 QSerialPort 和 QSerialPortInfo 庫

QSerialPort:  https://doc.qt.io/qt-5/qserialport.html

QSerialPortInfo:https://doc.qt.io/qt-5/qserialportinfo.html

Qt 所有的庫:https://doc.qt.io/qt-5/classes.html

三、界面佈局

1、打開項目中的 .ui 文件拖動編輯(具體控件的用法從上面的庫中找)。

2、如果最終生產界面可以隨着拖動邊框而發生變化,請設置最外層佈局爲柵格佈局。(我的界面)

3、最開始採用C++代碼設計頁面,使用垂直佈局和水平佈局相互嵌套,但是無效。現在我認爲失效的原因是我沒有設置頂層窗口的佈局方式。如果需要設計應用界面的大小可以隨着頂層窗口的改變而改變,設置頂層佈局爲柵格佈局。

4、合理設置每個控件的 SizePolicy 才能達到理想的效果。在 Qt designer 中單擊需要更屬性的控件,右側會出現屬性欄,直接在裏面設置即可。

5、個人認爲使用 Qt designer 佈局比手寫代碼佈局更方便,直觀。 

四、串口的啓動過程

1、關於串口的啓動過程,在 QSerialPort 這個類中有很詳盡的描述:

(1)、通過 QSerialPortInfo 這個類獲取可用的串口號

(2)、給串口設置串口號

(3)、打開串口開關

(4)、配置串口傳輸信息(設置波特率等)

(5)、完成上述配置便可以通過串口收發數據了

2、實時更新可用串口

主要涉及到實時獲取外接串口設備的連接情況,並實時更新。下面是我用的一個方法,此方法需要使用 QTimer 開啓定時器實時刷新,需要和定時器信號連接。

//更新串口號
void MainWindow::UpdateSerialPortNumber(){

     QList<QSerialPortInfo>  infos = QSerialPortInfo::availablePorts();
     if(infos.isEmpty())
     {
         ui->cb_serial_port_number->clear();
         ui->cb_serial_port_number->addItem("暫無可用串口");
         return;
     }
    foreach (QSerialPortInfo info, infos) {
        my_serial_port_->setPortName(info.portName());
        ui->cb_serial_port_number->clear();
        ui->cb_serial_port_number->addItem(info.portName() + " Serial");
    }
}

 3、設置傳輸方式等很簡單,不再贅述。

五、應用程序打包

1、設置構建方式爲release。運行或者重新構建都可以。

2、找到 release 版本的存儲目錄,將 項目.exe 拷貝至一個單獨的文件夾。

3、打開 MinGW,使用命令切換到含有 項目.exe 的文件夾中。

4、使用如下命令,會在當前文件夾中生成執行此應用所需的全部 .dll 文件。

windeployqt XXX.exe

5、拷貝此文件夾至任意電腦,雙擊項目的 exe 文件,即可打開此項目。

 

下載地址:https://github.com/Chamico/QT-Serial-Port-Debugging-Assisant

總結:

官方文檔是最權威學習途徑。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章