陳永波,徐靜波,王云峰
(1. 中國科學(xué)院大學(xué) 微電子學(xué)院,北京 100049; 2. 新一代通信射頻芯片技術(shù)北京市重點(diǎn)實(shí)驗(yàn)室,北京 100029; 3. 中國科學(xué)院微電子研究所 健康電子研發(fā)中心,北京 100029)
基于IOCP的遠(yuǎn)程心電監(jiān)控系統(tǒng)設(shè)計(jì)
陳永波1,2,3,徐靜波2,3,王云峰2,3
(1. 中國科學(xué)院大學(xué) 微電子學(xué)院,北京 100049; 2. 新一代通信射頻芯片技術(shù)北京市重點(diǎn)實(shí)驗(yàn)室,北京 100029; 3. 中國科學(xué)院微電子研究所 健康電子研發(fā)中心,北京 100029)
為保證遠(yuǎn)程心電監(jiān)控系統(tǒng)中數(shù)據(jù)傳輸?shù)耐暾院蜏?zhǔn)確性,設(shè)計(jì)了基于IOCP(I/O Completion Port)網(wǎng)絡(luò)通信模型的遠(yuǎn)程心電監(jiān)控系統(tǒng)。心電采集設(shè)備將ADS1298芯片采集的心電數(shù)據(jù)封裝后,以短連接形式發(fā)送至遠(yuǎn)程心電監(jiān)測工作站,基于IOCP通信模型搭建的心電監(jiān)測工作站能夠響應(yīng)大量的設(shè)備網(wǎng)絡(luò)連接請求,并以較低的系統(tǒng)資源處理網(wǎng)絡(luò)數(shù)據(jù)包的頻繁收發(fā),此外還能對心電數(shù)據(jù)進(jìn)行校驗(yàn)、存儲、顯示和監(jiān)測。最后通過準(zhǔn)確性測試和性能分析,驗(yàn)證了系統(tǒng)的可行性。
心電監(jiān)測;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
心電圖作為診斷心血管疾病的重要依據(jù),由于具有診斷可靠、方法簡單、對病人無損害等優(yōu)點(diǎn),已在世界范圍內(nèi)得到廣泛的應(yīng)用。隨著計(jì)算機(jī)網(wǎng)提供絡(luò)、通信等相關(guān)技術(shù)的迅速發(fā)展,心電檢測也逐漸應(yīng)用于遠(yuǎn)程醫(yī)療領(lǐng)域,使醫(yī)院為心臟病患者提供遠(yuǎn)程監(jiān)測服務(wù)成為可能[1]。由于長時(shí)間的心電數(shù)據(jù)傳輸需要保證其完整性和可靠性,為此本文研究設(shè)計(jì)了一種基于輸入/輸出完成端口(I/O Completion Port,IOCP)通信模型的遠(yuǎn)程心電監(jiān)測系統(tǒng),為長時(shí)間的心電監(jiān)測提供可行的解決方案。
本文設(shè)計(jì)的遠(yuǎn)程心電監(jiān)測系統(tǒng)由心電采集設(shè)備、無線網(wǎng)絡(luò)和遠(yuǎn)程心電監(jiān)護(hù)工作站組成3部分組成,如圖1所示。心電采集設(shè)備主要負(fù)責(zé)心電數(shù)據(jù)的采集、顯示和發(fā)送,并能接收遠(yuǎn)程心電監(jiān)護(hù)工作站發(fā)送的報(bào)警參數(shù),為使用者提供報(bào)警服務(wù);無線網(wǎng)絡(luò)負(fù)責(zé)數(shù)據(jù)傳輸,網(wǎng)絡(luò)采用Socket(套接字)短連接的方式發(fā)送心電數(shù)據(jù);遠(yuǎn)程心電監(jiān)護(hù)工作站負(fù)責(zé)數(shù)據(jù)的接收、解析、顯示和監(jiān)測,并能向指定設(shè)備發(fā)送報(bào)警參數(shù),便于實(shí)地監(jiān)護(hù)和救助。
圖1 遠(yuǎn)程動態(tài)心電系統(tǒng)結(jié)構(gòu)
心電采集設(shè)備會將ADS1298采集到的心電信號通過SPI(串行外設(shè)接口)送入A20芯片,然后對信號進(jìn)行實(shí)時(shí)的顯示和存儲,同時(shí)設(shè)備通過WiFi將心電數(shù)據(jù)傳送至監(jiān)護(hù)工作站,進(jìn)行在線監(jiān)測和預(yù)警。
設(shè)計(jì)了無源低通濾波和限幅電路構(gòu)成數(shù)據(jù)前置采集電路,實(shí)現(xiàn)過壓保護(hù)和消除高頻干擾的功能[2],電路如圖2所示。其中低通濾波器截止頻率為30 kHz,限幅電路的電壓保護(hù)范圍為±700 mV。
圖2 前端預(yù)處理電路t
ADS1298由TI公司設(shè)計(jì)制造。其內(nèi)部結(jié)構(gòu)如圖3所示,其內(nèi)部含8個(gè)獨(dú)立并行的通道,每個(gè)通道都配有低通濾波器、差分放大器、高通濾波器和24 bit精度的 A/D轉(zhuǎn)換器[3]。根據(jù)心電模式的具體應(yīng)用,可以通過A20主控芯片控制多路選擇器(MUX)內(nèi)部各輸入端的通斷、放大器的放大倍數(shù)和A/D轉(zhuǎn)換器的采樣頻率。
圖3 ADS1298芯片框圖
系統(tǒng)使用A20芯片作為主控芯片,將SPI0接口與ADS1298連接進(jìn)行通信,當(dāng)ADS1298芯片完成一次心電數(shù)據(jù)采集后,DRDY(Data Ready)引腳將變?yōu)榈碗娖?,通知A20主控芯片通過SPI0 總線讀取數(shù)據(jù)。此外還擴(kuò)展了存儲單元、WiFi/Internet通信設(shè)備、LCD顯示器、TP觸摸屏等設(shè)備,用于顯示、存儲和發(fā)送采集的心電數(shù)據(jù)。
本文設(shè)計(jì)的軟件系統(tǒng)使用短連接的方式傳輸心電數(shù)據(jù),并且遠(yuǎn)程監(jiān)護(hù)工作站會將每次接收數(shù)據(jù)的結(jié)果回傳給心電采集設(shè)備,采集設(shè)備根據(jù)傳輸結(jié)果判斷是否需要數(shù)據(jù)重傳,從而保證長時(shí)間采集的動態(tài)心電數(shù)據(jù)可靠傳輸;遠(yuǎn)程監(jiān)護(hù)工作站基于IOCP模型搭建數(shù)據(jù)收發(fā)模塊,能夠以較低的系統(tǒng)資源處理多個(gè)心電采集設(shè)備傳輸?shù)臄?shù)據(jù),保證數(shù)據(jù)處理效率。
3.1數(shù)據(jù)封裝
常規(guī)動態(tài)心電采集時(shí)間較長,需要長時(shí)間的網(wǎng)絡(luò)傳輸,如果使用在設(shè)備端生成一個(gè)Socket以長連接方式傳輸數(shù)據(jù),在網(wǎng)絡(luò)異常情況下,會出現(xiàn)數(shù)據(jù)傳輸異常中斷,并且待網(wǎng)絡(luò)恢復(fù)正常后,不能自動建立新的數(shù)據(jù)傳輸通道。為解決該問題,本文采用短連接的方式傳輸數(shù)據(jù),以10 s為單位傳輸采集的心電數(shù)據(jù),每10 s創(chuàng)建一個(gè)新的Socket與遠(yuǎn)程監(jiān)控工作站進(jìn)行數(shù)據(jù)傳輸,在每包心電數(shù)據(jù)結(jié)尾附帶會話碼,便于工作站管理在線設(shè)備。每次發(fā)送數(shù)據(jù)時(shí)先將數(shù)據(jù)進(jìn)行BASE64編碼,并附帶MD5校驗(yàn)碼,遠(yuǎn)程監(jiān)護(hù)工作站接收到數(shù)據(jù)后根據(jù)預(yù)定的秘鑰對數(shù)據(jù)進(jìn)行MD5校驗(yàn),以此保證數(shù)據(jù)在多級網(wǎng)絡(luò)中傳輸?shù)耐暾浴?shù)據(jù)包結(jié)構(gòu)如圖4所示。
圖4 數(shù)據(jù)包結(jié)構(gòu)
3.2 IOCP通信模型
因本文使用短連接的方式傳輸心電數(shù)據(jù),若使用傳統(tǒng)的Socket線程模型模式實(shí)現(xiàn),即為每個(gè)網(wǎng)絡(luò)事件請求創(chuàng)建一個(gè)對應(yīng)的獨(dú)立的線程,則須在線程中處理網(wǎng)絡(luò)事件請求[4]。這種模式在本系統(tǒng)中會使線程不斷地開啟和關(guān)閉,造成系統(tǒng)上下文切換而占用大量的系統(tǒng)資源,降低處理數(shù)據(jù)效率。
IOCP是一種基于Windows操作系統(tǒng)的異步通信模型,利用少量的系統(tǒng)資源處理高并發(fā)的網(wǎng)絡(luò)事件請求[5]。該模型將網(wǎng)絡(luò)請求交付給操作系統(tǒng)內(nèi)核,由系統(tǒng)內(nèi)核進(jìn)行異步I/O操作,使用消息隊(duì)列的方式通知應(yīng)用程序I/O的完成事件,事先創(chuàng)建好的工作線程得到I/O完成事件通知后,異步處理相關(guān)數(shù)據(jù)業(yè)務(wù),在最大程度上減少了系統(tǒng)開銷。
遠(yuǎn)程監(jiān)護(hù)工作站的數(shù)據(jù)收發(fā)模塊基于IOCP通信模型設(shè)計(jì)和開發(fā),在工作站接收到網(wǎng)絡(luò)請求時(shí),將網(wǎng)絡(luò)請求的Socket與完成端口綁定,由完成端口處理數(shù)據(jù)收發(fā)工作,使用預(yù)先建立好的工作線程監(jiān)聽完成端口的工作隊(duì)列,并根據(jù)工作隊(duì)列的狀態(tài)運(yùn)行對應(yīng)的邏輯業(yè)務(wù)。具體步驟如圖5所示。
圖5 IOCP工作流程
(1)主線程先初始化所要用到的類庫、創(chuàng)建完成端口,然后創(chuàng)建并啟動監(jiān)聽線程和建立工作者線程組。
(2)監(jiān)聽線程接收到新的網(wǎng)絡(luò)數(shù)據(jù)接入請求后,會將接入的Socket綁定至線程中已創(chuàng)建好的完成端口,并向該Socket投遞一個(gè)接收數(shù)據(jù)的請求,與之綁定的完成端口會通知系統(tǒng)內(nèi)核以異步方式接收數(shù)據(jù)。
(3)工作者線程組通過監(jiān)聽消息隊(duì)列判斷完成端口狀態(tài),然后進(jìn)行具體的業(yè)務(wù)邏輯處理。若收到數(shù)據(jù)接收完畢狀態(tài),則在系統(tǒng)緩存中獲取已接收到的數(shù)據(jù),之后對數(shù)據(jù)進(jìn)行解析、存儲、顯示、分析和存儲,最后將返回結(jié)果封裝,向Socket投遞發(fā)送數(shù)據(jù)請求,將發(fā)送數(shù)據(jù)的操作交付給系統(tǒng)內(nèi)核,心電采集設(shè)備以該結(jié)果判斷是否需要重傳數(shù)據(jù)或進(jìn)行報(bào)警;若接收到的是數(shù)據(jù)發(fā)送完畢狀態(tài),說明需要向設(shè)備發(fā)送的數(shù)據(jù)已傳輸完畢,在該Socket上投遞一個(gè)接收數(shù)據(jù)的請求,將接收數(shù)據(jù)的操作交給系統(tǒng)內(nèi)核,等待新的數(shù)據(jù)接收。
(4)工作者線程若監(jiān)聽到Socket異常斷開、超時(shí)等異常狀態(tài)時(shí),會主動關(guān)閉異常的Socket,并釋放占用的系統(tǒng)資源;在用戶主動退出系統(tǒng)時(shí),主線程、工作者線程組和監(jiān)聽線程會將當(dāng)前接入的網(wǎng)絡(luò)請求處理完畢后,再關(guān)閉并釋放系統(tǒng)資源,以保證數(shù)據(jù)傳輸?shù)耐暾浴?/p>
3.3心電監(jiān)測軟件設(shè)計(jì)
本文設(shè)計(jì)的心電監(jiān)測軟件使用MFC框架在Windows操作系統(tǒng)下搭建,由網(wǎng)絡(luò)數(shù)據(jù)解析、心電波形顯示、數(shù)據(jù)存儲和報(bào)警4部分組成。設(shè)計(jì)的軟件界面如圖6所示,支持1~8臺設(shè)備的監(jiān)控,每個(gè)監(jiān)控窗口可顯示患者的ID號、心電波形和報(bào)警信息。
圖6 監(jiān)控界面
進(jìn)行數(shù)據(jù)解析時(shí),先對接收到數(shù)據(jù)進(jìn)行MD5碼校驗(yàn),以驗(yàn)證數(shù)據(jù)的完整性和安全性,若MD5碼校驗(yàn)失敗則判定接收到的數(shù)據(jù)有誤,直接將該數(shù)據(jù)丟棄;若MD5碼校驗(yàn)成功,則進(jìn)行BASE64解碼,將解碼得到的心電數(shù)據(jù)進(jìn)行存儲、顯示和監(jiān)控。
監(jiān)控界面波形顯示使用數(shù)據(jù)緩存+數(shù)據(jù)鎖的方案進(jìn)行波形繪制,數(shù)據(jù)緩存能夠避免監(jiān)控模塊與數(shù)據(jù)解析模塊共同使用心電數(shù)據(jù)造成的數(shù)據(jù)沖突,使用數(shù)據(jù)鎖避免了數(shù)據(jù)圖形繪制時(shí)緩存更新造成的內(nèi)存沖突和圖像失真。
報(bào)警模塊能使用計(jì)算自動報(bào)警+人工監(jiān)控的方式對心電數(shù)據(jù)進(jìn)行監(jiān)控。醫(yī)師可以從當(dāng)前活躍設(shè)備列表中選取需要監(jiān)控的設(shè)備進(jìn)行監(jiān)控,并能設(shè)定自動報(bào)警閾值,根據(jù)實(shí)際的心電波形顯示的波形和報(bào)警信息判斷是否需要向指定設(shè)備下發(fā)報(bào)警和解警參數(shù)。
4.1數(shù)據(jù)準(zhǔn)確性測試
使用心電信號模擬發(fā)生器產(chǎn)生固定的心電信號,將信號輸入本系統(tǒng)和心電監(jiān)測儀,統(tǒng)計(jì)對比兩者顯示的心電數(shù)參數(shù)。參數(shù)選取P波幅度和時(shí)限、QRS波幅度和時(shí)限、T波幅度和時(shí)限、R-R間期,對比結(jié)果如表1所示??梢钥闯?,本系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)的網(wǎng)絡(luò)傳輸系統(tǒng)能夠保證數(shù)據(jù)傳輸?shù)臏?zhǔn)確性。
表1 心電參數(shù)對比
4.2性能測試
采用不同連接數(shù)的情況下計(jì)算機(jī)CPU使用率作為性能測試的評價(jià)指標(biāo),在主頻為2.6 GHz的四核處理器、內(nèi)存為DDR3 4 GB的計(jì)算機(jī)下,本系統(tǒng)與傳統(tǒng)Socket線程模型[6]對比的測試結(jié)果如圖7所示。
從圖7可以看出,在網(wǎng)絡(luò)連接數(shù)不大的情況下,兩者性能相差不大。隨著連接數(shù)的增加,兩者性能差別明顯增大,本系統(tǒng)CPU占用率遠(yuǎn)低于傳統(tǒng)Socket線程模式,更適合高并發(fā)和大量的網(wǎng)絡(luò)接入。
本文介紹了使用ADS1298數(shù)據(jù)采集芯片和A20主控芯片搭建采集設(shè)備,遠(yuǎn)程監(jiān)控工作站基于IOCP網(wǎng)絡(luò)通信模型實(shí)現(xiàn)的一種遠(yuǎn)程心電監(jiān)測系統(tǒng)。該系統(tǒng)不僅能夠保證大量設(shè)備采集的心電數(shù)據(jù)完整、準(zhǔn)確地傳輸,還能對數(shù)據(jù)進(jìn)行實(shí)時(shí)監(jiān)測,為突發(fā)心臟病的患者提供報(bào)警服務(wù),方便實(shí)時(shí)地快速救援,對心臟病的防治有一定的現(xiàn)實(shí)意義。
圖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. 醫(yī)療電子儀器的設(shè)計(jì)與開發(fā)[M]. 封洲燕,譯. 北京:機(jī)械工業(yè)出版社, 2011.
[3] 宋勐翔, 陳蘭嵐. 基于ADS1298和STM32F407的心電采集與顯示系統(tǒng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù), 2015,38(13):141-144.
[4] 王豐錦,邵新宇,喻道遠(yuǎn),等.基于SOCKET和多線程的應(yīng)用程序間通信技術(shù)的研究[J].計(jì)算機(jī)應(yīng)用,2000,20(6):65-67.
[5] 馬金, 鑫袁丁. 基于IOCP的高并發(fā)通信服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)[J]. 通信技術(shù), 2009,42(7):248-251.
[6] 王維紅,樊廷玖. 基于Socket套接字的醫(yī)學(xué)信息傳送模塊的設(shè)計(jì)與實(shí)現(xiàn)[J]. 中國醫(yī)學(xué)裝備, 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的遠(yuǎn)程心電監(jiān)控系統(tǒng)設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2017,36(18):99-102,105.
2017-03-16)
陳永波(1988-),男,碩士研究生,主要研究方向:動態(tài)心電、分布式網(wǎng)絡(luò)、信號處理。