安裝 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
總結:
官方文檔是最權威學習途徑。