東北大學計算機科學與工程學院 付嘉樂 李大宇 蔣 偉
口袋實驗室是將傳統的實驗儀器微型化、軟件化集成到一個小的系統中,其有豐富的軟硬件資源,能夠提供較為全面的實驗學習,符合微實驗化的主流趨勢。為實現口袋實驗室資源的統一管理和數據可視化處理,本文基于QT設計實現了一種通用的口袋實驗室客戶端,實現通過客戶端進行多設備的管理和數據可視化及處理等功能,通過客戶端框架可拓展功能,能夠提升學習開發效率。
與傳統的實驗室儀器相比,口袋實驗室注重快速配置使用以及易用便攜,具有一定通用性,即在滿足基本一致的功能上通過便于使用的主機端如PC來管理使用,口袋實驗室的設備通過口袋實驗室的客戶端的使用實現對實驗數據的歸檔管理,而目前對于相似功能設備的客戶端完成功能基本為針對單一設備的使用進行管理,對于多個設備的使用管理和數據的歸檔分類無法完成或者需要多個客戶端,滿足不了多設備管理的需求。
在本文中設計了一種基于桌面端的口袋實驗室客戶端應用,通過數據的和UI的分層級結構,可以實時管理與使用下位機口袋實驗室設備,充分發揮當前高性能個人計算機在應用上的快速易用的優勢。客戶端的設計基于開源桌面開發QT,使用C++設計開發客戶端的界面與邏輯,數據庫可使用SQLite和MySQL分別作為本地的小型化輕量數據管理和可遠程的管理渠道來組織調用設備數據。不僅可以跨平臺開發與Windows或者Linux乃至Android設備,而且系統具有穩定性通用性的同時能大幅減少開發的周期。
口袋實驗室的客戶端(以下簡稱客戶端)的設計主要由兼容硬件接口的軟件設計、針對不同設備設計的數據處理算法設計、設備數據的修改以及調用接口設計,以及對應的UI設計,提供用戶操作界面。客戶端所使用的桌面應用框架為QT,通過C++完成算法的開發,使開發的應用具有更高的效率。
口袋實驗室的客戶端主要設計使用不同的口袋實驗室設備(以下簡稱設備)接口。口袋實驗室設備的硬件數據接口根據使用的需求可以使用不同的接口與傳輸協議。
對于低數據量低帶寬而需要較高兼容性的設備,使用通用異步首發傳輸器(Universal Asynchronous Receviver/Transmitter,UART)可以滿足要求。UART作為一種在電子設備中應用場合廣泛的傳輸方式,應用開發周期短,對器件要求低。在PC端,UART傳輸僅需要設備具有通用串行總線(Universal Serial Bus,USB),通過具備USB轉換UART硬件電路的設備,或者使用USB通信設備類(USB Communication Device Class,USB-CDC)進行虛擬串口傳輸即可實現。客戶端完成功能則需要實現對于UART設備掃描查找,以及對于對應的端口的數據位、傳輸速率、奇偶校驗、停止位、流控制進行配置,對于稱重或者其他對于實時刷新要求不高的數據,UART能夠滿足使用要求。
當前無線技術的應用,使得口袋實驗室設備開發無線連接更為常見,客戶端的設計也應該滿足對于無線設備的使用管理。使用無線連接且具有較高數據傳輸速率需求的設備,可以通過無線局域網(Wireless Local Area Network,WLAN)進行數據的發送與接收,WLAN比較于其他較為常用的無線通信技術,相比低功耗藍牙(Bluetooth Low Energy,BLE)或者經典藍牙,雖然具有更高功耗,但是傳輸速率遠高于BLE,而ZigBee需要專用的設備連接,綜合來看WLAN更適用于客戶端的開發。通過無線局域網的連接,作為服務端,需要能夠配置可開放的端口,供設備的連接。
硬件設備使用WLAN連接可以通過專用的具有WLAN功能的單片機實現,也可以使用具備通信接口的模塊進行實現。
在客戶端上軟件的接口的設計需要滿足不同設備的兼容,在設計上需要對于每一個設備使用單獨的界面進行選擇。其設計方案如圖1所示。
口袋實驗室的客戶端的在操作界面上包含主管理界面,連接設備界面,設備添加管理界面,設備列表管理,設備控制界面以及不同設備處理算法部分構成,如圖2所示。

圖2 軟件架構設計
其中主界面為客戶端進入之后首先需要顯示的界面,包含了設置與選擇按鈕以及設備管理列表界面。
設備管理列表界面完成顯示設備列表功能并能選擇控制,通過查詢數據庫并在Widget上繪圖實現顯示。
在設備操作界面中,界面的內容通過所選的設備的類型進行判定并顯示出對應的界面和功能列表,本系統可以實現多種設備操作界面的顯示和操作。同時包含刪除設備功能。
添加設備界面模塊中,本系統實現了不同通信接口的選擇和設備名稱的自定義,通過增添數據庫表內容進行管理。
程序采用單窗口多子界面的設計,通過切換子界面來顯示不同的程序模塊,實現對于低性能設備的兼容。其中,設備管理列表首先初始化數據庫管理程序,打開本地數據庫文件。在本地化的客戶端設計上,使用輕量級數據庫SQLite實現對于設備數據的管理,設備列表管理模塊通過查詢數據庫內device表內的數據得到設備數量以及對應的設備編號設備名稱以及設備類型,并將設備列表顯示在界面上,實現可視化選擇設備使用,如圖3所示。設備列表管理模塊提供添加設備功能,功能通過按鈕實現子界面,即設備添加界面的跳轉。

圖3 設備列表管理界面圖
設備添加界面首先初始化數據庫的管理,然后檢索數據目錄下是否存在程序的指定數據庫文件。界面上,通過文本框和選擇框,實現手動輸入設備的類型和自定義的設備名稱,在功能上提供默認的設備名稱自動排序填充以及對于重名設備的提示。完成輸入之后,在數據庫文件內建立device表,已經存在則不重復,并保存在可視化界面上保存的所添加的設別的信息。
設備控制模塊可以通過鼠標的點擊進入對應的設備,點擊之后需要判斷使用的設備,顯示對應的界面,并完成對應算法的加載。其流程如圖4所示。
主界面中提供的當前界面按鈕通過記錄當前使用的設備ID來切換到對應的設備控制界面,設置界面提供對數據庫的清空功能。
客戶端作為設備的框架,針對不同的設備需要設計不同的驅動程序供設備使用。通過添加設備對應的程序,調用硬件數據接口進行數據傳輸,能夠較快實現多種設備的兼容設計和拓展,通過判斷不同的設備顯示對應的界面和數據處理可以實現多種設備的使用,在客戶端的設計中預置了組合秤和示波器的設備驅動模塊。客戶端實現了可以調用組合秤和示波器,并且可以管理多個不同設備。

圖4 設備控制界面加載流程框圖

圖5 組合秤算法原理框圖
本系統設計了組合秤的客戶端控制界面。在界面上,需要顯示出組合秤的秤頭數據,同時設計開始按鈕。需要記錄歷史數據并可以完成導出。完成功能可以將歷史數據按照秤頭數順序記錄在文本文件中,方便進行查看。在組合秤客戶端的算法設計上,需要通過數據接口獲取秤頭數據,以使用的八個秤頭的組合秤為例,需要比較從中挑選一個到八個數據的組合完成最佳組合的選擇,完成選擇之后通過與客戶端連接的接口實現對設備的控制。以完成三個數據的組合為例,其算法框圖如圖5所示。

圖6 示波器客戶端操作算法流程
系統設計了不同設備的切換,可以選擇使用示波器設備。通過QT的Painter,可以實現在界面上的繪圖,對于下位機設備的數據,接收到數據之后進行顯示和計算。在示波器應用中,客戶端首先需要同步設備的信心配置以便后期的計算。界面上留出虛擬旋轉按鈕可以調整下位機設備的垂直和水平,客戶端的設置之后通過數據接口同步到下位機設備。其流程如圖6所示。
本系統需要完成口袋實驗室客戶端的功能,需要測試其正常功能。
首先在客戶端的設備列表管理界面點添加按鈕,完成設備信心的填寫和選擇后點擊OK,可以看到在數據目錄下已經建立了一個后綴為.db的文件。使用SQLiteStudio打開該文件,可以看到表已經建立,可以查看device表內數據內容,如圖7所示。
在設備列表界面,任意點擊已經添加的設備,檢查控制界面是否為對應設備的界面。測試結果表明,設備的添加和設備對應的控制界面的啟用可靠。
在現有的設備基礎上,通過添加設備功能分別添加示波器和組合秤設備,分別選用串口和WLAN通信。

圖7 數據庫內容測試

圖8 設備一功能測試
通過檢查數據是否正常接收以及是否為正確數據來檢驗程序能夠完整無誤接收數據。設備測試圖如圖8所示。
通過與實際數據的對比,結果表明客戶端完成了數據接收和處理的功能。
結論:本文設計實現了通用的口袋實驗室客戶端,并對現有的設備完成了多次測試,測試結果滿足設計要求。客戶端子模塊能實現處理通過UART、WLAN傳輸的實驗數據,能夠節省成本,且方便實時的得到數據處理的結果,提升了實驗效率。多設備的分類管理以及通過本地數據存儲實驗數據,保證數據備份和后續回看對比。同時系統兼容Window、Linux甚至Android手機端,可以實現跨平臺的開發,且具有很好的穩定性。為后續口袋實驗室整體的進一步完善提供了很好的參考。