李磊,池迎春
1.深圳市中核海得威生物科技有限公司 器械部,廣東 深圳 518057;2.解放軍第三〇九醫院 護理部,北京 100091
呼氣試驗測試儀主要用于臨床診斷幽門螺桿菌感染。幽門螺桿菌目前已被認定是慢性胃炎的主要致病因子,如果長期得不到治療會導致胃炎、十二指腸炎和胃潰瘍等癥狀,甚至有發展成胃癌的風險[1-4]。
現有的呼氣試驗測試儀體積龐大且采集到的數據無法直接處理,需要通過USB線與PC機連接后,才能正常操作使用。因此,我們設計開發了新型便攜式二通道呼氣試驗測試儀。它不僅能單機操作,也可以連接上位機完成所有控制任務。其圖形用戶界面的開發基于谷歌開源的Android操作系統。它是基于Linux內核的開源平臺,包括豐富的庫函數及多種數據存儲模式,便于實現各種復雜的應用功能,而且不存在任何阻礙創新的專有權障礙。
Android系統從上至下分為4層:應用程序、Android應用程序框架、Android程序庫及Android運行時、Linux內核[5],見圖1。

圖1 Android系統架構
該層提供一些核心應用程序包。同時,開發者可以利用Java語言設計和編寫屬于自己的應用程序,而這些程序與核心應用程序彼此平等、友好共處。本設計的GUI界面就是使用Java語言在Eclipse集成開發環境中編寫、調試、編譯。
應用程序框架層包括活動管理器、窗口管理器、內容提供者、視圖系統、包管理器、電話管理器、資源管理器、位置管理器、通知管理器和XMPP服務10個部分。在Android平臺上,開發人員可以訪問核心應用程序所使用的API框架。
系統庫包含9個子系統,分別是圖層管理、媒體庫、SQLite、OpenGLEState、FreeType、WebKit、SGL、SSL 和libc。Android運行時包括核心庫和Dalvik虛擬機,前者既兼容了大多數Java語言所需要調用的功能函數,又包括了Android的核心庫。后者是一種基于寄存器的Java虛擬機,Dalvik虛擬機主要是對生命周期的管理、堆棧的管理、線程的管理、安全和異常的管理以及垃圾回收等重要功能[6]。
Android核心系統服務依賴于Linux 2.6內核,如安全性、內存管理、進程管理、網絡協議棧和驅動模型。Linux內核也是作為硬件與軟件棧的抽象層。本設計重點完成基于觸摸驅動IC FT5406的驅動代碼。
硬件系統分為兩大部分,基于STM32的微控制器部分[7-10]和基于Samsung Exynos4412的四核微處理器部分[11]。第一部分主要完成運動部件控制、溫度傳感器數據采集、探測器信號采集[12]等;第二部分由核心板和底板兩部分組成,主要完成觸摸及液晶屏驅動、圖形用戶界面顯示、測試數據保存、歷史記錄查詢及數據存儲等。兩大部分通過串口進行通信。見圖2。

圖2 系統硬件框架
本設計選用多點觸控電容液晶屏作為系統中人機交互的窗口。電容屏與電阻屏比較,電容式觸摸屏具有靈敏度高,容易實現多點觸控技術等優點。我們選用的觸摸屏IC是FocalTech公司的FT5406,是一款I2C總線協議的電容屏多點觸控芯片。圖形界面中的控件需要底層支持才能得到正確響應。所以在Linux內核中的Input子系統下完成觸摸屏的驅動。Input子系統由3層組成,分別為設備驅動層、核心層和事件處理層。設備驅動層主要實現對硬件設備的讀寫訪問,中斷設置,并把硬件產生的事件轉換為核心層定義的規范提交給事件處理層。核心層為設備驅動層提供了規范和接口。設備驅動層關心如何驅動硬件并獲得硬件數據,然后調用核心層提供的接口,核心層自動把數據提交給事件處理層。事件處理層是用戶編程的接口(設備節點),并處理驅動層提交的數據。
觸摸屏驅動代碼整體流程,見圖3。

圖3 觸摸驅動流程圖
串口通信是目前單片機和DSP等嵌入式系統之間,以及嵌入式系統與PC機或無線模塊之間的一種非常重要且普遍的通信方式,在數據量要求不是特別高的情況下,因其具有簡單、低廉、成熟和通用等優點,得到了廣泛的應用。
本設計微控制器端使用STM32提供的串口相關庫函數完成數據的接收、發送。嵌入式微處理器端使用Google開源的Android-serialport-api項目。該項目包裝了串行接口的通訊。 首先在Java層定義一個接口,同時在C層用C代碼實現串口的功能并編譯成動態鏈接庫[13-14]。這樣Activity就可以通過Java層接口調用生成的動態鏈接庫,完成相應的功能,如波特率設置,串口端口選擇,數據讀寫等。
微控制器和微處理器之間通過串口通信協議完成數據的傳輸、解析。通信協議是需要通信的雙方達成的一種約定,它對包括數據格式、同步方式、傳送速度、傳送步驟、檢糾錯方式以及控制字符定義等問題作出統一規定,在雙方的通信中必須共同遵守。本呼氣試驗測試儀項目根據5個方面來制定合適的串口通信協議:① 偏重實時控制還是偏重于實時信息;② 傳輸數據量的大小;③ 傳輸信息的組成;④ 對傳輸的可靠性要求程度;⑤ 設備所處環境的干擾程度。
具體內容:傳輸波特率9600,一幀數據24個字節。包頭3個字節0x02、0xff、0x00,第4個字節為命令字,最后一個字節0x03是包尾。
底層驅動構建完成后,需要實現人機交互界面。GUI屬于Android體系架構的應用層。由Java語言編寫。使用Eclipse集成開發環境完成代碼編寫及編譯生成APK文件。Android應用程序的生存周期內包括以下關鍵組件[15]:Activity:應用程序的入口,界面顯示,接收事件(如按鍵),控制顯示跳轉。
BroadcastReceiver:用于注冊和接收系統廣播的事件,可接收自定義的廣播事件。
ContentProvider:提供數據庫查詢接口,可對外(其他應用程序)公開數據查詢服務。
Service:是一個獨立的進程,可一直在后臺進行,可以與其他組件通過遠程連接綁定進行交互,可對外(其他應用程序)提供服務交互接口,生命周期不依賴于其他組件的存在與否。
對任何一個Android應用程序來講,Activity類都是其核心組成部分。許多時候,在應用程序中,我們會為每一個屏幕顯示定義和實現一個Activity[16-17]。本系統設計的人機交互界面應用程序中包含的Activity,見圖4。

圖4 應用程序結構圖
啟動畫面:這一Activity充當應用程序的主入口點,自檢結束后,無故障,跳轉至測量界面,有故障,按查詢按鈕查詢故障信息;主界面:用戶在該Activity中可以實現向應用程序中的其他Activity跳轉,此處,用戶需要做出選擇,告訴應用程序他們下一步想做什么;樣品測量:輸入病人信息,準備樣品開始測量,測量過程動畫顯示,測量結束后顯示測量結果并通過熱敏打印機輸出,測量數據保存至數據庫;質量控制:動畫顯示質控控制全過程,查詢質控全部歷史記錄;儀器自檢:包括檢測樣品池內部溫度、光電開關、切光片、儀器光強、內部壓力、樣品池氣密性等;參數設置:完成儀器系統參數的修改設置;狀態信息:實時顯示儀器的工作狀態;數據查詢:可以瀏覽測量數據歷史記錄,以Excel表格形式導出數據至外接U盤;用戶管理:可以切換至調試模式;幫助信息:主要包括公司信息、軟件版本號、幫助手冊等。
產品實際效果,見圖5。

圖5 產品實物
本文研究并開發了一款用于檢測胃內幽門螺桿菌的便攜式呼氣試驗測試儀。該系統摒棄傳統的按鍵和單色點陣屏,選用24位帶電容觸摸屏的真彩色液晶顯示屏,基于Android平臺設計人機交互界面。結果表明觸摸響應靈敏,界面友好易用,提升了用戶滿意度,功能更強大。
[1]宋海龍,胡德龍,李現紅,等.14C呼氣檢測儀探測效率測量值的不確定度評定[J].計量與測試技術,2016,43(4):82-84.
[2]宋海龍.14C呼氣檢測儀校準關鍵技術研究[J].中國計量,2015,34(11):101-102.
[3]楊美,田湉,張艷.幽門螺桿菌檢測技術的評價及進展[J].中國現代醫藥雜志,2012,14(2):112-115.
[4]李濤,鄒莉霞.幽門螺桿菌診斷方法評析[J].貴州醫藥,2012,34(9):850-851.
[5]鄭萌.Android系統下Java編程詳解[M].北京:電子工業出版社,2012:3-8.
[6]張仕成.基于Google Android平臺的應用程序開發與研究[J].電腦知識與技術,2009,5(28):7959-7962.
[7]呂鵬,欒童童.基于ARM7 STM32控制點陣液晶屏的設計[J].塑料技術與裝備(塑料),2015,41(24):186-189.
[8]邸興,陳貝,韓俊.基于STM32的便攜式人機界面系統[J].電子設計工程,2011,19(5):94-97.
[9]孫啟富,孫運強,姚愛琴.基于STM32的通用智能儀表設計與應用[J].儀表技術與傳感器,2010,32(10):34-36.
[10]丁月林.基于STM32的低功耗溫濕采集器實現[J].軟件,2015,36(5):84-88.
[11]黃傲成,冉全,廖永富,等.CortexA8與M3的多CPU控制平臺構建方案[J].武漢工程大學學報,2015,37(7):40-44.
[12]張良棟.碳13紅外光譜儀的設計與實現[D].北京:中國科學院大學,2015.
[13]朱玉清,瑚琦,高鵬飛.基于Android系統的微型光譜儀數據傳輸及圖形化顯示[J].光學儀器,2013,35(6):78-81.
[14]崔世鋼,代鳳輝,梁帆.基于Android平臺串口驅動的多傳感器數據傳輸的實現[J].江蘇農業科學,2016,44(1):403-405.
[15]曾健平,邵艷潔.Android系統架構及應用程序開發研究[J].微計算機信息,2011,27(9):1-3.
[16]藍坤,張躍.Android在遠程醫療信息系統中的應用[J].計算機應用,2013,33(6):1790-1792.
[17]詹成國,朱偉,徐敏.基于Android的測控裝置人機界面的設計與開發[J].電力自動化設備,2012,32(1):119-121.