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

下載本文檔

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

文檔簡(jiǎn)介

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

2、備連接“中央服務(wù)器IP” 采集到數(shù)據(jù)后,再發(fā)送到此IP操作:選定相應(yīng)左邊的驅(qū)動(dòng)程序,雙擊即自動(dòng)添加到右邊的列表雙擊右邊的驅(qū)動(dòng)程序,就可進(jìn)入配置項(xiàng)(主要分網(wǎng)絡(luò)配置和串口配置)3) 配置完,右鍵點(diǎn)擊右邊的驅(qū)動(dòng)程序,在彈出的菜單選“啟動(dòng)”,或直接按“全部啟動(dòng)”CentralServer.exe 中央轉(zhuǎn)發(fā)器,目的:實(shí)現(xiàn)數(shù)據(jù)接收,轉(zhuǎn)發(fā)經(jīng)及存儲(chǔ)。有數(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)開(kāi)“高級(jí)”可進(jìn)行數(shù)據(jù)庫(kù)連接配置。數(shù)據(jù)庫(kù)存儲(chǔ)功能目前還沒(méi)有在此平臺(tái)上完全實(shí)現(xiàn),不過(guò),已

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

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

5、 GetConfig(char* lpOutText); /輸出配置virtual bool Start() = 0; /啟動(dòng)驅(qū)動(dòng)virtual bool Stop() = 0; /停止驅(qū)動(dòng)void OnReceive(char* lpBuffer, int len); /激發(fā)數(shù)據(jù)到達(dá)事件virtual void OnAbort(LPVOID lpThis); /驅(qū)動(dòng)程序異常終止回調(diào)virtual DriverBase() protected:void BuildSettings();/初始化配置哈希表int CommPort();/ 返回設(shè)置中的串口號(hào)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ū)動(dòng)程序主要類(lèi)名規(guī)定為:DriverMain, 并繼承自DriverBase.即全部實(shí)現(xiàn)如下:class DriverMain : public DriverBase.; 驅(qū)動(dòng)實(shí)例動(dòng)態(tài)綁定代理函數(shù), 代

7、碼位于:D:RootMy DocumentsC+MyLibProxyProc.h 設(shè)計(jì)思想 :由于采用WIN32 SDK方式開(kāi)發(fā),DLL無(wú)法導(dǎo)出一個(gè)類(lèi), 故采用“代理函數(shù)”接口,來(lái)控制一個(gè)DLL中的類(lèi),具體組織關(guān)系如下:Driver DLL 內(nèi)部DriverMain驅(qū)動(dòng)程序?qū)嶓w類(lèi)ProxyProc.hDriver DLL 內(nèi)部DriverMain驅(qū)動(dòng)程序?qū)嶓w類(lèi)ProxyProc.h以C方式聲明接口DataCollector 封裝所有導(dǎo)出接口為一個(gè)類(lèi)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)建一個(gè)DriverMain的實(shí)例,并把實(shí)例指針導(dǎo)出為VOID*。外部調(diào)用其它接口,只要把實(shí)例指針傳回到DLL里面,調(diào)用相應(yīng)的代理接口即可,源碼有相應(yīng)注釋。4) DriverMain 如何提交轉(zhuǎn)換過(guò)的數(shù)據(jù)DriverMain將從DriverBase繼承一個(gè)OnReceive接口, 當(dāng)DriverMain把數(shù)據(jù)包解析并轉(zhuǎn)換完畢后,就可以提交數(shù)據(jù)??梢詤⒖?ge.dll 代碼, 用法如下 Char buffer_old1024;Char buffer_new1024;接收數(shù)據(jù)到buffer

9、_old, 設(shè)長(zhǎng)為len1轉(zhuǎn)換數(shù)據(jù)到buffer_new, 設(shè)處理后長(zhǎng)數(shù) len2提交數(shù)據(jù): this-OnReceive(buffer_new, len2);4.醫(yī)療數(shù)據(jù)統(tǒng)一編碼格式由驅(qū)動(dòng)程序解析后有所有數(shù)據(jù)都將統(tǒng)一為一種格式,數(shù)據(jù)格式具體定義請(qǐng)參考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ù)個(gè)數(shù)IP 源IP(采集電腦IP)CRC16

10、整個(gè)數(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ù)類(lèi)型,如果是溫度(TMP)等小數(shù)參數(shù),表示為小數(shù)值*100;37.02表示為 3702;5.MP數(shù)據(jù)分析難點(diǎn)MP數(shù)據(jù)采集目前有兩種方法采用MP 手冊(cè)(m8000-9305c Data Export_with_wave.pdf)上面介紹的方法, 但

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

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

13、extern byte AssociationAbort = /mphead, 開(kāi)始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)成一個(gè)unsigned short, 用于數(shù)據(jù)包編號(hào),重要!* 任一方發(fā)送的數(shù)據(jù),這個(gè)編號(hào)應(yīng)該都是連續(xù)的,否則MP設(shè)備會(huì)認(rèn)為“丟包”* 而不應(yīng)答.編號(hào)可以從1開(kāi)始。*/0 x00,0 x10,0 x00,0 x10,0 x00,0 x30,0 x00,0 x00,/MIB數(shù)據(jù)體開(kāi)始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)用程序就會(huì)取得相應(yīng)參數(shù)或波形。6.波形繪圖控件工作原理介紹項(xiàng)目名稱(chēng): WaveMonitor, 生成控件名: WaveMonitor.ocx 目前位置:D:RootMy DocumentsVisual Studio ProjectsC+WaveMonitor V2.1.4主要功能:實(shí)時(shí)平滑繪制波形及參數(shù)可動(dòng)態(tài)選擇波形或參數(shù),并設(shè)置顏色及字體大小閃爍及聲音報(bào)警(用Beep() API實(shí)現(xiàn))導(dǎo)出生理參數(shù)接口核心原理(源碼中有詳細(xì)注釋?zhuān)簩?shí)時(shí)性解決UDP接收線(xiàn)程接收到數(shù)據(jù)后,不做數(shù)據(jù)拷貝,

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

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

18、 | A60現(xiàn)在,轉(zhuǎn)換波形B為上面的格式,“編號(hào)”計(jì)算方法設(shè)Nn為第n個(gè)點(diǎn), n從1開(kāi)始,則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)畫(huà)NEW_Ai & 0 xffff;If ( I = (NEW_Bj 16) )畫(huà)NEW_Bj;J+;7.設(shè)備驅(qū)動(dòng)程序編程步驟在寫(xiě)新的設(shè)備驅(qū)動(dòng)程序之前,請(qǐng)查看之前的代碼,簡(jiǎn)單的有UP8000等 確認(rèn)VC+包含目錄中有 MyLib一項(xiàng)。(目前位置:D:RootMy DocumentsC+MyLib)新建一個(gè)MFC DLL, 可以選擇靜態(tài)模式, 選用非Unicode編碼新建一個(gè)DriverMain的類(lèi), 把 MyLib DriverMain_Te

溫馨提示

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

評(píng)論

0/150

提交評(píng)論