基于IOCP的远程心电监控系统设计

2017-10-12 07:21陈永波徐静波王云峰
网络安全与数据管理 2017年18期
关键词:心电线程工作站

陈永波,徐静波,王云峰

(1. 中国科学院大学 微电子学院,北京 100049; 2. 新一代通信射频芯片技术北京市重点实验室,北京 100029; 3. 中国科学院微电子研究所 健康电子研发中心,北京 100029)

基于IOCP的远程心电监控系统设计

陈永波1,2,3,徐静波2,3,王云峰2,3

(1. 中国科学院大学 微电子学院,北京 100049; 2. 新一代通信射频芯片技术北京市重点实验室,北京 100029; 3. 中国科学院微电子研究所 健康电子研发中心,北京 100029)

为保证远程心电监控系统中数据传输的完整性和准确性,设计了基于IOCP(I/O Completion Port)网络通信模型的远程心电监控系统。心电采集设备将ADS1298芯片采集的心电数据封装后,以短连接形式发送至远程心电监测工作站,基于IOCP通信模型搭建的心电监测工作站能够响应大量的设备网络连接请求,并以较低的系统资源处理网络数据包的频繁收发,此外还能对心电数据进行校验、存储、显示和监测。最后通过准确性测试和性能分析,验证了系统的可行性。

心电监测;I/O完成端口;ADS1298;无线传输

Abstract: In order to ensure the integrity and accuracy of data transmission in remote electrocardiography(ECG) monitoring system, a remote ECG monitoring system based on I/O completion port(IOCP) network communication model is designed. After chip ADS1298 completes ECG data collection, ECG acquisition device will encapsulate the data and send it to ECG monitoring workstation. The ECG monitoring workstation which is based on IOCP network model could respond a large number of devices’ network connection requests, and process network packets’ transmission with low system resource. In addition, the workstation could check, store, display and monitor the received ECG data. The feasibility of the system is verified by the accuracy test and performance analysis finally.

Key words:ECG monitoring; I/O completion port; ADS1298; wireless transmission

0 引言

心电图作为诊断心血管疾病的重要依据,由于具有诊断可靠、方法简单、对病人无损害等优点,已在世界范围内得到广泛的应用。随着计算机网提供络、通信等相关技术的迅速发展,心电检测也逐渐应用于远程医疗领域,使医院为心脏病患者提供远程监测服务成为可能[1]。由于长时间的心电数据传输需要保证其完整性和可靠性,为此本文研究设计了一种基于输入/输出完成端口(I/O Completion Port,IOCP)通信模型的远程心电监测系统,为长时间的心电监测提供可行的解决方案。

1 系统概述

本文设计的远程心电监测系统由心电采集设备、无线网络和远程心电监护工作站组成3部分组成,如图1所示。心电采集设备主要负责心电数据的采集、显示和发送,并能接收远程心电监护工作站发送的报警参数,为使用者提供报警服务;无线网络负责数据传输,网络采用Socket(套接字)短连接的方式发送心电数据;远程心电监护工作站负责数据的接收、解析、显示和监测,并能向指定设备发送报警参数,便于实地监护和救助。

图1 远程动态心电系统结构

2 硬件系统设计

心电采集设备会将ADS1298采集到的心电信号通过SPI(串行外设接口)送入A20芯片,然后对信号进行实时的显示和存储,同时设备通过WiFi将心电数据传送至监护工作站,进行在线监测和预警。

设计了无源低通滤波和限幅电路构成数据前置采集电路,实现过压保护和消除高频干扰的功能[2],电路如图2所示。其中低通滤波器截止频率为30 kHz,限幅电路的电压保护范围为±700 mV。

图2 前端预处理电路t

ADS1298由TI公司设计制造。其内部结构如图3所示,其内部含8个独立并行的通道,每个通道都配有低通滤波器、差分放大器、高通滤波器和24 bit精度的 A/D转换器[3]。根据心电模式的具体应用,可以通过A20主控芯片控制多路选择器(MUX)内部各输入端的通断、放大器的放大倍数和A/D转换器的采样频率。

图3 ADS1298芯片框图

系统使用A20芯片作为主控芯片,将SPI0接口与ADS1298连接进行通信,当ADS1298芯片完成一次心电数据采集后,DRDY(Data Ready)引脚将变为低电平,通知A20主控芯片通过SPI0 总线读取数据。此外还扩展了存储单元、WiFi/Internet通信设备、LCD显示器、TP触摸屏等设备,用于显示、存储和发送采集的心电数据。

3 软件系统设计

本文设计的软件系统使用短连接的方式传输心电数据,并且远程监护工作站会将每次接收数据的结果回传给心电采集设备,采集设备根据传输结果判断是否需要数据重传,从而保证长时间采集的动态心电数据可靠传输;远程监护工作站基于IOCP模型搭建数据收发模块,能够以较低的系统资源处理多个心电采集设备传输的数据,保证数据处理效率。

3.1数据封装

常规动态心电采集时间较长,需要长时间的网络传输,如果使用在设备端生成一个Socket以长连接方式传输数据,在网络异常情况下,会出现数据传输异常中断,并且待网络恢复正常后,不能自动建立新的数据传输通道。为解决该问题,本文采用短连接的方式传输数据,以10 s为单位传输采集的心电数据,每10 s创建一个新的Socket与远程监控工作站进行数据传输,在每包心电数据结尾附带会话码,便于工作站管理在线设备。每次发送数据时先将数据进行BASE64编码,并附带MD5校验码,远程监护工作站接收到数据后根据预定的秘钥对数据进行MD5校验,以此保证数据在多级网络中传输的完整性。数据包结构如图4所示。

图4 数据包结构

3.2 IOCP通信模型

因本文使用短连接的方式传输心电数据,若使用传统的Socket线程模型模式实现,即为每个网络事件请求创建一个对应的独立的线程,则须在线程中处理网络事件请求[4]。这种模式在本系统中会使线程不断地开启和关闭,造成系统上下文切换而占用大量的系统资源,降低处理数据效率。

IOCP是一种基于Windows操作系统的异步通信模型,利用少量的系统资源处理高并发的网络事件请求[5]。该模型将网络请求交付给操作系统内核,由系统内核进行异步I/O操作,使用消息队列的方式通知应用程序I/O的完成事件,事先创建好的工作线程得到I/O完成事件通知后,异步处理相关数据业务,在最大程度上减少了系统开销。

远程监护工作站的数据收发模块基于IOCP通信模型设计和开发,在工作站接收到网络请求时,将网络请求的Socket与完成端口绑定,由完成端口处理数据收发工作,使用预先建立好的工作线程监听完成端口的工作队列,并根据工作队列的状态运行对应的逻辑业务。具体步骤如图5所示。

图5 IOCP工作流程

(1)主线程先初始化所要用到的类库、创建完成端口,然后创建并启动监听线程和建立工作者线程组。

(2)监听线程接收到新的网络数据接入请求后,会将接入的Socket绑定至线程中已创建好的完成端口,并向该Socket投递一个接收数据的请求,与之绑定的完成端口会通知系统内核以异步方式接收数据。

(3)工作者线程组通过监听消息队列判断完成端口状态,然后进行具体的业务逻辑处理。若收到数据接收完毕状态,则在系统缓存中获取已接收到的数据,之后对数据进行解析、存储、显示、分析和存储,最后将返回结果封装,向Socket投递发送数据请求,将发送数据的操作交付给系统内核,心电采集设备以该结果判断是否需要重传数据或进行报警;若接收到的是数据发送完毕状态,说明需要向设备发送的数据已传输完毕,在该Socket上投递一个接收数据的请求,将接收数据的操作交给系统内核,等待新的数据接收。

(4)工作者线程若监听到Socket异常断开、超时等异常状态时,会主动关闭异常的Socket,并释放占用的系统资源;在用户主动退出系统时,主线程、工作者线程组和监听线程会将当前接入的网络请求处理完毕后,再关闭并释放系统资源,以保证数据传输的完整性。

3.3心电监测软件设计

本文设计的心电监测软件使用MFC框架在Windows操作系统下搭建,由网络数据解析、心电波形显示、数据存储和报警4部分组成。设计的软件界面如图6所示,支持1~8台设备的监控,每个监控窗口可显示患者的ID号、心电波形和报警信息。

图6 监控界面

进行数据解析时,先对接收到数据进行MD5码校验,以验证数据的完整性和安全性,若MD5码校验失败则判定接收到的数据有误,直接将该数据丢弃;若MD5码校验成功,则进行BASE64解码,将解码得到的心电数据进行存储、显示和监控。

监控界面波形显示使用数据缓存+数据锁的方案进行波形绘制,数据缓存能够避免监控模块与数据解析模块共同使用心电数据造成的数据冲突,使用数据锁避免了数据图形绘制时缓存更新造成的内存冲突和图像失真。

报警模块能使用计算自动报警+人工监控的方式对心电数据进行监控。医师可以从当前活跃设备列表中选取需要监控的设备进行监控,并能设定自动报警阈值,根据实际的心电波形显示的波形和报警信息判断是否需要向指定设备下发报警和解警参数。

4 系统测试

4.1数据准确性测试

使用心电信号模拟发生器产生固定的心电信号,将信号输入本系统和心电监测仪,统计对比两者显示的心电数参数。参数选取P波幅度和时限、QRS波幅度和时限、T波幅度和时限、R-R间期,对比结果如表1所示。可以看出,本系统设计实现的网络传输系统能够保证数据传输的准确性。

表1 心电参数对比

4.2性能测试

采用不同连接数的情况下计算机CPU使用率作为性能测试的评价指标,在主频为2.6 GHz的四核处理器、内存为DDR3 4 GB的计算机下,本系统与传统Socket线程模型[6]对比的测试结果如图7所示。

从图7可以看出,在网络连接数不大的情况下,两者性能相差不大。随着连接数的增加,两者性能差别明显增大,本系统CPU占用率远低于传统Socket线程模式,更适合高并发和大量的网络接入。

5 结论

本文介绍了使用ADS1298数据采集芯片和A20主控芯片搭建采集设备,远程监控工作站基于IOCP网络通信模型实现的一种远程心电监测系统。该系统不仅能够保证大量设备采集的心电数据完整、准确地传输,还能对数据进行实时监测,为突发心脏病的患者提供报警服务,方便实时地快速救援,对心脏病的防治有一定的现实意义。

图7 性能对比

[1] MARCULESCU D, MARCULESCU R, PARK S, et al. Ready to ware[J]. IEEE Spectrum, 2003, 40(10):28-32.

[2] PRUTCHI D, NORRIS M. 医疗电子仪器的设计与开发[M]. 封洲燕,译. 北京:机械工业出版社, 2011.

[3] 宋勐翔, 陈兰岚. 基于ADS1298和STM32F407的心电采集与显示系统设计[J].现代电子技术, 2015,38(13):141-144.

[4] 王丰锦,邵新宇,喻道远,等.基于SOCKET和多线程的应用程序间通信技术的研究[J].计算机应用,2000,20(6):65-67.

[5] 马金, 鑫袁丁. 基于IOCP的高并发通信服务器的设计与实现[J]. 通信技术, 2009,42(7):248-251.

[6] 王维红,樊廷玖. 基于Socket套接字的医学信息传送模块的设计与实现[J]. 中国医学装备, 2014, 11(1):36-39.

Design of remote ECG monitoring system based on IOCP

Chen Yongbo1,2,3, Xu Jingbo2,3, Wang Yunfeng2,3

(1. School of Microelectronics, Chinese Academy of Science, Beijing 100049, China; 2. Beijing Key Laboratory of New Generation Communication Radio Frequency Chip Technology, Beijing 100029, China; 3. Health Electronics R&D Center, Institute of Microelectronics, Chinese Academy of Science, Beijing 100029, China)

R138

A

10.19358/j.issn.1674- 7720.2017.18.029

陈永波,徐静波,王云峰.基于IOCP的远程心电监控系统设计[J].微型机与应用,2017,36(18):99-102,105.

2017-03-16)

陈永波(1988-),男,硕士研究生,主要研究方向:动态心电、分布式网络、信号处理。

猜你喜欢
心电线程工作站
左权浙理大 共建工作站
心电向量图诊断高血压病左心室异常的临床应用
基于C#线程实验探究
戴尔Precision 5750移动工作站
基于国产化环境的线程池模型研究与实现
基于非接触式电极的心电监测系统
线程池调度对服务器性能影响的研究*
穿戴式心电:发展历程、核心技术与未来挑战
更正启事
建立工作站 力促杂志健康发展
——《行政科学论坛》杂志工作站挂牌运行