摘要:設計并實現了一款基于Windows CE" title="Windows CE">Windows CE的嵌入式心電圖" title="心電圖">心電圖機軟件系統。該系統采用Windows CE所支持的多線程" title="多線程">多線程、實時性" title="實時性">實時性等技術,能夠對心電數據進行實時采集、顯示和存儲并能進行數據實時處理與自動分析" title="自動分析">自動分析,并具有界面美觀、操作人性化、高性能、多功能等特點。
關鍵詞: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以太網口等通信接口,實現對采集卡、熱敏打印、數據存儲等模塊的調度。
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()函數動態加載了微軟雅黑與華康圓體字庫。并綜合醫生意見,簡化操作流程,使整個操作界面極富人性化。
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心電數據庫為標準進行測試,其準確性達到符合臨床診斷要求。該產品已準備進入工廠量產階段。