姜紅 于鋒 劉桂芳
摘要:本文中主要介紹了在.NET的框架下通過(guò)Windows的服務(wù)和多線程的技術(shù)實(shí)現(xiàn)遠(yuǎn)程的心電監(jiān)測(cè),將多線程技術(shù)和.NET靈活結(jié)合,通過(guò)windows的串口擴(kuò)展實(shí)現(xiàn)多端口對(duì)心電同時(shí)監(jiān)測(cè)的遠(yuǎn)端傳輸請(qǐng)求等,同時(shí)實(shí)現(xiàn)對(duì)心電數(shù)據(jù)無(wú)失真的傳輸和接收,有效的提高資源的利用率以及對(duì)遠(yuǎn)程的心電診斷性能的整體提升。
關(guān)鍵詞:多線程;串口通信;遠(yuǎn)程醫(yī)療
當(dāng)前,科學(xué)技術(shù)發(fā)展較為迅猛,應(yīng)用到醫(yī)學(xué)臨床研究中,實(shí)時(shí)監(jiān)控系統(tǒng)的引入,對(duì)于實(shí)時(shí)觀察了解患者的各項(xiàng)指標(biāo)具有重要意義,對(duì)于指導(dǎo)臨床治療具有較高價(jià)值,本文主要研究基于多線程技術(shù)的遠(yuǎn)程心電監(jiān)測(cè)系統(tǒng)工作,為推廣應(yīng)用提供參考。
1關(guān)于實(shí)時(shí)監(jiān)測(cè)系統(tǒng)
1.1概述 實(shí)時(shí)的監(jiān)控系統(tǒng)或者通信系統(tǒng)最基本的要求和關(guān)鍵環(huán)節(jié)就是實(shí)時(shí)性,特別是將系統(tǒng)應(yīng)用到對(duì)人體的健康參數(shù)監(jiān)測(cè)方面,對(duì)實(shí)時(shí)性的要求更高,而遠(yuǎn)程的心電監(jiān)護(hù)則是把對(duì)患者的心電圖監(jiān)測(cè)設(shè)備留在患者的家中,需要監(jiān)測(cè)記錄患者的即時(shí)的心電圖時(shí),需要通過(guò)撥號(hào)傳輸將檢測(cè)結(jié)果傳送到醫(yī)院的接收中心。遠(yuǎn)程的心電監(jiān)測(cè)系統(tǒng)組成部分包括用戶端的心電記錄和傳輸儀器,另一端為醫(yī)院的接收中心,可以通過(guò)Modem將二者聯(lián)系起來(lái),主要是接入到公用電話網(wǎng)實(shí)現(xiàn)數(shù)據(jù)的通信[1]。這就克服傳統(tǒng)的調(diào)頻模擬電話在傳輸?shù)倪^(guò)程中存在的缺點(diǎn),比如抗干擾的能力較弱導(dǎo)致信號(hào)失真。通過(guò)這和實(shí)時(shí)的通信系統(tǒng),用戶的身體指標(biāo),特別是心電指標(biāo)就可以在家利用電話準(zhǔn)確的傳送至醫(yī)院,及時(shí)的獲得到醫(yī)生診斷的信息等。
1.2問(wèn)題提出 實(shí)時(shí)監(jiān)測(cè)系統(tǒng)的關(guān)鍵是醫(yī)院的接收中心是如何快速的響應(yīng)并準(zhǔn)確無(wú)失真的對(duì)心電圖的數(shù)據(jù)進(jìn)行接收,這是實(shí)現(xiàn)遠(yuǎn)程對(duì)心電進(jìn)行監(jiān)護(hù)核心技術(shù)。當(dāng)前,存在的問(wèn)題是電話網(wǎng)絡(luò)普遍的存在著工作站并發(fā)和接收的機(jī)制不完善,以至于工作站的投入數(shù)量較大,而且患者有時(shí)需要處在占線等待的狀態(tài)等問(wèn)題。本文則研究利用多線程的機(jī)制,探討解決問(wèn)題的方法。本文引入了win9X/NT,這個(gè)操作系統(tǒng)具有支持多任務(wù)同時(shí)操作的優(yōu)點(diǎn),且每個(gè)進(jìn)程都是應(yīng)用程序獨(dú)立的執(zhí)行,進(jìn)程至少占一個(gè)線程,也就是主線程,同時(shí),還能根據(jù)任務(wù)的需要快速的建立起其他多個(gè)線程。而多線程技術(shù)的應(yīng)用實(shí)際意義是進(jìn)程實(shí)現(xiàn)的過(guò)程中進(jìn)行多任務(wù)的擴(kuò)展,賦予代碼并行執(zhí)行,從而簡(jiǎn)化了應(yīng)用程序結(jié)構(gòu),提高了對(duì)CPU利用率,同時(shí)提高應(yīng)用程序響應(yīng)的能力,加快了通信程序處理信息的速度,成為數(shù)據(jù)通信首選的方案[2] 。因此,實(shí)時(shí)監(jiān)測(cè)系統(tǒng)通過(guò)Windows的服務(wù),利用多線程實(shí)現(xiàn)遠(yuǎn)程的心電接收服務(wù)。通過(guò)多串口擴(kuò)展板,每個(gè)工作站同時(shí)并行接收多路信號(hào),且切信號(hào)之間互不干擾,獨(dú)立顯示在前臺(tái)接受分析,合理高效利用了系統(tǒng)資源,提高了平臺(tái)的工作效率以及系統(tǒng)的可靠性。
2在.NET的框架下Windows的服務(wù)以及多線程技術(shù)
關(guān)于Windows服務(wù),以VB.NET為系統(tǒng)框架.通過(guò)Service Process空間創(chuàng)建服務(wù)類和方法以及屬性和異常事件等,其中Service Base為任何基于.NET服務(wù)的基類,然后對(duì)控制服務(wù)方法進(jìn)行分類,以O(shè)n Start ()或者On Stop ()表示,任何自定義服務(wù)需要對(duì)Service Base的類開(kāi)展繼承與重載。
關(guān)于多線程,需要處理好多個(gè)線程的有序性和高效性以及協(xié)作性的關(guān)系,確保更好的完成多個(gè)任務(wù)功能,通過(guò)在VB.NET框架中對(duì)多線程技術(shù)的模型進(jìn)行封裝,并在自由線程的進(jìn)程空間中命名System.Threading,大大簡(jiǎn)化線程控制的過(guò)程[3] 。導(dǎo)人命名空間,就可在主線程之上快速的創(chuàng)建起一個(gè)工作者的線程,然后對(duì)其工作進(jìn)行定義,確定線程的執(zhí)行方法。.NET框架可以提供同步處理線程的方案,通過(guò)在System.Threading和Enter prise Services等命名的空間中建立同步類,同時(shí)提供不同的策略:同步上下文和同步代碼區(qū)以及手控同步,以此為基礎(chǔ)實(shí)現(xiàn)同步訪問(wèn),但是為了確保信息的安全,任何時(shí)刻只能夠允許一個(gè)線程對(duì)共享的資源進(jìn)行訪問(wèn)。
3基于多線程的Windows服務(wù)應(yīng)用
醫(yī)院的工作站主要運(yùn)行的軟件功能是遠(yuǎn)程的心電數(shù)據(jù)的接收,工作站包括電子病歷的管理和心電圖的診斷以及報(bào)告的管理模塊,工作站的后臺(tái)還有信息的接收以及存儲(chǔ)的軟件。前端以基于VB.NET實(shí)現(xiàn)的,而后臺(tái)的接收僅需要實(shí)現(xiàn)被監(jiān)測(cè)患者心電資料的傳輸請(qǐng)求即可,最終完成可靠、無(wú)失真的數(shù)據(jù)傳輸并進(jìn)行保存,采用VB.NET編寫(xiě)基于多線程的Windows服務(wù)以實(shí)現(xiàn)此功能[4]。
一種新型服務(wù)應(yīng)用Hos-service類不僅繼承了.NET的系統(tǒng)System.Service Process.Service Base類,通過(guò)重新加載基本的方法On Start()(啟動(dòng)),On Stop()(結(jié)束)來(lái)控制服務(wù)。為了實(shí)現(xiàn)多線程服務(wù),即啟動(dòng)服務(wù)之后,系統(tǒng)的多個(gè)串口對(duì)串口Modem信號(hào)進(jìn)行同時(shí)監(jiān)測(cè),因此,Hos-service設(shè)計(jì)出關(guān)鍵的兩個(gè)成員的變量:一是串口監(jiān)測(cè)類對(duì)象組,一類是一組線程變量。還有一種search-comm類,屬于自定義類,主要用來(lái)實(shí)現(xiàn)串口的監(jiān)測(cè)以及數(shù)據(jù)的接收功能。首先設(shè)計(jì)成員變量mrRs232(串口通信類RS232的實(shí)例),用于實(shí)現(xiàn)對(duì)串I=I的讀、寫(xiě)等操作;其它的成員變量主要用于保存與遠(yuǎn)端心電記錄設(shè)備的通信狀態(tài)及數(shù)據(jù)庫(kù)操作。成員方法有串口初始化、串口監(jiān)測(cè)及數(shù)據(jù)接收、數(shù)據(jù)保存、切斷鏈路、異常處理等。
search--comm類的功能實(shí)現(xiàn)search-comm類的核心功能是監(jiān)測(cè)串口,成員方法WaitModem按照通信協(xié)議實(shí)現(xiàn)與遠(yuǎn)端心電記錄傳輸設(shè)備的通信功能,并完成數(shù)據(jù)保存。串口資源的訪問(wèn)不存在互斥問(wèn)題,但多線程訪問(wèn)數(shù)據(jù)庫(kù)就存在共享資源的互斥訪問(wèn)問(wèn)題了,利用.NET的同步鎖機(jī)制SyneLock。心電數(shù)據(jù)傳輸?shù)耐ㄐ艆f(xié)議系統(tǒng)采用類似于XMODEM一1K的專用通信協(xié)議,協(xié)議分為物理鏈路層、Holter協(xié)議層、數(shù)據(jù)包編解碼層。其中物理鏈路層實(shí)現(xiàn)Ivlodem撥號(hào)應(yīng)答,通信鏈路的建立;Holter協(xié)議層實(shí)現(xiàn)心電傳輸設(shè)備與PC機(jī)間的握手、通信;數(shù)據(jù)包編解碼層實(shí)現(xiàn)設(shè)備端編碼、打包、傳輸和PC機(jī)端服務(wù)軟件的數(shù)據(jù)接收、解碼、存盤(pán)。應(yīng)用該通信協(xié)議時(shí),PC機(jī)為主導(dǎo),而心電傳輸設(shè)備則根據(jù)其發(fā)出的命令信息進(jìn)行下一步的通信。通信線路接通后,PC機(jī)依次發(fā)送A2(獲取初始化信息)、A4(開(kāi)始接收心電數(shù)據(jù))、A6(清空心電記錄設(shè)備)和A7(掛機(jī))命令給單片機(jī)模塊,在發(fā)完A4命令,開(kāi)始接收ECG數(shù)據(jù)時(shí),PC機(jī)分析數(shù)據(jù)包,正確則發(fā)送ACK請(qǐng)求發(fā)送下一包,一段數(shù)據(jù)接收完畢時(shí),將數(shù)據(jù)存入相應(yīng)的文件;接收錯(cuò)誤時(shí),發(fā)送NAK請(qǐng)求重發(fā)。
總之,通過(guò)多線程的技術(shù)可以很好地對(duì)并發(fā)的多任務(wù)問(wèn)題進(jìn)行解決,不僅提高了資源的利用率以及系統(tǒng)整體的性能,而且拉近了醫(yī)患之間交流的距離。本文主要結(jié)合了遠(yuǎn)程進(jìn)行心電的監(jiān)測(cè)系統(tǒng)項(xiàng)目的開(kāi)發(fā)和實(shí)踐,講述了以.NET為框架之下開(kāi)展Windows的服務(wù)以及多線程核心技術(shù)和應(yīng)用的方法等,同時(shí),使用VB.NET可以有效的實(shí)現(xiàn)多線程串行通信,為確保人體的參數(shù)在無(wú)失真的情況下準(zhǔn)確的進(jìn)行遠(yuǎn)程的傳輸提供行之有效方案與策略,一次為基礎(chǔ)更加有效的促進(jìn)醫(yī)療保健以及遠(yuǎn)程醫(yī)療應(yīng)用與推廣。
參考文獻(xiàn):
[1]晏春海, 田蔚風(fēng), 王俊璞, 蘇穎.多線程技術(shù)在分時(shí)串口通 信中的應(yīng)用I -j]. 儀表技術(shù)與傳感器, 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 線程參考 手冊(cè)I -M ].北京 : 清華大 學(xué)出版社 , 2002, 158~159.
[3] 李湘江, 湯琛.基 于多線程技術(shù)實(shí)現(xiàn)W i ndow s 串行通信 [J].微機(jī)發(fā)展 , 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 高級(jí)編程[M].北京: 清華大學(xué)出版社, 2002, 581~583.
[6]Bao jin Li,Zhifeng Ruan,Yongyu Chang,et al.Wireless Theories and Technologies Lab (WT&T) 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.
編輯/王海靜