田志宏,胡 亮,邱峰志
(天津科技大学电子信息与自动化学院,天津 300222)
当前,人口老龄化已成为当今世界的一个突出的社会问题.世界卫生组织指出,在全世界 190多个国家和地区中,有 60多个已进入老年型社会.老年人健康的最大威胁——心血管疾病引起的死亡人数,占全球死亡人数的三分之一[1].各种心血管疾病在发病前都会有相应的征兆,而通过观测病人的生理参数数据是能够发现这些征兆的,因此设计一种可以监测主要生理参数并兼有报警功能的医疗仪器,将为预防和治疗各种突发性疾病提供一种新的手段[2].目前,生理参数监测设备大多用于医院监护室、养老院等,可对病人或老年人的重要生理参数作实时、连续和长时间的监护[3],有些监护设备还带有一定的本地报警功能.但其在远程无线报警功能方面却略显匮乏,不支持手机短信报警功能[4].
本监护系统在拥有准确的监测功能的同时又有手机 GPRS报警功能,可在日常家庭中使用,满足老年人对此类仪器的需求.
人体生理参数监测系统硬件结构如图1所示.系统选用 CSN808作为生理参数采集模块.CNS808是用来监测心电波、心率、血压、血氧饱和度、呼吸和体温的参数采集模块,并可按照RS232协议,通过串口向主控模块发送生理参数数据包[5].选用 GTM900模块作为生理参数的远程无线报警模块,其支持标准及增强的 AT命令,与主控模块通过串口相连.主控模块主要负责对 CSN808模块发送的数据包做相应的处理,并对 CSN808模块和 GTM900模块进行控制.选用Atmel公司的AT91SAM9263作为ARM主控模块的核心CPU,其支持Windows CE操作系统和大容量的NAND flash.系统以LCD和触摸屏作为人机交互装置,并可以通过以太网接口芯片连接到Internet.
图1 人体生理参数监测系统硬件结构图Fig.1 Hardware structure of physiological parameter monitoring system
一个Windows CE系统从软件角度通常可分为3个层次:引导加载程序、系统映像文件以及用户应用程序[6].本文重点介绍人体生理参数监测软件,即用户应用程序的开发.
CSN808模块的正常应答方式是以50 Hz的频率连续发送包含 25字节数据的数据包.其中,数据包的前两个字节是数据头,第20和第25字节为两个校验和值,其余字节是各种生理参数的数据字节.主控模块接到串口数据后,首先对接收到的数据包进行校验,然后对通过校验的数据包进行分析,最后把各种生理参数数值显示到 LCD模块上,并绘制多导联心电图(ECG).在监测到病人出现异常时,系统自动对生理参数数据包进行保存,同时主控模块驱动GPRS/GSM 模块向外发送求救短消息和拨打求救电话.图 2为人体生理参数监测系统监测软件的主程序流程图.
采用了EVC4.0作为上位机软件的开发工具.它具有支持MFC类库和ATL、COM组件,支持C/C++和汇编混合编程,所编写的软件运行时占用内存少、运行速度快等特点.
图2 监测软件主程序流程图Fig.2 Main program flow chart of monitoring software
2.1.1 串口资源的打开和关闭
串口在Windows CE系统下属于流接口设备,它是串行设备接口的常规 I/O驱动程序调用和与通信相关的具体函数的结合.串行设备被视为用于打开、关闭、读写串口的常规、可安装的流设备[7].在所有的流设备驱动程序中,均可使用 CreateFile()函数来打开串行端口设备.打开串口并正确设置 DCB结构体中的参数以及异步读写的超时时限之后,串口即可正常工作.
关闭串口则可以调用 CloseHandle()函数来释放串口资源.
2.1.2 多线程读取串口数据
Windows CE系统不支持重叠 I/O,在主线程中进行大量读写串口操作将会使整个系统陷入缓慢的串口等待[8].所以,系统采用多线程技术来进行读写串口操作.在 Windows CE系统中,各个线程间共享绝大部分资源,其中就包括从串口接收到的数据.
按照模块化的编程思想,监测软件采用了3级结构来实现串口数据的读取:
(1)读线程负责监视串口事件,如果有串口事件,则通知回调函数接收串口数据.
(2)回调函数接收串口数据,并以消息形式通知主窗口的数据分析与绘图函数处理其收到的数据.
(3)数据分析与绘图函数负责处理串口数据、显示生理参数与绘制ECG等功能.
数据分析函数在接到数据后,首先定位数据包的数据头.然后,以数据头为定位标志,找到这组数据的两个校验和值.如果这组数据通过校验,则将其存入一个包含25个元素的结构体m_recv中,直接对结构体中的数据进行操作.
要理顺关系。一年来我们感到,各种关系理顺了,工作会事半功倍。要依靠集团纪委的正确领导、职能部门的有力指导,要积极利用地方纪委监委专业资源和力量,更要得到监督单位的充分理解配合,派驻优势才能得到最大发挥。
2.2.1 数据的实时显示
普通对话框只能在实例化一个对象之前给其中的变量赋值.而 CDialogBar类对象则不同,它是由CControlBar类派生而来,在主窗口实例化一个CDialogBar类对象之后,它的句柄在程序运行期间将一直有效,那么就可以对其中的变量进行实时的赋值更新.系统使用一个 DialogBar来显示各种生理参数的数值,然后用函数 SetDlgItemText()来实时更新DialogBar的数据.
对于状态栏,它的句柄在程序运行期间也一直有效.所以,可以用其成员函数SetPaneText()来实时更新各种探头的工作状态.
2.2.2 ECG绘制
为了避免数据在类与类之间的传递,串口数据的接收与处理等相关操作代码都被添加到 MainFrame类中.由EVC的文档/视图结构可知,View类窗体始终覆盖在 Mainframe类窗体之上,所以必须使用View类的DC进行绘图.MFC提供GetActiveView()函数,其返回值是当前活动窗口的指针,经过转化之后,便可以使用函数GetDC()来获取View类的DC.
按照医学标准,一个心率为 60次/min的完整心电图波形的宽度在屏幕上为 25,mm或者 50,mm.按照 CSN808模块的通讯协议,CSN808模块每秒向主控模块发送200个心电波形数据点.而LCD模块的分辨率是 800像素×480像素,显示区域的宽度为170,mm.可以计算出主控模块板应从串口 1中读取数据包的频率为
50×(800/50/4)/(170/25)≈25
以病人的呼吸和心跳两项参数作为数据保存与否的标志.如果这两项参数中,有一项的数值超出了其安全域值,系统将以对话框的形式进行本地报警,并即刻开始保存CSN808模块传来的数据包,直至报警参数均回到安全域值范围之内.
与串口资源一样,文件也属于流接口设备,其创建与打开使用 CreateFile()函数.在打开文件后,只需要将结构体m_recv中的数据追加保存到文件末尾就可实现对数据包连续、规则地保存.
系统采用 GTM900作为远程无线报警模块.在监测系统的报警设计对话框中,有用于设置报警电话号码的文本编辑框.在初次使用系统时,系统会以对话框的形式提醒医护人员设置报警电话号码.在正确设置报警号码后,系统以文件形式将报警号码存储起来并作为默认报警电话号码,直至报警号码被修改.图 3为报警设置对话框,前两组选项用来设定心跳和呼吸频率的报警阈值,最后一个文本编辑框为预置的报警号码.
图3 监测系统的报警设置对话框Fig.3 Alarm Setting dialog box of monitoring system
当监测到作为报警标志的生理参数出现异常时,主控模块就会驱动 GTM900模块向预置的报警号码发出包含报警原因及报警生理参数数值的求救短信息.图4为监测软件的报警模块程序流程图.
图4 监测软件报警模块流程图Fig.4 Alarm module flow chart of monitoring software
生理参数数据包的储存为重现病人发病时各种生理参数提供了基础.数据重现策略是:在打开生理参数数据文件后,每次顺序读取 25个字节的数据,并赋值给 m_recv结构体.然后,调用数据分析与绘图函数处理 m_recv结构体中的数据,并在屏幕上刷新数据和绘制曲线.为模拟 CSN808模块的应答方式,系统采用时间控件,按照 50,Hz的频率重复执行上述过程,直至文件指针移动至生理参数数据文件的结尾.
让被监测者同时佩戴医用监护设备和本监测系统,然后不断的对比两系统的数据以及各导联心电图.并以此作为依据近一步微调人体生理参数监测系统,直至两套系统得出相同的数据、曲线.图 5是监测系统在微调完成之后的效果图.
图5 部分监测界面Fig.5 Monitoring interface example
图5(a)为I导联心电图,主界面右侧区域为用以显示病人各种生理参数数值的对话框;主界面上方为系统设置区域;主界面下方为显示各种探头佩戴状况的状态栏.图5(b)是AVR导联图曲线.图5(c)是呼吸波曲线,为方便医护人员对呼吸波曲线的观察,已将对话框隐藏.
按照CSN808模块的通讯协议,编辑一组心跳数值为 0的测试数据来测试本地报警模式及远程无线报警模式,以验证系统的实时性和准确性.本地报警对话框的文本信息指明了报警原因以及报警参数的数值.
在本地报警对话框出现的 12 s之后,求救短信息发送到了预置报警号码的手机上,短信内容与报警对话框给出的文本内容相同.5 min后停止测试,在此期间系统运行正常.在 Nand Flash中存储有大小为 22.3 kB的文本文件Rec00,它保存了测试期间的生理参数数据包.选择数据复现功能后,数据开始重现,各项参数均正确无误.
本文设计了一种基于 Windows CE的人体生理参数监测系统.系统实现了多种人体生理参数的实时采集、显示,并可选择性地进行对包括 ECG曲线在内的 9种生理参数曲线的绘制.同时,系统在必要的时候能够自动进行人体生理参数数据的保存.在此基础上,还实现了包括本地报警和远程无线报警的两种报警方式.上位机软件以 EVC4.0作为开发平台,并采用了模块化的编程思想,所编写的程序,可移植性好、功能完善、易于维护.目前,系统已经运用到了智能轮椅车上,并取得了较好的效果.
[1] Dakun L,Fang Z. Real-time remote monitoring of out-ofhospital with high patients especially risk heart diseases[C]//Proceeding of the 2007 International IEEE/ICME Conference on Complex Medical Engineering.Piscataway:IEEE,2007:332–335.
[2] 车琳琳. 常用生理参数测量方法的原理及改进[J]. 中国医疗设备,2008,23(8):53–54,77.
[3] 巫琦. 监护仪的临床应用和发展[J]. 医疗装备,2004,17(3):10–12.
[4] 谢存禧. 基于人口老龄化的智能化健康护理、监控装备的研发[J]. 电机工程技术,2010,39(11):86–89.
[5] 赵玉晓,徐志玲,唐川,等. 医院患者无线监控系统的软件设计[J]. 实验室科学,2011,14(1):100–102,106.
[6] 张自明. 基于WinCE的嵌入式平台的研究与实现[D].成都:电子科技大学,2007.
[7] 张毅,王学思. 基于 WinCE的流接口驱动程序开发[J]. 工业控制计算机,2008,21(6):47–48.
[8] 汪兵. Windows CE 嵌入式高级编程及其实例详解[M].北京:中国水利水电出版社,2008:114–129.