基于wince的心电图机软件系统设计与实现
扫描二维码
随时随地手机看文章
摘要:设计并实现了一款基于Windows CE的嵌入式心电图机软件系统。该系统采用Windows CE所支持的多线程、实时性等技术,能够对心电数据进行实时采集、显示和存储并能进行数据实时处理与自动分析,并具有界面美观、操作人性化、高性能、多功能等特点。
关键词:Windows CE;心电图;多线程;实时性;自动分析
0 引言
据世界卫生组织的数据,心血管病已经成为造成全球人口死亡的主要因素。由于心电图检查在诊断此病上具有准确可靠、方法简便、对病人无损害等特点,在临床上被广泛应用。然而目前普遍采用的基于PC机平台的心电图机,虽功能全面,但体积庞大、成本较高。而市场上便携式心电图机大多采用低档单片机实现,无操作系统,处理能力弱,功能简单,只能进行心电信号的采集、显示与简单的数据处理,人机界面不友好。随着大规模的专用集成电路和计算机芯片的发展,基于32 bit微处理器的嵌入式系统以低成本、较高的性能和可靠性等诸多优势,应用日益广泛。基于这种现状,本文提出了一款高性能、多功能的便携式心电图机,采用AU1250处理器与Windows CE操作系统,全面提升了产品的处理能力,并使用具有触摸功能的大型LCD显示屏,能同步整体显示十二导联同一心动周期的波形,让医生可以更加准确地作出判断,从而提高了准确率。该机并能对心电波形数据进行测量分析、存储、回放、编辑、打印等。
1 硬件系统简介
系统硬件结构如图1所示。
本系统选择AU1250作为控制核心。AU1250是一款高性能、低功耗(<400 mW@400 MHz)、高集成度的嵌入式处理器。AU1250属于MIPS架构,集成USB(OTG)、SD卡等接口。也是目前市场上为数不多的支持分辨率为1 280*800大型LCD显示屏的处理器之一。
基于软件系统对实时处理以及永久保存大量数据的需要,以AU1250为核心的主板配备了128 MB的SDRAM、2 MB的NOR FLASH以及2 GB的NAND FLASH等存储芯片。并对外提供USB、SD卡(可用于外扩数据存储)、UART、100 Mb/s以太网口等通信接口,实现对采集卡、热敏打印、数据存储等模块的调度。[!--empirenews.page--]
2 软件系统设计
本软件系统,主要由两部分组成:
(1)Windows CE嵌入式实时操作系统;
(2)心电图应用程序。
2.1 Windows CE嵌入式实时操作系统
Windows CE系统是一种紧凑、高效、可伸缩的32位的操作系统,其所具有的多线程、多任务、完全抢占式的特点是专为各种有很严格资源限制的硬件系统所设计的。其模块化的设计使嵌入式系统和应用程序开发者能够方便地加以定制以适应一系列产品。
综合考虑到软件的性能要求,以及操作系统对硬件的支持及二次开发的简便性等方面,本系统采用了微软公司的Windows CE。并利用Pl-atform Builder5.0集成开发环境,根据产品的需要及硬件资源的考虑,裁剪内核、添加所需的驱动,定制一款精简的符合产品需求的操作系统。
2.2 心电图应用程序设计
心电图应用程序整体框图如图2所示,主要包括以下几个主要功能:
(1)人机交互
(2)数据采集
(3)波形显示
(4)数据处理与测量分析
(5)数据存储
其中数据采集、波形显示和人机交互三个功能要求能够并发的同步进行,否则系统会有比较大的延时现象。所以本应用程序利用多个线程分别完成不同的任务。
2.2.1 人机交互
本系统的人机交互包括机器面板的功能键以及用户图形界面两部分,作为响应用户的操作,并接收消息控制各个模块的运行。
(1)功能键部分:包括ID键,开始/停止记录键,模式切换键等。其响应处理的实现方式为:事件+注册表。底层驱动利用中断的方式,检测按键的动作,如键按下便把对应的键值写到注册表,然后通过SctEvent()方式通知应用程序。应用程序首先开辟一个线程,利用WaitF-orSingleObject()等待按键事件的发生,然后读取并判断注册表的键值,调用对应的功能函数。考虑到驱动进程与应用程序有可能同时访问并改写注册表,为了保证数据访问的安全性,在读写注册表时,使用Mutex同步机制来确保一次只有一个进程使用该资源。
(2)用户图形界面:根据市场发展需求,并形成竞争力,产品界面须既美观时尚,又方便易用。基于此方面的考虑以及软硬件系统的支持,本系统图形界面的按钮均采用加载位图的方式,把绚丽的图片应用于各个按钮。字体方面,也使用AddFontResource()函数动态加载了微软雅黑与华康圆体字库。并综合医生意见,简化操作流程,使整个操作界面极富人性化。[!--empirenews.page--]
2.2. 2 数据采集
为了保证数据的采集不被其他线程中断,本系统开辟了一个优先级较高的线程来采集数据。
(1)数据接收
由于采集卡的采样率为1 000次/秒,数据量较大,为了提高其与上位机传输数据的速度以及考虑到接口的可扩展性,本系统的数据采集卡集成了USB控制器FT245芯片,并在软件系统中加载了FTD2XX.DLL驱动,实现了以USB协议传输数据、上位机模拟串口接收数据的方式。采集线程只需打开串口不断接收数据,尔后再根据定义的数据包协议分别解出各个通道的数据以及导联脱落状态信息,并送到数据预处理模块进行滤波及导联脱落处理。
(2)数据同步采集的方法
数据预处理完毕后,采用SetEvent()的方式通知显示线程读取数据显示。为了保证公共数据缓冲区数据的正确性,采用临界区Critical Section来实现采集与显示线程的同步。
2.2.3 波形显示
本系统采用了医疗系统中较常见的实时显示方法,即扫描式,从左到右画,新进的点覆盖原来的点,中间有一段缓冲区刷掉旧点,画到最右端时,又从最左端画下一幅图,不断重复。同时为了防止闪烁,采用了双缓存技术。
心电图机一般需显示的波形有两种:导联波形显示,如12导联同步显示;节律波形显示,如检查心率不齐时,长时间连续的显示单一和多通道导联波形。为了方便医生在导联与节律两种模式下切换观察,本系统创建了两个后台绘图线程。当为导联显示模式时,把所绘导联波形的内存DC不断拷贝到屏幕DC上显示,节律绘图线程仍然后台运行。反之,为节律显示模式。
2.2.4 数据存储
(1)病人基本信息及分析结果存储:
SQLite是一个轻量级的嵌入式关系数据库,可以较为方便地运用于嵌入式系统中。相对于传统数据库,SQLite具有更好的实时性、系统开销小、底层控制能力强的特性。
由于本系统的病人基本信息及分析结果的存储,只涉及建立表格、查询、修改、插入、删除、排序等操作,因此采用精干高效的SQLite完全能够满足本平台的要求,并利用其支持的SQL命令及提供的API接口,操作十分方便。
(2)病人心电数据存储:
鉴于心电数据量比较大,为了快速存储以及便于管理,采用了文件的存储方式。首先在SQLite中建立心电数据PatiemEcgData表,包括病人ID、姓名、心电数据长度、心电数据文件的相对路径等字段,心电数据以文件方式保存的同时,将该文件的相对路径存到数据库。当进行历史波形回放时,只需根据病人ID,搜索心电数据文件路径,读取文件数据进行绘图显示即可。
2.2.5 数据处理与检测分析
2.2.5.1 数据滤波处理
ECG和绝大多数的生物数字信号一样,都是信噪比很低的微弱信号,往往混有很强的背景噪声,如工频干扰、肌电干扰、基线漂移等。噪声严重时可完全淹没ECG信号或使基线漂移剧烈。因此必须从硬件设备消除噪声影响的同时,也要从软件上去消除,本系统的数据滤波处理主要根据各噪声的频率特性设计不同的数字滤波器予以滤除。
2.2.5.2 数据检测分析
(1)特征提取
进行自动分析前,首先要进行特征提取。特征提取包括两部分:(1)波形识别,对ECG所包括的P波、T波和QRS波群进行识别。(2)测量出各波形的幅度和间期,以便提供给后面的分析程序。
准确地检测每一个QRS波是波形识别的首要任务,如果QRS波检测出现错误,其后进行的T、P波检测,各种参数测量及诊断分类均失去了意义。基于嵌入式平台的特点,QRS波群检测算法上采用了传统差分阈值法,可实现实时检测。
QRS波一旦识别,便可根据PQPST各波斜率特性,计算并定位各自的分界点。尔后进行各种参数测量和计算,包括心率、P波时限、P-R(P-Q)间期、QRS时限、Q-T(QTC)间期、平均心电轴、各波振幅等。
(2)自动分析:
图3所示的是整个ECG分析方法。将特征提取过程产生的测量参数作为输入量,进入决策逻辑或统计过程。决策逻辑是基于规则的专家系统来模仿专家的决策过程以确定和描述病人的病情。这些规则集是根据医学专家的知识来开发的,通过一组IF-THEN语句,最后成为一个或多个分析结果语句,并打印在分析结果报告上。
3 总结
本文简要介绍了基于wince的心电图机硬件系统的组成,以及对整个软件系统的设计进行了分模块的阐述与分析。目前已完成第一版本产品样机的开发,经测试系统运行良好,分析算法也以美国的MIT心电数据库为标准进行测试,其准确性达到符合临床诊断要求。该产品已准备进入工厂量产阶段。