手術(shù)麻醉部分icu工作交接_第1頁
手術(shù)麻醉部分icu工作交接_第2頁
手術(shù)麻醉部分icu工作交接_第3頁
手術(shù)麻醉部分icu工作交接_第4頁
免費(fèi)預(yù)覽已結(jié)束,剩余8頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第12頁 共12頁ICU工作交接文檔所有項(xiàng)目源碼,都位于:D:RootMy DocumentsVisual Studio ProjectsC+項(xiàng)目中要用到的頭文件:D:RootMy DocumentsC+MyLib項(xiàng)目可執(zhí)行文件位于: D:RootMy DocumentsVisual Studio ProjectsC+數(shù)據(jù)平臺ICU統(tǒng)一數(shù)據(jù)平臺界面及操作介紹數(shù)據(jù)平臺原理介紹主要的類接口介紹醫(yī)療數(shù)據(jù)統(tǒng)一編碼格式MP數(shù)據(jù)分析難點(diǎn)波形繪圖控件工作原理介紹設(shè)備驅(qū)動程序編程步驟8. 120急救系統(tǒng) 數(shù)據(jù)平臺的配置1.ICU統(tǒng)一數(shù)據(jù)平臺界面及操作介紹DataCollector.exe 數(shù)據(jù)采集器,負(fù)責(zé)與設(shè)

2、備連接“中央服務(wù)器IP” 采集到數(shù)據(jù)后,再發(fā)送到此IP操作:選定相應(yīng)左邊的驅(qū)動程序,雙擊即自動添加到右邊的列表雙擊右邊的驅(qū)動程序,就可進(jìn)入配置項(xiàng)(主要分網(wǎng)絡(luò)配置和串口配置)3) 配置完,右鍵點(diǎn)擊右邊的驅(qū)動程序,在彈出的菜單選“啟動”,或直接按“全部啟動”CentralServer.exe 中央轉(zhuǎn)發(fā)器,目的:實(shí)現(xiàn)數(shù)據(jù)接收,轉(zhuǎn)發(fā)經(jīng)及存儲。有數(shù) 據(jù)情況下,即可以用ICU系統(tǒng)查看波形和參數(shù)情況?!氨緳C(jī)IP進(jìn)” 多網(wǎng)卡情況下,采集器數(shù)據(jù)入口網(wǎng)卡地址“本機(jī)IP出” 多網(wǎng)卡情況下,數(shù)據(jù)多播出口網(wǎng)卡地址操作:界面是自解釋的,點(diǎn)開“高級”可進(jìn)行數(shù)據(jù)庫連接配置。數(shù)據(jù)庫存儲功能目前還沒有在此平臺上完全實(shí)現(xiàn),不過,已

3、經(jīng)寫好框架。2.數(shù)據(jù)平臺原理介紹DRIVER數(shù)據(jù)平臺原理介紹DRIVER數(shù)據(jù)平臺原理介紹R醫(yī)療設(shè)備醫(yī)療設(shè)備醫(yī)療設(shè)備DRIVERDRIVERDRIVER醫(yī)療設(shè)備DataCollectorCentralServer數(shù)據(jù)庫存儲多播每個DRIVER都寫成DLL形式,不同類型的醫(yī)療設(shè)備寫不同的驅(qū)動, 驅(qū)動負(fù)責(zé)與醫(yī)療設(shè)備通訊,并把采集到的數(shù)據(jù)轉(zhuǎn)換為統(tǒng)一數(shù)據(jù)格式。DataCollector通過動態(tài)的加載DLL,并動態(tài)的綁定函數(shù)指針實(shí)現(xiàn)驅(qū)動, 具體實(shí)現(xiàn)的代碼,請參看 D:RootMy DocumentsC+MyLibDriver.h, 里面有詳細(xì)注釋DataCollector 將采集到的數(shù)據(jù),通過SOCKET

4、發(fā)送給CentralServerCentralServer 把接收到的數(shù)據(jù)通過多播廣播出去,同時保存到數(shù)據(jù)庫(數(shù)據(jù)保存待完善)3.主要的類接口介紹1) 所有驅(qū)動程序的接口(基類),位于 D:RootMy DocumentsC+MyLibDriverBase.hclass DriverBasepublic:virtual const char* Name() = 0; /返回驅(qū)動程序名virtual const char* Version() = 0; /返回驅(qū)動程序版本號virtual void SetConfig(const char* lpInText);/設(shè)置配置virtual void

5、 GetConfig(char* lpOutText); /輸出配置virtual bool Start() = 0; /啟動驅(qū)動virtual bool Stop() = 0; /停止驅(qū)動void OnReceive(char* lpBuffer, int len); /激發(fā)數(shù)據(jù)到達(dá)事件virtual void OnAbort(LPVOID lpThis); /驅(qū)動程序異常終止回調(diào)virtual DriverBase() protected:void BuildSettings();/初始化配置哈希表int CommPort();/ 返回設(shè)置中的串口號string CommSetting()

6、;/*返回串口配置字符串, 形如:baud=19200 data=8 stop=1 parity=N*/unsigned short DevicePort();/返回配置的(TCP/UDP)端口unsigned short LocalPort();/返回本地(TCP/UDP)端口string DeviceIP();/返回設(shè)備IPstring LocalIP();/返回本地IP;2) 約定: 所以驅(qū)動程序主要類名規(guī)定為:DriverMain, 并繼承自DriverBase.即全部實(shí)現(xiàn)如下:class DriverMain : public DriverBase.; 驅(qū)動實(shí)例動態(tài)綁定代理函數(shù), 代

7、碼位于:D:RootMy DocumentsC+MyLibProxyProc.h 設(shè)計思想 :由于采用WIN32 SDK方式開發(fā),DLL無法導(dǎo)出一個類, 故采用“代理函數(shù)”接口,來控制一個DLL中的類,具體組織關(guān)系如下:Driver DLL 內(nèi)部DriverMain驅(qū)動程序?qū)嶓w類ProxyProc.hDriver DLL 內(nèi)部DriverMain驅(qū)動程序?qū)嶓w類ProxyProc.h以C方式聲明接口DataCollector 封裝所有導(dǎo)出接口為一個類Driver(位于D:RootMy DocumentsC+MyLibDriver.h)3)ProxyProc.h 實(shí)現(xiàn)原理利用 extern C D

8、llExport bool CreateInstance(LPVOID& lpInstance) 在DLL內(nèi)部創(chuàng)建一個DriverMain的實(shí)例,并把實(shí)例指針導(dǎo)出為VOID*。外部調(diào)用其它接口,只要把實(shí)例指針傳回到DLL里面,調(diào)用相應(yīng)的代理接口即可,源碼有相應(yīng)注釋。4) DriverMain 如何提交轉(zhuǎn)換過的數(shù)據(jù)DriverMain將從DriverBase繼承一個OnReceive接口, 當(dāng)DriverMain把數(shù)據(jù)包解析并轉(zhuǎn)換完畢后,就可以提交數(shù)據(jù)??梢詤⒖?ge.dll 代碼, 用法如下 Char buffer_old1024;Char buffer_new1024;接收數(shù)據(jù)到buffer

9、_old, 設(shè)長為len1轉(zhuǎn)換數(shù)據(jù)到buffer_new, 設(shè)處理后長數(shù) len2提交數(shù)據(jù): this-OnReceive(buffer_new, len2);4.醫(yī)療數(shù)據(jù)統(tǒng)一編碼格式由驅(qū)動程序解析后有所有數(shù)據(jù)都將統(tǒng)一為一種格式,數(shù)據(jù)格式具體定義請參考D:RootMy DocumentsC+MyLibuniform.h數(shù)據(jù)傳輸全部采用網(wǎng)絡(luò)位,即高位在前 data 表示2字節(jié)數(shù)據(jù) data 表示4字節(jié)數(shù)據(jù) 表示1字節(jié)數(shù)據(jù)LENGTH 表示后面附加的字節(jié)數(shù), 不包括 P / W, IP, 包括兩字節(jié)校驗(yàn)波形點(diǎn)數(shù) 表示后面附加的波形點(diǎn)數(shù) 表示后面附加的參數(shù)個數(shù)IP 源IP(采集電腦IP)CRC16

10、整個數(shù)據(jù)包CRC16校驗(yàn)值4字節(jié)數(shù)據(jù)包頭 Wave Parameter Alert.統(tǒng)一波形包定義=W IP LENGTH 波形ID1 波形數(shù)據(jù)1 波形數(shù)據(jù)2 . 波形ID2 波形數(shù)據(jù)1 波形數(shù)據(jù)2 . . 統(tǒng)一參數(shù)包定義=P IP LENGTH 參數(shù)ID1 參數(shù)值1 參數(shù)值2 . 參數(shù)ID2 參數(shù)值1 參數(shù)值2 . . 小數(shù)表示=根據(jù)參數(shù)ID判斷數(shù)據(jù)類型,如果是溫度(TMP)等小數(shù)參數(shù),表示為小數(shù)值*100;37.02表示為 3702;5.MP數(shù)據(jù)分析難點(diǎn)MP數(shù)據(jù)采集目前有兩種方法采用MP 手冊(m8000-9305c Data Export_with_wave.pdf)上面介紹的方法, 但

11、只能采集到參數(shù),無波形。采用“擴(kuò)展MIB協(xié)議”, 可以采集到參數(shù)和波形下面主要討論第二種方法。MIB 重要參考資料位于: D:ICUMPReferenceMIB由于本人找到的只是MIB的 Draft Copy, 有些數(shù)據(jù)格式并非嚴(yán)格按照MIB草案上面解析, 遇到這種情況, 應(yīng)盡量在原MP手冊中找相關(guān)的數(shù)據(jù)格式,如果能套得上就是沒錯的。目前可工作的MP代碼位于: D:RootMy DocumentsVisual Studio ProjectsC+DrivermpMIB 數(shù)據(jù)格式基本構(gòu)成MIB所采用面向?qū)ο蠓椒ǘx所有的數(shù)據(jù)及操作,主要構(gòu)造如下Object-ID:object-id (為一個uns

12、igned short)/*根據(jù)上面的object-id決定下面的數(shù)據(jù)格式, Object-ID 在MIB資料中有詳細(xì)定*義,每個ID對應(yīng)不同數(shù)據(jù)格式*/Length: length ( unsigned short); 后面數(shù)據(jù)內(nèi)容長度Data: byte data1 ; 這里的data1只是一個占位符MP的“擴(kuò)展MIB數(shù)據(jù)格式”經(jīng)抓包研究分析,MP在MIB協(xié)議上還進(jìn)行了包裝,應(yīng)該是為了實(shí)現(xiàn)可靠UDP傳輸。不同的請求或應(yīng)答數(shù)據(jù)包包頭都不同。格式如下(請參考MP項(xiàng)目里的define.cpp文件)Head - 18 字節(jié)MP數(shù)據(jù)包頭Body - MIB格式數(shù)據(jù) Head 舉例/以下是請求連接命令

13、extern byte AssociationAbort = /mphead, 開始18字節(jié)MP數(shù)據(jù)包頭0 x10,0 x00,0 x00,0 x30,0 x10,0 x00,0 x00,0 x00,0 x05,0 x82, /* 第8,9字節(jié)構(gòu)成一個unsigned short, 用于數(shù)據(jù)包編號,重要!* 任一方發(fā)送的數(shù)據(jù),這個編號應(yīng)該都是連續(xù)的,否則MP設(shè)備會認(rèn)為“丟包”* 而不應(yīng)答.編號可以從1開始。*/0 x00,0 x10,0 x00,0 x10,0 x00,0 x30,0 x00,0 x00,/MIB數(shù)據(jù)體開始0 x19,0 x2E,0 x11,0 x01,x03,0 xC1,0

14、x29,0 xA0,0 x80,0 xA0,0 x80,0 x30,0 x80,0 x02,0 x01,0 x01,0 x06,0 x02,0 x51,0 x01,0 x00,0 x00,0 x00,0 x00,0 x61,0 x80,0 x30,0 x80,0 x02,0 x01,0 x01,0 xA0,0 x80,0 x64,0 x80,0 x80,0 x01,0 x01,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00;5) 可能要完善的地方:MP項(xiàng)目-DriverMain.h, 函數(shù) ParseNumeric以及 P

15、arseWave;如果發(fā)現(xiàn)新的參數(shù)或波形,應(yīng)根據(jù)“統(tǒng)一數(shù)據(jù)格式”定義的新的ID,并做相應(yīng)的數(shù)據(jù)轉(zhuǎn)換, 這樣上層應(yīng)用程序就會取得相應(yīng)參數(shù)或波形。6.波形繪圖控件工作原理介紹項(xiàng)目名稱: WaveMonitor, 生成控件名: WaveMonitor.ocx 目前位置:D:RootMy DocumentsVisual Studio ProjectsC+WaveMonitor V2.1.4主要功能:實(shí)時平滑繪制波形及參數(shù)可動態(tài)選擇波形或參數(shù),并設(shè)置顏色及字體大小閃爍及聲音報警(用Beep() API實(shí)現(xiàn))導(dǎo)出生理參數(shù)接口核心原理(源碼中有詳細(xì)注釋):實(shí)時性解決UDP接收線程接收到數(shù)據(jù)后,不做數(shù)據(jù)拷貝,

16、并直接壓入緩沖隊(duì)列馬上返回數(shù)據(jù)處理線程循環(huán)請求緩沖隊(duì)列,處理完數(shù)據(jù)后形壓入繪圖隊(duì)列為了繪圖的平滑性,應(yīng)最好只緩沖一個數(shù)據(jù)包計算前后兩次到達(dá)的數(shù)據(jù)包時間間隔,用當(dāng)前時間間隔預(yù)測下一個數(shù)據(jù)包到來的時間,據(jù)此立即調(diào)整繪圖的頻率(每畫一個點(diǎn)的時間間隔)平滑繪圖的實(shí)現(xiàn)由于Windows里面的 Timer 基于消息機(jī)制, 非常不精通, 我自己用多媒體API封裝了一個類,可以精確到毫秒。實(shí)際測試比較理想,但比較占用系統(tǒng)CPU時間。代碼位置:D:RootMy DocumentsC+MyLibMMTimer.h采用GDI+繪制, 并啟用Antialias功能3) 擦除模式實(shí)現(xiàn)循環(huán)記錄下前面畫過的點(diǎn),通過繪制一小

17、段黑色的曲線實(shí)現(xiàn)擦除效果。這樣,即使兩個波形穿插在一起,效果也比較美觀,不會發(fā)生擦除越界的事情。只用一個定時器,多個不同采樣點(diǎn)的波形如何同步?設(shè)波形A有60個采樣點(diǎn),波形B有 24 個采樣點(diǎn),目前采用以下“編號”的方式實(shí)現(xiàn)。設(shè)每個采用點(diǎn)用一個 unsigned shoft (WORD)表示, 現(xiàn)在定義新的繪圖點(diǎn)為unsigned long (DWORD), 用高位的WORD來記錄編號,低位的WORD記錄原來采樣點(diǎn),即Bit31 Bit16 Bit15 Bit0 編號Tick 波形采樣點(diǎn)現(xiàn)在,轉(zhuǎn)換波形A為新的格式編號 | 值NEW_A = 1 | A1 , 2 | A2 , 3 | A 3 60

18、 | A60現(xiàn)在,轉(zhuǎn)換波形B為上面的格式,“編號”計算方法設(shè)Nn為第n個點(diǎn), n從1開始,則Nn = 1+ (60 / 24) * (n 1) = 1 + 2 * (n-1); 因此,新的B波形為NEW_B = 1 | B1, 4 | B2 . 47 | B24繪圖偽代碼Int j = 1;For(int I = 1 to 60)畫NEW_Ai & 0 xffff;If ( I = (NEW_Bj 16) )畫NEW_Bj;J+;7.設(shè)備驅(qū)動程序編程步驟在寫新的設(shè)備驅(qū)動程序之前,請查看之前的代碼,簡單的有UP8000等 確認(rèn)VC+包含目錄中有 MyLib一項(xiàng)。(目前位置:D:RootMy DocumentsC+MyLib)新建一個MFC DLL, 可以選擇靜態(tài)模式, 選用非Unicode編碼新建一個DriverMain的類, 把 MyLib DriverMain_Te

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論