東北大學(xué)計算機科學(xué)與工程學(xué)院 付嘉樂 李大宇 蔣 偉
口袋實驗室是將傳統(tǒng)的實驗儀器微型化、軟件化集成到一個小的系統(tǒng)中,其有豐富的軟硬件資源,能夠提供較為全面的實驗學(xué)習(xí),符合微實驗化的主流趨勢。為實現(xiàn)口袋實驗室資源的統(tǒng)一管理和數(shù)據(jù)可視化處理,本文基于QT設(shè)計實現(xiàn)了一種通用的口袋實驗室客戶端,實現(xiàn)通過客戶端進行多設(shè)備的管理和數(shù)據(jù)可視化及處理等功能,通過客戶端框架可拓展功能,能夠提升學(xué)習(xí)開發(fā)效率。
與傳統(tǒng)的實驗室儀器相比,口袋實驗室注重快速配置使用以及易用便攜,具有一定通用性,即在滿足基本一致的功能上通過便于使用的主機端如PC來管理使用,口袋實驗室的設(shè)備通過口袋實驗室的客戶端的使用實現(xiàn)對實驗數(shù)據(jù)的歸檔管理,而目前對于相似功能設(shè)備的客戶端完成功能基本為針對單一設(shè)備的使用進行管理,對于多個設(shè)備的使用管理和數(shù)據(jù)的歸檔分類無法完成或者需要多個客戶端,滿足不了多設(shè)備管理的需求。
在本文中設(shè)計了一種基于桌面端的口袋實驗室客戶端應(yīng)用,通過數(shù)據(jù)的和UI的分層級結(jié)構(gòu),可以實時管理與使用下位機口袋實驗室設(shè)備,充分發(fā)揮當(dāng)前高性能個人計算機在應(yīng)用上的快速易用的優(yōu)勢??蛻舳说脑O(shè)計基于開源桌面開發(fā)QT,使用C++設(shè)計開發(fā)客戶端的界面與邏輯,數(shù)據(jù)庫可使用SQLite和MySQL分別作為本地的小型化輕量數(shù)據(jù)管理和可遠程的管理渠道來組織調(diào)用設(shè)備數(shù)據(jù)。不僅可以跨平臺開發(fā)與Windows或者Linux乃至Android設(shè)備,而且系統(tǒng)具有穩(wěn)定性通用性的同時能大幅減少開發(fā)的周期。
口袋實驗室的客戶端(以下簡稱客戶端)的設(shè)計主要由兼容硬件接口的軟件設(shè)計、針對不同設(shè)備設(shè)計的數(shù)據(jù)處理算法設(shè)計、設(shè)備數(shù)據(jù)的修改以及調(diào)用接口設(shè)計,以及對應(yīng)的UI設(shè)計,提供用戶操作界面。客戶端所使用的桌面應(yīng)用框架為QT,通過C++完成算法的開發(fā),使開發(fā)的應(yīng)用具有更高的效率。
口袋實驗室的客戶端主要設(shè)計使用不同的口袋實驗室設(shè)備(以下簡稱設(shè)備)接口??诖鼘嶒炇以O(shè)備的硬件數(shù)據(jù)接口根據(jù)使用的需求可以使用不同的接口與傳輸協(xié)議。
對于低數(shù)據(jù)量低帶寬而需要較高兼容性的設(shè)備,使用通用異步首發(fā)傳輸器(Universal Asynchronous Receviver/Transmitter,UART)可以滿足要求。UART作為一種在電子設(shè)備中應(yīng)用場合廣泛的傳輸方式,應(yīng)用開發(fā)周期短,對器件要求低。在PC端,UART傳輸僅需要設(shè)備具有通用串行總線(Universal Serial Bus,USB),通過具備USB轉(zhuǎn)換UART硬件電路的設(shè)備,或者使用USB通信設(shè)備類(USB Communication Device Class,USB-CDC)進行虛擬串口傳輸即可實現(xiàn)??蛻舳送瓿晒δ軇t需要實現(xiàn)對于UART設(shè)備掃描查找,以及對于對應(yīng)的端口的數(shù)據(jù)位、傳輸速率、奇偶校驗、停止位、流控制進行配置,對于稱重或者其他對于實時刷新要求不高的數(shù)據(jù),UART能夠滿足使用要求。
當(dāng)前無線技術(shù)的應(yīng)用,使得口袋實驗室設(shè)備開發(fā)無線連接更為常見,客戶端的設(shè)計也應(yīng)該滿足對于無線設(shè)備的使用管理。使用無線連接且具有較高數(shù)據(jù)傳輸速率需求的設(shè)備,可以通過無線局域網(wǎng)(Wireless Local Area Network,WLAN)進行數(shù)據(jù)的發(fā)送與接收,WLAN比較于其他較為常用的無線通信技術(shù),相比低功耗藍牙(Bluetooth Low Energy,BLE)或者經(jīng)典藍牙,雖然具有更高功耗,但是傳輸速率遠高于BLE,而ZigBee需要專用的設(shè)備連接,綜合來看WLAN更適用于客戶端的開發(fā)。通過無線局域網(wǎng)的連接,作為服務(wù)端,需要能夠配置可開放的端口,供設(shè)備的連接。
硬件設(shè)備使用WLAN連接可以通過專用的具有WLAN功能的單片機實現(xiàn),也可以使用具備通信接口的模塊進行實現(xiàn)。
在客戶端上軟件的接口的設(shè)計需要滿足不同設(shè)備的兼容,在設(shè)計上需要對于每一個設(shè)備使用單獨的界面進行選擇。其設(shè)計方案如圖1所示。
口袋實驗室的客戶端的在操作界面上包含主管理界面,連接設(shè)備界面,設(shè)備添加管理界面,設(shè)備列表管理,設(shè)備控制界面以及不同設(shè)備處理算法部分構(gòu)成,如圖2所示。
圖2 軟件架構(gòu)設(shè)計
其中主界面為客戶端進入之后首先需要顯示的界面,包含了設(shè)置與選擇按鈕以及設(shè)備管理列表界面。
設(shè)備管理列表界面完成顯示設(shè)備列表功能并能選擇控制,通過查詢數(shù)據(jù)庫并在Widget上繪圖實現(xiàn)顯示。
在設(shè)備操作界面中,界面的內(nèi)容通過所選的設(shè)備的類型進行判定并顯示出對應(yīng)的界面和功能列表,本系統(tǒng)可以實現(xiàn)多種設(shè)備操作界面的顯示和操作。同時包含刪除設(shè)備功能。
添加設(shè)備界面模塊中,本系統(tǒng)實現(xiàn)了不同通信接口的選擇和設(shè)備名稱的自定義,通過增添數(shù)據(jù)庫表內(nèi)容進行管理。
程序采用單窗口多子界面的設(shè)計,通過切換子界面來顯示不同的程序模塊,實現(xiàn)對于低性能設(shè)備的兼容。其中,設(shè)備管理列表首先初始化數(shù)據(jù)庫管理程序,打開本地數(shù)據(jù)庫文件。在本地化的客戶端設(shè)計上,使用輕量級數(shù)據(jù)庫SQLite實現(xiàn)對于設(shè)備數(shù)據(jù)的管理,設(shè)備列表管理模塊通過查詢數(shù)據(jù)庫內(nèi)device表內(nèi)的數(shù)據(jù)得到設(shè)備數(shù)量以及對應(yīng)的設(shè)備編號設(shè)備名稱以及設(shè)備類型,并將設(shè)備列表顯示在界面上,實現(xiàn)可視化選擇設(shè)備使用,如圖3所示。設(shè)備列表管理模塊提供添加設(shè)備功能,功能通過按鈕實現(xiàn)子界面,即設(shè)備添加界面的跳轉(zhuǎn)。
圖3 設(shè)備列表管理界面圖
設(shè)備添加界面首先初始化數(shù)據(jù)庫的管理,然后檢索數(shù)據(jù)目錄下是否存在程序的指定數(shù)據(jù)庫文件。界面上,通過文本框和選擇框,實現(xiàn)手動輸入設(shè)備的類型和自定義的設(shè)備名稱,在功能上提供默認的設(shè)備名稱自動排序填充以及對于重名設(shè)備的提示。完成輸入之后,在數(shù)據(jù)庫文件內(nèi)建立device表,已經(jīng)存在則不重復(fù),并保存在可視化界面上保存的所添加的設(shè)別的信息。
設(shè)備控制模塊可以通過鼠標(biāo)的點擊進入對應(yīng)的設(shè)備,點擊之后需要判斷使用的設(shè)備,顯示對應(yīng)的界面,并完成對應(yīng)算法的加載。其流程如圖4所示。
主界面中提供的當(dāng)前界面按鈕通過記錄當(dāng)前使用的設(shè)備ID來切換到對應(yīng)的設(shè)備控制界面,設(shè)置界面提供對數(shù)據(jù)庫的清空功能。
客戶端作為設(shè)備的框架,針對不同的設(shè)備需要設(shè)計不同的驅(qū)動程序供設(shè)備使用。通過添加設(shè)備對應(yīng)的程序,調(diào)用硬件數(shù)據(jù)接口進行數(shù)據(jù)傳輸,能夠較快實現(xiàn)多種設(shè)備的兼容設(shè)計和拓展,通過判斷不同的設(shè)備顯示對應(yīng)的界面和數(shù)據(jù)處理可以實現(xiàn)多種設(shè)備的使用,在客戶端的設(shè)計中預(yù)置了組合秤和示波器的設(shè)備驅(qū)動模塊。客戶端實現(xiàn)了可以調(diào)用組合秤和示波器,并且可以管理多個不同設(shè)備。
圖4 設(shè)備控制界面加載流程框圖
圖5 組合秤算法原理框圖
本系統(tǒng)設(shè)計了組合秤的客戶端控制界面。在界面上,需要顯示出組合秤的秤頭數(shù)據(jù),同時設(shè)計開始按鈕。需要記錄歷史數(shù)據(jù)并可以完成導(dǎo)出。完成功能可以將歷史數(shù)據(jù)按照秤頭數(shù)順序記錄在文本文件中,方便進行查看。在組合秤客戶端的算法設(shè)計上,需要通過數(shù)據(jù)接口獲取秤頭數(shù)據(jù),以使用的八個秤頭的組合秤為例,需要比較從中挑選一個到八個數(shù)據(jù)的組合完成最佳組合的選擇,完成選擇之后通過與客戶端連接的接口實現(xiàn)對設(shè)備的控制。以完成三個數(shù)據(jù)的組合為例,其算法框圖如圖5所示。
圖6 示波器客戶端操作算法流程
系統(tǒng)設(shè)計了不同設(shè)備的切換,可以選擇使用示波器設(shè)備。通過QT的Painter,可以實現(xiàn)在界面上的繪圖,對于下位機設(shè)備的數(shù)據(jù),接收到數(shù)據(jù)之后進行顯示和計算。在示波器應(yīng)用中,客戶端首先需要同步設(shè)備的信心配置以便后期的計算。界面上留出虛擬旋轉(zhuǎn)按鈕可以調(diào)整下位機設(shè)備的垂直和水平,客戶端的設(shè)置之后通過數(shù)據(jù)接口同步到下位機設(shè)備。其流程如圖6所示。
本系統(tǒng)需要完成口袋實驗室客戶端的功能,需要測試其正常功能。
首先在客戶端的設(shè)備列表管理界面點添加按鈕,完成設(shè)備信心的填寫和選擇后點擊OK,可以看到在數(shù)據(jù)目錄下已經(jīng)建立了一個后綴為.db的文件。使用SQLiteStudio打開該文件,可以看到表已經(jīng)建立,可以查看device表內(nèi)數(shù)據(jù)內(nèi)容,如圖7所示。
在設(shè)備列表界面,任意點擊已經(jīng)添加的設(shè)備,檢查控制界面是否為對應(yīng)設(shè)備的界面。測試結(jié)果表明,設(shè)備的添加和設(shè)備對應(yīng)的控制界面的啟用可靠。
在現(xiàn)有的設(shè)備基礎(chǔ)上,通過添加設(shè)備功能分別添加示波器和組合秤設(shè)備,分別選用串口和WLAN通信。
圖7 數(shù)據(jù)庫內(nèi)容測試
圖8 設(shè)備一功能測試
通過檢查數(shù)據(jù)是否正常接收以及是否為正確數(shù)據(jù)來檢驗程序能夠完整無誤接收數(shù)據(jù)。設(shè)備測試圖如圖8所示。
通過與實際數(shù)據(jù)的對比,結(jié)果表明客戶端完成了數(shù)據(jù)接收和處理的功能。
結(jié)論:本文設(shè)計實現(xiàn)了通用的口袋實驗室客戶端,并對現(xiàn)有的設(shè)備完成了多次測試,測試結(jié)果滿足設(shè)計要求??蛻舳俗幽K能實現(xiàn)處理通過UART、WLAN傳輸?shù)膶嶒灁?shù)據(jù),能夠節(jié)省成本,且方便實時的得到數(shù)據(jù)處理的結(jié)果,提升了實驗效率。多設(shè)備的分類管理以及通過本地數(shù)據(jù)存儲實驗數(shù)據(jù),保證數(shù)據(jù)備份和后續(xù)回看對比。同時系統(tǒng)兼容Window、Linux甚至Android手機端,可以實現(xiàn)跨平臺的開發(fā),且具有很好的穩(wěn)定性。為后續(xù)口袋實驗室整體的進一步完善提供了很好的參考。