qt---串列埠共享庫的製作

lbsljn發表於2015-04-30
qt--工具篇之串列埠


版權宣告

該文章原創於Qter開源社群www.qter.org),作者lxdlbs371,轉載請註明出處!


概述:
      這裡介紹的是把第三方寫的qextserialport類編譯成共享庫,然後直接呼叫相關類和成員函式。這樣寫的原因是在即將開始的物聯網探索裡,幾乎所有的實驗都是通過串列埠通訊來分析相關物聯網模組標準和協議的。
論壇裡面已經有了兩篇關於QT串列埠通訊的專題,所以這裡就不在詳細介紹了,只要會用就可以。
特別說明:這裡我引用了yafeilinux站長的“QCom跨平臺串列埠除錯助手軟體”的介面程式。特此感謝。


環境及工具:
作業系統:win7

qt-opensource-windows-x86-mingw491_opengl-5.4.1

qextserialport-1.2rc


第一步:編譯qextserialport共享庫
1:把下載好的qextserialport-1.2rc.zip解壓:
BaiduShurufa_2015-4-30_21-33-40.png 

2:開啟Qt Creator, 開啟“檔案”選項,選擇“開啟檔案或專案” 
BaiduShurufa_2015-4-30_21-32-8.png 

在qextserialport-1.2rc資料夾下找到qextserialport.pro,開啟。
 

3:編輯“qextserialport.pro”專案檔案,在該檔案內新增存放共享庫的位置。
BaiduShurufa_2015-4-30_21-42-36.png 

    在“qextserialport.pro”檔案中,新增DESTDIR = ..\myLib 。路徑可以自己隨便命名。方便找到生成的共享庫即可。

BaiduShurufa_2015-4-30_21-40-58.png 

4:生成共享庫檔案

儲存並執行 BaiduShurufa_2015-4-30_21-46-29.png

等一會,就可以在myLib資料夾下生成一堆庫檔案:
BaiduShurufa_2015-4-30_21-48-25.png 

     有兩個dll庫檔案,Qt5ExtSerialPortd1.dll包含了debug資訊,Qt5ExtSerialPort1.dll,不包含debug資訊,也就沒有除錯輸出。所以選擇了“Qt5ExtSerialPortd1.dll”,發行版可以選擇“Qt5ExtSerialPort1.dll”,檔案小很多。

第二步:測試共享庫
1:新建一個專案,取名MyCom。

BaiduShurufa_2015-4-30_19-10-9.png 

2:修改 MyCom.pro檔案 新增下面三條語句:
1)把生成的MyCom程式和共享庫檔案放在一起。
#新增串列埠共享庫的位置
DESTDIR = ..\myLib
2)要使用該庫,需要包含#include"qextserialport.h" 官方原話:
* Using QextSerialPort in your code. Enjoy it!
           #include "qextserialport.h"
            ....
           QextSerialPort * port = new QextSerialPort();
            ....
qextserialport.h檔案是放在src資料夾下的,所以加上下面一句:
#新增包含的串列埠類資訊
INCLUDEPATH += ../src

3)新增使用的串列埠共享庫檔案。
LIBS += $$DESTDIR/Qt5ExtSerialPortd1.dll
BaiduShurufa_2015-4-30_23-2-54.png 

* Using QextSerialPort in your code. Enjoy it!
           #include "qextserialport.h"
            ....
           QextSerialPort * port = new QextSerialPort();
            ....
qextserialport.h檔案是放在src資料夾下的,所以加上下面一句:
#新增包含的串列埠類資訊
INCLUDEPATH += ../src

3:新增介面檔案並呼叫QextSerialPort,用以測試共享庫是否正常被呼叫。
BaiduShurufa_2015-4-30_22-26-55.png 

執行程式:
BaiduShurufa_2015-4-30_19-50-35.png 


如果不知道是哪一個串列埠,可以檢視 系統的“裝置管理器”
BaiduShurufa_2015-4-30_19-50-1.png 


說明:該第三方串列埠庫在windows下使用的是“事件驅動”方式:
BaiduShurufa_2015-4-30_19-56-54.png 


後語:
經過編譯共享庫,以後再使用串列埠,就只需在.pro檔案新增呼叫語句即可,快捷方便。使用共享庫的另一個思想就是物件化,以後很多模組都會抽象成共享庫,最後在編寫複雜的專案時,就可以直接呼叫這些庫檔案,而不是重寫,或者“複製貼上”了。

相關文章