摘要:本文中主要介紹了在.NET的框架下通過Windows的服務和多線程的技術實現遠程的心電監測,將多線程技術和.NET靈活結合,通過windows的串口擴展實現多端口對心電同時監測的遠端傳輸請求等,同時實現對心電數據無失真的傳輸和接收,有效的提高資源的利用率以及對遠程的心電診斷性能的整體提升。
關鍵詞:多線程;串口通信;遠程醫療
當前,科學技術發展較為迅猛,應用到醫學臨床研究中,實時監控系統的引入,對于實時觀察了解患者的各項指標具有重要意義,對于指導臨床治療具有較高價值,本文主要研究基于多線程技術的遠程心電監測系統工作,為推廣應用提供參考。
1關于實時監測系統
1.1概述 實時的監控系統或者通信系統最基本的要求和關鍵環節就是實時性,特別是將系統應用到對人體的健康參數監測方面,對實時性的要求更高,而遠程的心電監護則是把對患者的心電圖監測設備留在患者的家中,需要監測記錄患者的即時的心電圖時,需要通過撥號傳輸將檢測結果傳送到醫院的接收中心。遠程的心電監測系統組成部分包括用戶端的心電記錄和傳輸儀器,另一端為醫院的接收中心,可以通過Modem將二者聯系起來,主要是接入到公用電話網實現數據的通信[1]。這就克服傳統的調頻模擬電話在傳輸的過程中存在的缺點,比如抗干擾的能力較弱導致信號失真。通過這和實時的通信系統,用戶的身體指標,特別是心電指標就可以在家利用電話準確的傳送至醫院,及時的獲得到醫生診斷的信息等。
1.2問題提出 實時監測系統的關鍵是醫院的接收中心是如何快速的響應并準確無失真的對心電圖的數據進行接收,這是實現遠程對心電進行監護核心技術。當前,存在的問題是電話網絡普遍的存在著工作站并發和接收的機制不完善,以至于工作站的投入數量較大,而且患者有時需要處在占線等待的狀態等問題。本文則研究利用多線程的機制,探討解決問題的方法。本文引入了win9X/NT,這個操作系統具有支持多任務同時操作的優點,且每個進程都是應用程序獨立的執行,進程至少占一個線程,也就是主線程,同時,還能根據任務的需要快速的建立起其他多個線程。而多線程技術的應用實際意義是進程實現的過程中進行多任務的擴展,賦予代碼并行執行,從而簡化了應用程序結構,提高了對CPU利用率,同時提高應用程序響應的能力,加快了通信程序處理信息的速度,成為數據通信首選的方案[2] 。因此,實時監測系統通過Windows的服務,利用多線程實現遠程的心電接收服務。通過多串口擴展板,每個工作站同時并行接收多路信號,且切信號之間互不干擾,獨立顯示在前臺接受分析,合理高效利用了系統資源,提高了平臺的工作效率以及系統的可靠性。
2在.NET的框架下Windows的服務以及多線程技術
關于Windows服務,以VB.NET為系統框架.通過Service Process空間創建服務類和方法以及屬性和異常事件等,其中Service Base為任何基于.NET服務的基類,然后對控制服務方法進行分類,以On Start ()或者On Stop ()表示,任何自定義服務需要對Service Base的類開展繼承與重載。
關于多線程,需要處理好多個線程的有序性和高效性以及協作性的關系,確保更好的完成多個任務功能,通過在VB.NET框架中對多線程技術的模型進行封裝,并在自由線程的進程空間中命名System.Threading,大大簡化線程控制的過程[3] 。導人命名空間,就可在主線程之上快速的創建起一個工作者的線程,然后對其工作進行定義,確定線程的執行方法。.NET框架可以提供同步處理線程的方案,通過在System.Threading和Enter prise Services等命名的空間中建立同步類,同時提供不同的策略:同步上下文和同步代碼區以及手控同步,以此為基礎實現同步訪問,但是為了確保信息的安全,任何時刻只能夠允許一個線程對共享的資源進行訪問。
3基于多線程的Windows服務應用
醫院的工作站主要運行的軟件功能是遠程的心電數據的接收,工作站包括電子病歷的管理和心電圖的診斷以及報告的管理模塊,工作站的后臺還有信息的接收以及存儲的軟件。前端以基于VB.NET實現的,而后臺的接收僅需要實現被監測患者心電資料的傳輸請求即可,最終完成可靠、無失真的數據傳輸并進行保存,采用VB.NET編寫基于多線程的Windows服務以實現此功能[4]。
一種新型服務應用Hos-service類不僅繼承了.NET的系統System.Service Process.Service Base類,通過重新加載基本的方法On Start()(啟動),On Stop()(結束)來控制服務。為了實現多線程服務,即啟動服務之后,系統的多個串口對串口Modem信號進行同時監測,因此,Hos-service設計出關鍵的兩個成員的變量:一是串口監測類對象組,一類是一組線程變量。還有一種search-comm類,屬于自定義類,主要用來實現串口的監測以及數據的接收功能。首先設計成員變量mrRs232(串口通信類RS232的實例),用于實現對串I=I的讀、寫等操作;其它的成員變量主要用于保存與遠端心電記錄設備的通信狀態及數據庫操作。成員方法有串口初始化、串口監測及數據接收、數據保存、切斷鏈路、異常處理等。
search--comm類的功能實現search-comm類的核心功能是監測串口,成員方法WaitModem按照通信協議實現與遠端心電記錄傳輸設備的通信功能,并完成數據保存。串口資源的訪問不存在互斥問題,但多線程訪問數據庫就存在共享資源的互斥訪問問題了,利用.NET的同步鎖機制SyneLock。心電數據傳輸的通信協議系統采用類似于XMODEM一1K的專用通信協議,協議分為物理鏈路層、Holter協議層、數據包編解碼層。其中物理鏈路層實現Ivlodem撥號應答,通信鏈路的建立;Holter協議層實現心電傳輸設備與PC機間的握手、通信;數據包編解碼層實現設備端編碼、打包、傳輸和PC機端服務軟件的數據接收、解碼、存盤。應用該通信協議時,PC機為主導,而心電傳輸設備則根據其發出的命令信息進行下一步的通信。通信線路接通后,PC機依次發送A2(獲取初始化信息)、A4(開始接收心電數據)、A6(清空心電記錄設備)和A7(掛機)命令給單片機模塊,在發完A4命令,開始接收ECG數據時,PC機分析數據包,正確則發送ACK請求發送下一包,一段數據接收完畢時,將數據存入相應的文件;接收錯誤時,發送NAK請求重發。
總之,通過多線程的技術可以很好地對并發的多任務問題進行解決,不僅提高了資源的利用率以及系統整體的性能,而且拉近了醫患之間交流的距離。本文主要結合了遠程進行心電的監測系統項目的開發和實踐,講述了以.NET為框架之下開展Windows的服務以及多線程核心技術和應用的方法等,同時,使用VB.NET可以有效的實現多線程串行通信,為確保人體的參數在無失真的情況下準確的進行遠程的傳輸提供行之有效方案與策略,一次為基礎更加有效的促進醫療保健以及遠程醫療應用與推廣。
參考文獻:
[1]晏春海, 田蔚風, 王俊璞, 蘇穎.多線程技術在分時串口通 信中的應用I -j]. 儀表技術與傳感器, 2004(5): 15~16.
[2] K ourosh A rdestani, F abi o C l audi o F erracchi ati等著, 康博 譯.V i sual Basic. N E T 線程參考 手冊I -M ].北京 : 清華大 學出版社 , 2002, 158~159.
[3] 李湘江, 湯琛.基 于多線程技術實現W i ndow s 串行通信 [J].微機發展 , 2004 , 14 (2): 63~ 65.
[4] U. Rajendra Acharya,K. Paul Joseph,N. Kannathal,Choo Min Lim,Jasjit S. Suri. Heart rate variability: a review[J]. Medical Biological Engineering Computing,2006 (12) .
[5] Fred Barw ell, Richard Bl air 等著, 康博譯.V isual B asi c. N ET 高級編程[M].北京: 清華大學出版社, 2002, 581~583.
[6]Bao jin Li,Zhifeng Ruan,Yongyu Chang,et al.Wireless Theories and Technologies Lab (WTT) Beijing University of Posts and Telecommunications Beijing,China. Efficient Turbo Frequency Domain Equalization Based on Symbol-Wise Detection[A]. Proceedings of the Symposium on Signal Processing for Communication of ICC 2008[C]. 2008.
編輯/王海靜