基于Android系统的呼气试验测试仪图形用户界面的设计与实现
2018-03-13李磊池迎春
李磊,池迎春
1.深圳市中核海得威生物科技有限公司 器械部,广东 深圳 518057;2.解放军第三〇九医院 护理部,北京 100091
引言
呼气试验测试仪主要用于临床诊断幽门螺杆菌感染。幽门螺杆菌目前已被认定是慢性胃炎的主要致病因子,如果长期得不到治疗会导致胃炎、十二指肠炎和胃溃疡等症状,甚至有发展成胃癌的风险[1-4]。
现有的呼气试验测试仪体积庞大且采集到的数据无法直接处理,需要通过USB线与PC机连接后,才能正常操作使用。因此,我们设计开发了新型便携式二通道呼气试验测试仪。它不仅能单机操作,也可以连接上位机完成所有控制任务。其图形用户界面的开发基于谷歌开源的Android操作系统。它是基于Linux内核的开源平台,包括丰富的库函数及多种数据存储模式,便于实现各种复杂的应用功能,而且不存在任何阻碍创新的专有权障碍。
1 Android操作系统
Android系统从上至下分为4层:应用程序、Android应用程序框架、Android程序库及Android运行时、Linux内核[5],见图1。
图1 Android系统架构
1.1 应用程序层
该层提供一些核心应用程序包。同时,开发者可以利用Java语言设计和编写属于自己的应用程序,而这些程序与核心应用程序彼此平等、友好共处。本设计的GUI界面就是使用Java语言在Eclipse集成开发环境中编写、调试、编译。
1.2 应用程序框架层
应用程序框架层包括活动管理器、窗口管理器、内容提供者、视图系统、包管理器、电话管理器、资源管理器、位置管理器、通知管理器和XMPP服务10个部分。在Android平台上,开发人员可以访问核心应用程序所使用的API框架。
1.3 系统库和Android运行时
系统库包含9个子系统,分别是图层管理、媒体库、SQLite、OpenGLEState、FreeType、WebKit、SGL、SSL 和libc。Android运行时包括核心库和Dalvik虚拟机,前者既兼容了大多数Java语言所需要调用的功能函数,又包括了Android的核心库。后者是一种基于寄存器的Java虚拟机,Dalvik虚拟机主要是对生命周期的管理、堆栈的管理、线程的管理、安全和异常的管理以及垃圾回收等重要功能[6]。
1.4 Linux内核
Android核心系统服务依赖于Linux 2.6内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。Linux内核也是作为硬件与软件栈的抽象层。本设计重点完成基于触摸驱动IC FT5406的驱动代码。
2 硬件系统框架
硬件系统分为两大部分,基于STM32的微控制器部分[7-10]和基于Samsung Exynos4412的四核微处理器部分[11]。第一部分主要完成运动部件控制、温度传感器数据采集、探测器信号采集[12]等;第二部分由核心板和底板两部分组成,主要完成触摸及液晶屏驱动、图形用户界面显示、测试数据保存、历史记录查询及数据存储等。两大部分通过串口进行通信。见图2。
图2 系统硬件框架
3 基于Android平台图形界面设计
3.1 触摸驱动
本设计选用多点触控电容液晶屏作为系统中人机交互的窗口。电容屏与电阻屏比较,电容式触摸屏具有灵敏度高,容易实现多点触控技术等优点。我们选用的触摸屏IC是FocalTech公司的FT5406,是一款I2C总线协议的电容屏多点触控芯片。图形界面中的控件需要底层支持才能得到正确响应。所以在Linux内核中的Input子系统下完成触摸屏的驱动。Input子系统由3层组成,分别为设备驱动层、核心层和事件处理层。设备驱动层主要实现对硬件设备的读写访问,中断设置,并把硬件产生的事件转换为核心层定义的规范提交给事件处理层。核心层为设备驱动层提供了规范和接口。设备驱动层关心如何驱动硬件并获得硬件数据,然后调用核心层提供的接口,核心层自动把数据提交给事件处理层。事件处理层是用户编程的接口(设备节点),并处理驱动层提交的数据。
触摸屏驱动代码整体流程,见图3。
图3 触摸驱动流程图
3.2 基于Android平台的串口通信
串口通信是目前单片机和DSP等嵌入式系统之间,以及嵌入式系统与PC机或无线模块之间的一种非常重要且普遍的通信方式,在数据量要求不是特别高的情况下,因其具有简单、低廉、成熟和通用等优点,得到了广泛的应用。
本设计微控制器端使用STM32提供的串口相关库函数完成数据的接收、发送。嵌入式微处理器端使用Google开源的Android-serialport-api项目。该项目包装了串行接口的通讯。 首先在Java层定义一个接口,同时在C层用C代码实现串口的功能并编译成动态链接库[13-14]。这样Activity就可以通过Java层接口调用生成的动态链接库,完成相应的功能,如波特率设置,串口端口选择,数据读写等。
微控制器和微处理器之间通过串口通信协议完成数据的传输、解析。通信协议是需要通信的双方达成的一种约定,它对包括数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题作出统一规定,在双方的通信中必须共同遵守。本呼气试验测试仪项目根据5个方面来制定合适的串口通信协议:① 偏重实时控制还是偏重于实时信息;② 传输数据量的大小;③ 传输信息的组成;④ 对传输的可靠性要求程度;⑤ 设备所处环境的干扰程度。
具体内容:传输波特率9600,一帧数据24个字节。包头3个字节0x02、0xff、0x00,第4个字节为命令字,最后一个字节0x03是包尾。
3.3 GUI设计
底层驱动构建完成后,需要实现人机交互界面。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 产品实物
4 结论
本文研究并开发了一款用于检测胃内幽门螺杆菌的便携式呼气试验测试仪。该系统摒弃传统的按键和单色点阵屏,选用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.