專(zhuān)利名稱(chēng)::一種三維圖像服務(wù)器多任務(wù)管理調(diào)度方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及通信
技術(shù)領(lǐng)域:
,具體涉及一種三維圖像服務(wù)器多任務(wù)管理調(diào)度方法。
背景技術(shù):
:三維可視化技術(shù)對(duì)于臨床醫(yī)學(xué)的精確診斷以及手術(shù)計(jì)劃越來(lái)越重要的作用。先進(jìn)的醫(yī)學(xué)影像設(shè)備是先進(jìn)的醫(yī)學(xué)圖像處理與分析的基礎(chǔ),特別是多排CT(computedtomography,計(jì)算機(jī)斷層成像術(shù))與高場(chǎng)MR(Magneticresonanceimaging,磁共振)帶給臨床的是更快的掃描速度(0.5S)、更高的圖像分辨率(0.3MM)、更多的單個(gè)病人數(shù)據(jù)量(>2000層)、更廣泛的臨床應(yīng)用,與此同時(shí),需要更豐富的軟件處理能力。在醫(yī)學(xué)診斷中,醫(yī)務(wù)人員通過(guò)觀察多組二維(2D)斷層圖像,在大腦中進(jìn)行三維(3D)數(shù)據(jù)的重建,以此來(lái)確定病變體的空間結(jié)構(gòu)。這就難以準(zhǔn)確確定病變體的空間位置、大小、幾何形狀及與周?chē)锝M織之間的關(guān)系。因此,從一系列二維斷層圖像生成三維圖像在醫(yī)學(xué)觀察中有越來(lái)越迫切的需要。對(duì)于過(guò)去長(zhǎng)期使用單排CT的醫(yī)生來(lái)說(shuō),先進(jìn)影像設(shè)備不但硬件的提升,也是診斷技術(shù)、診斷方式上的革命性的改變。如果依然延續(xù)過(guò)去單排CT或普通MR的掃描、處理、診斷方式,在很大的程度上,不能發(fā)揮設(shè)備革命性的升級(jí)對(duì)診斷的重大影響。要充分體現(xiàn)先進(jìn)影像設(shè)備的臨床應(yīng)用價(jià)值,挖掘海量數(shù)據(jù)的診斷內(nèi)容,就需要從常規(guī)的2D閱片工作站與時(shí)倶進(jìn)提升到3D專(zhuān)業(yè)工作站。醫(yī)生可以從大量圖像數(shù)據(jù)中,找到真正有價(jià)值的圖像,減少診斷信息上的疏漏。除放射科室以外,3D醫(yī)療影像在手術(shù)計(jì)劃以及教學(xué)演示等,同樣起著相當(dāng)重要的作用。醫(yī)生依靠先進(jìn)的PACS(PictureArchingandCommunicationSystem)系統(tǒng)和數(shù)字化3D專(zhuān)業(yè)軟件,可以更直觀、更精確、多角度來(lái)觀察組織形態(tài)結(jié)構(gòu),真正享受由專(zhuān)業(yè)軟件帶來(lái)的快速、有效、直觀的工作環(huán)境。3D專(zhuān)業(yè)工作站系統(tǒng)將為臨床閱片提供新一代的解決方案。在兼容傳統(tǒng)2D閱片工作站的基礎(chǔ)上,提供更適合醫(yī)生認(rèn)識(shí)與思維的診斷信息。根據(jù)醫(yī)學(xué)圖像精度高、內(nèi)容豐富的要求,光線(xiàn)跟蹤算法(Raycastting)是所有三維圖像重建中最合適的重建方式。光線(xiàn)跟蹤算法的特點(diǎn)是圖像質(zhì)量很高,但其中采樣、三線(xiàn)性插值等的計(jì)算量很大,使得圖像重建速度慢。雖然已經(jīng)有了很多優(yōu)化方法,要進(jìn)行實(shí)時(shí)顯示,普通計(jì)算機(jī)的計(jì)算能力還是無(wú)法達(dá)到要求,再加上圖像數(shù)據(jù)量非常龐大,光從PACS存儲(chǔ)服務(wù)器將二維斷層圖像數(shù)據(jù)加載到閱片工作站就要花很多時(shí)間,因此現(xiàn)有技術(shù)的閱片工作站并不適合進(jìn)行三維圖像重建。三維圖像服務(wù)器任務(wù)處理方式和單機(jī)三維圖像工作站不同,必須支持多客戶(hù)端的請(qǐng)求任務(wù),為了實(shí)現(xiàn)多任務(wù)并行處理,常用的通信服務(wù)處理方法是啟動(dòng)一個(gè)主線(xiàn)程實(shí)時(shí)監(jiān)聽(tīng)客戶(hù)端發(fā)過(guò)來(lái)的請(qǐng)求,當(dāng)接收到一個(gè)請(qǐng)求后主線(xiàn)程會(huì)新啟動(dòng)一個(gè)子線(xiàn)程負(fù)責(zé)處理該客戶(hù)端的請(qǐng)求任務(wù),然后主線(xiàn)程繼續(xù)監(jiān)聽(tīng)請(qǐng)求,子線(xiàn)程完成客戶(hù)端的處理任務(wù)后將結(jié)果還回給客戶(hù)端然后斷開(kāi)連接,子線(xiàn)程結(jié)束任務(wù)銷(xiāo)毀線(xiàn)程占用資源。使用這種方法可以滿(mǎn)足并行處理的要求,但是用于三維處理的二維斷層圖像數(shù)據(jù)都非常龐大,一般情況下標(biāo)準(zhǔn)的三維體數(shù)據(jù)分辨率在X:512,Y:512,Z:512像素以上,醫(yī)學(xué)圖像數(shù)據(jù)每個(gè)像素最小12位灰階值,也就是每個(gè)像素要占兩個(gè)字節(jié),一個(gè)用戶(hù)連接到三維圖像服務(wù)器打開(kāi)一個(gè)檢查,三維圖像服務(wù)器內(nèi)存就要開(kāi)辟一個(gè)512*512*512*2=256MB的空間用來(lái)存放數(shù)據(jù)體,再加上可視化重建需要分配的輔助空間,如果將所有連接進(jìn)來(lái)的用戶(hù)都放在一個(gè)進(jìn)程中進(jìn)行處理,三維服務(wù)進(jìn)程占用的內(nèi)存將非常大,對(duì)操作系統(tǒng)的管理能力要求非常高。再加上線(xiàn)程雖然相互獨(dú)立運(yùn)行,可使用的資源是共用的,他們之間有可能存在相互影響。多個(gè)任務(wù)同時(shí)進(jìn)行處理過(guò)程中,有一個(gè)任務(wù)處理發(fā)生錯(cuò)誤無(wú)法執(zhí)行下去的時(shí)候有可能會(huì)影響到其它任務(wù)的執(zhí)行,由于各種錯(cuò)誤的累積必然會(huì)出現(xiàn)一些不可預(yù)知情況的發(fā)生,最后可能導(dǎo)致三維圖像服務(wù)器服務(wù)程序崩潰。
發(fā)明內(nèi)容本發(fā)明要解決的技術(shù)問(wèn)題是提供一種三維圖像服務(wù)器多任務(wù)管理調(diào)度方法,克服現(xiàn)有技術(shù)服務(wù)器通信服務(wù)單純采用子線(xiàn)程與每個(gè)客戶(hù)端進(jìn)行通信,容易導(dǎo)致通信服務(wù)不穩(wěn)定的缺陷。本發(fā)明為解決上述技術(shù)問(wèn)題所采用的技術(shù)方案為—種三維圖像服務(wù)器多任務(wù)管理調(diào)度方法,包括步驟Al、三維圖像服務(wù)器與至少一個(gè)客戶(hù)端通過(guò)私有通信協(xié)議分別建立命令通道連接和數(shù)據(jù)通道連接;A2、在所述三維圖像服務(wù)器中建立相應(yīng)的命令通道處理進(jìn)程、數(shù)據(jù)通道處理進(jìn)程和任務(wù)處理進(jìn)程,并開(kāi)辟進(jìn)程間通信共享內(nèi)存區(qū);A3、所述命令通道處理進(jìn)程與所述客戶(hù)端傳遞交互命令和操作參數(shù);A4、所述任務(wù)處理進(jìn)程根據(jù)所述操作參數(shù)進(jìn)行圖像三維重建并生成三維圖像數(shù)據(jù);A5、所述數(shù)據(jù)通道處理進(jìn)程向所述客戶(hù)端發(fā)送所述三維圖像數(shù)據(jù)。所述的三維圖像服務(wù)器多任務(wù)管理調(diào)度方法,其中所述步驟A2包括步驟建立管理進(jìn)程,由所述管理進(jìn)程開(kāi)辟所述進(jìn)程間通信共享內(nèi)存區(qū)。所述的三維圖像服務(wù)器多任務(wù)管理調(diào)度方法,其中所述步驟A2包括步驟所述管理進(jìn)程為所述命令通道處理進(jìn)程、所述數(shù)據(jù)通道處理進(jìn)程和所述任務(wù)處理進(jìn)程在所述進(jìn)程間通信共享內(nèi)存區(qū)內(nèi)分配內(nèi)存資源。所述的三維圖像服務(wù)器多任務(wù)管理調(diào)度方法,其中所述步驟A2包括步驟所述管理進(jìn)程在所述進(jìn)程間通信共享內(nèi)存區(qū)內(nèi)設(shè)置進(jìn)程狀態(tài)表,所述進(jìn)程狀態(tài)表用于標(biāo)記進(jìn)程的狀態(tài)。所述的三維圖像服務(wù)器多任務(wù)管理調(diào)度方法,其中所述步驟A2包括步驟所述管理進(jìn)程在所述進(jìn)程間通信共享內(nèi)存區(qū)內(nèi)設(shè)置進(jìn)程消息表,所述進(jìn)程消息表用于存儲(chǔ)進(jìn)程間進(jìn)行通信的消息內(nèi)容。所述的三維圖像服務(wù)器多任務(wù)管理調(diào)度方法,其中所述步驟A2包括步驟所述管理進(jìn)程在所述進(jìn)程間通信共享內(nèi)存區(qū)內(nèi)設(shè)置子進(jìn)程屬性信息結(jié)構(gòu),所述子進(jìn)程屬性信息結(jié)構(gòu)用于標(biāo)記進(jìn)程的相關(guān)信息。所述的三維圖像服務(wù)器多任務(wù)管理調(diào)度方法,其中所述步驟A2包括步驟所述管理進(jìn)程在所述進(jìn)程間通信共享內(nèi)存區(qū)內(nèi)設(shè)置命令通道信息結(jié)構(gòu)。所述的三維圖像服務(wù)器多任務(wù)管理調(diào)度方法,其中所述步驟A2包括步驟所述管理進(jìn)程在所述進(jìn)程間通信共享內(nèi)存區(qū)內(nèi)設(shè)置數(shù)據(jù)通道信息結(jié)構(gòu)。所述的三維圖像服務(wù)器多任務(wù)管理調(diào)度方法,其中所述步驟A2包括步驟所述管理進(jìn)程在所述進(jìn)程間通信共享內(nèi)存區(qū)內(nèi)設(shè)置管理進(jìn)程屬性信息結(jié)構(gòu)。所述的三維圖像服務(wù)器多任務(wù)管理調(diào)度方法,其中所述管理進(jìn)程預(yù)先啟動(dòng)至少一個(gè)命令通道處理進(jìn)程、至少一個(gè)數(shù)據(jù)通道處理進(jìn)程和至少一個(gè)任務(wù)處理進(jìn)程。本發(fā)明的有益效果本發(fā)明三維圖像服務(wù)器多任務(wù)管理調(diào)度方法采用多進(jìn)程和雙通道與客戶(hù)端進(jìn)行通信,提高了三維圖像服務(wù)器的通信服務(wù)穩(wěn)定性。本發(fā)明包括如下附圖圖1為本發(fā)明三維圖像處理過(guò)程示意圖;圖2為本發(fā)明命令通道交互過(guò)程示意圖;圖3為本發(fā)明數(shù)據(jù)通道交互過(guò)程示意圖;圖4為本發(fā)明為三維圖像服務(wù)器多任務(wù)管理調(diào)度方式示意5為本發(fā)明雙通道處理流程圖;圖6為本發(fā)明三維圖像服務(wù)器設(shè)置管理進(jìn)程示意圖;圖7為本發(fā)明進(jìn)程間通信共享內(nèi)存區(qū)內(nèi)的信息結(jié)構(gòu)示意圖;圖8為本發(fā)明三維圖像服務(wù)器管理進(jìn)程流程圖;圖9為本發(fā)明三維圖像服務(wù)器任務(wù)處理流程圖;圖10為本發(fā)明實(shí)施例管理進(jìn)程加載示意圖;圖11為本發(fā)明實(shí)施例命令通道和數(shù)據(jù)通道日志窗口示意圖;圖12為本發(fā)明實(shí)施例任務(wù)處理進(jìn)程加載示意圖;圖13為本發(fā)明實(shí)施例客戶(hù)端進(jìn)程加載示意圖;圖14為本發(fā)明實(shí)施例客戶(hù)端調(diào)整參數(shù)示意圖。具體實(shí)施例方式下面根據(jù)附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)說(shuō)明如圖1所示,影像設(shè)備負(fù)責(zé)采集數(shù)據(jù),將數(shù)據(jù)發(fā)送到存儲(chǔ)服務(wù)器進(jìn)行歸檔,存儲(chǔ)服務(wù)器對(duì)數(shù)據(jù)歸檔后將需要進(jìn)行重建的數(shù)據(jù)加載到三維圖像服務(wù)器進(jìn)行預(yù)處理,當(dāng)三維閱片工作站(客戶(hù)端)需要進(jìn)行閱片的時(shí)候向三維圖像服務(wù)器發(fā)出處理請(qǐng)求,三維圖像服務(wù)器接收到處理任務(wù)后將數(shù)據(jù)加載到內(nèi)存中進(jìn)行計(jì)算,然后將計(jì)算結(jié)果還回給三維閱片工作站進(jìn)行顯示。為了實(shí)現(xiàn)上述三維圖像處理方式,首先必須在三維圖像服務(wù)器與三維閱片工作站之間建立私有通信協(xié)議,實(shí)現(xiàn)相互間的信息交互。為此在TCP/IP協(xié)議之上建立了一個(gè)應(yīng)用層協(xié)議3DAP(3DAccessProtocol),通過(guò)該應(yīng)用層協(xié)議3DAP就可以將客戶(hù)端的操作請(qǐng)求提交到三維圖像服務(wù)器進(jìn)行處理,三維圖像服務(wù)器同樣可以將計(jì)算結(jié)果返回到客戶(hù)端進(jìn)行顯示。如表1所示,首先定義一組服務(wù)類(lèi)表l服務(wù)類(lèi)說(shuō)明FM_C0NTR0L建立連接請(qǐng)求服務(wù)FM—EXECUTE執(zhí)行一條操作命令FM—EXECUTE—RESPONSE返回命令處理結(jié)果FM—GET—FILE獲取流數(shù)據(jù)FM_GET_FILE_RESPONSE返回獲取流數(shù)據(jù)結(jié)果FM—PUT—FILE提交流數(shù)據(jù)FM_PUT_FILE_RESPONSE返回提交流數(shù)據(jù)結(jié)果如表2所示,有了服務(wù)類(lèi)定義后,還需要為每一個(gè)服務(wù)類(lèi)定義相應(yīng)的處理消息,用與確認(rèn)處理的具體情況表2消息定義說(shuō)明FMMC_CONNECT客戶(hù)請(qǐng)求連接FMMC—ACCEPT接受客戶(hù)連接FMMC—REJECT拒絕客戶(hù)連接FMMC—DISCONNECT客戶(hù)/服務(wù)器要求斷開(kāi)連接FMMC—ECHO測(cè)試服務(wù)器是否活動(dòng)FMMC—ECHO—SUCC服務(wù)器返回客戶(hù)端表示連接通暢FMMC—SUCCESS傳送數(shù)據(jù)正常FMMC—FAIL傳送數(shù)據(jù)錯(cuò)誤FMMC—NULL傳送數(shù)據(jù)為空值,臨時(shí)數(shù)據(jù),空值屬正常情況<table>tableseeoriginaldocumentpage7</column></row><table>有了應(yīng)用層協(xié)議3DAP,客戶(hù)端和三維圖像服務(wù)器之間就可以進(jìn)行靈活的數(shù)據(jù)交換。具體的操作主要分為五大步驟第一步建立連接,即建立底層的通信管道。按照前面描述的規(guī)則和定義,客戶(hù)端使用上層服務(wù),發(fā)送關(guān)聯(lián)建立請(qǐng)求FM_C0NTR0L(FMMC_C0NNECT)到三維圖像服務(wù)器,三維圖像服務(wù)器接受該請(qǐng)求,三維圖像服務(wù)器驗(yàn)證客戶(hù)端的合法性后建立接受/拒絕FM_CONTROL(FMMC_ACCEPT/FMMC_REJECT)響應(yīng)。如果成功,即客戶(hù)端收到FM_C0NTR0L(FMMC_ACCEPT),則表示客戶(hù)端和三維圖像服務(wù)器之間的關(guān)聯(lián)建立成功。第二步發(fā)送執(zhí)行命令操作,即客戶(hù)端向三維圖像服務(wù)器發(fā)送執(zhí)行命令??蛻?hù)端遵循雙方協(xié)議,向三維圖像服務(wù)器發(fā)出FM_EXECUTE請(qǐng)求,將用戶(hù)操作參數(shù)打包到FM_EXECUTE服務(wù)類(lèi)中,提交到三維圖像服務(wù)器上,如果三維圖像服務(wù)器成功接收命令,即客戶(hù)端收到FM_EXECUTE_RESPONSE(FMMC_SUCCESS),如果不成功客戶(hù)端收到FM_EXECUTE_RESPONSE(F匪C—FAIL)。第三步提交流數(shù)據(jù)操作,即客戶(hù)端向三維圖像服務(wù)器發(fā)送二進(jìn)制數(shù)據(jù)流。由于執(zhí)行命令一般提交數(shù)據(jù)量較小的參數(shù),當(dāng)客戶(hù)端需要向三維圖像服務(wù)器提交較大的二進(jìn)制數(shù)據(jù)時(shí),專(zhuān)門(mén)為大顆粒數(shù)據(jù)提交定義了一個(gè)命令。當(dāng)客戶(hù)端需要向三維圖像服務(wù)器發(fā)出二進(jìn)制數(shù)據(jù)時(shí)發(fā)出FM_PUT_FILE,同時(shí)將數(shù)據(jù)內(nèi)容打包到服務(wù)類(lèi),提交到三維圖像服務(wù)器,如果三維圖像服務(wù)器成功接收命令,即客戶(hù)端收到FM_PUT_FILE_RESPONSE(FMMC_SUCCESS),如果不成功客戶(hù)端收到FM_PUT_FILE_RESPONSE(FMMC_FAIL)。第四步獲取流數(shù)據(jù)操作,即客戶(hù)端向三維圖像服務(wù)器請(qǐng)求獲取數(shù)據(jù)流??蛻?hù)端提交的各種處理命令后,三維圖像服務(wù)器是以流水線(xiàn)的方式進(jìn)行處理,處理完的數(shù)據(jù)由客戶(hù)端每次請(qǐng)求獲取數(shù)據(jù)的時(shí)候返回結(jié)果,首先客戶(hù)端會(huì)發(fā)出FM_GET_STREAM獲取數(shù)據(jù)的請(qǐng)求,如果三維圖像服務(wù)器上有已經(jīng)處理完成的數(shù)據(jù)會(huì)將內(nèi)容返回給客戶(hù)端,客戶(hù)端接收到FM_GET_FILE_RESPONSE(FMMC_RETURN_PARAM),如果未有處理結(jié)果,三維圖像服務(wù)器會(huì)返回FM_GET_FILE_RESPONSE(FMMC_SUCCESS)。第五步釋放關(guān)聯(lián),通信完成后,雙方通過(guò)發(fā)送關(guān)聯(lián)釋放請(qǐng)求/響應(yīng)FM—CONTROL(F匪C—DISCONNECT)來(lái)釋放此次連接。如圖2、圖3、圖4和圖5所示,按照上面的交互方式可以看出發(fā)送執(zhí)行命令操作FM—EXECUTE、數(shù)據(jù)提交操作FM_PUT_FILE、獲取數(shù)據(jù)操作FM_GET_FILE之間并沒(méi)有關(guān)系,如何能將幾個(gè)服務(wù)類(lèi)聯(lián)系起來(lái)呢?由于三維圖像服務(wù)器的計(jì)算時(shí)間比客戶(hù)端提交命令的時(shí)候要慢,所以不可能每次都等待三維圖像服務(wù)器處理完成一次命令后再提交新的請(qǐng)求任務(wù),這樣的話(huà)客戶(hù)端操作起來(lái)將會(huì)感覺(jué)交互的及時(shí)性不夠好。為了避免這個(gè)問(wèn)題,本發(fā)明使用流水作業(yè)的方法,在三維圖像服務(wù)器和客戶(hù)端之間同時(shí)建立兩個(gè)網(wǎng)絡(luò)通道命令通道和數(shù)據(jù)通道,命令通道專(zhuān)門(mén)用來(lái)接收客戶(hù)端提交的命令,數(shù)據(jù)通道專(zhuān)門(mén)用來(lái)返回三維圖像服務(wù)器的處理結(jié)果,命令通道和數(shù)據(jù)通道使用異步處理的模式。有了命令通道和數(shù)據(jù)通道后客戶(hù)端用戶(hù)交互線(xiàn)程就可以通過(guò)客戶(hù)端的命令通道接口實(shí)時(shí)向三維圖像服務(wù)器提交數(shù)據(jù),三維圖像服務(wù)器通過(guò)命令通道接收到任務(wù)進(jìn)行處理,然后將處理后的數(shù)據(jù)內(nèi)容通過(guò)數(shù)據(jù)通道返回給客戶(hù)端,客戶(hù)端數(shù)據(jù)通道接收到數(shù)據(jù)后通知用戶(hù)交互層進(jìn)行顯示。上述操作過(guò)程完成用戶(hù)需要的操作以及顯示效果,命令通道和數(shù)據(jù)通道在物理上是兩個(gè)完全獨(dú)立的連接,使用的私有通信協(xié)議也是相同的,當(dāng)客戶(hù)端與三維圖像服務(wù)器建立連接的時(shí)候會(huì)同時(shí)打開(kāi)這兩個(gè)連接通道,三維圖像服務(wù)器如何來(lái)識(shí)別這兩個(gè)通道是哪一個(gè)呢?為了識(shí)別兩個(gè)通道,在客戶(hù)端建立連接成功后命令通道會(huì)發(fā)出注冊(cè)命令通道命令和當(dāng)前用戶(hù)注冊(cè)編號(hào)用來(lái)標(biāo)識(shí)命令通道,數(shù)據(jù)通道會(huì)發(fā)出數(shù)據(jù)通道注冊(cè)命令和用戶(hù)注冊(cè)編號(hào),有了統(tǒng)一的用戶(hù)編號(hào)和不同的注冊(cè)命令就可以將幾個(gè)對(duì)象有效的聯(lián)系起來(lái)。如圖6和圖7所示,采用多個(gè)進(jìn)程來(lái)實(shí)現(xiàn)并行處理方案。首先將每一個(gè)網(wǎng)絡(luò)通道獨(dú)立一個(gè)進(jìn)程,每一個(gè)處理任務(wù)獨(dú)立一個(gè)進(jìn)程,當(dāng)用戶(hù)連接到服務(wù)器上進(jìn)行三維處理的時(shí)候,應(yīng)該由一個(gè)命令通道進(jìn)程、一個(gè)數(shù)據(jù)通道進(jìn)程、一個(gè)任務(wù)處理進(jìn)程共同組成處理流程。使用這種方法來(lái)響應(yīng)客戶(hù)端的任務(wù)處理,處理過(guò)程中出現(xiàn)的任何一個(gè)環(huán)節(jié)發(fā)生故障,都可以單獨(dú)關(guān)閉,重新啟用一個(gè)進(jìn)程來(lái)代替之前故障進(jìn)程的工作,這樣就不會(huì)影響到整體的穩(wěn)定性了。如何將幾個(gè)松散的進(jìn)程有效的結(jié)合起來(lái)以流水線(xiàn)的方式對(duì)用戶(hù)的請(qǐng)求進(jìn)行操作呢?因?yàn)槊钔ǖ馈?shù)據(jù)通道和處理任務(wù)都已經(jīng)獨(dú)立為進(jìn)程,所以已經(jīng)完成了獨(dú)立作業(yè)的模式,只要各個(gè)進(jìn)程有效地進(jìn)行通信就可以滿(mǎn)足三維處理流水線(xiàn)設(shè)計(jì)的要求。首先各進(jìn)程要進(jìn)行聯(lián)系必須要有一個(gè)統(tǒng)一的進(jìn)程間通信共享內(nèi)存區(qū)進(jìn)行數(shù)據(jù)傳遞,然后為每個(gè)客戶(hù)端連接到三維圖像服務(wù)器的時(shí)候都分配了一個(gè)唯一的標(biāo)識(shí),當(dāng)命令通道第一次連接到三維圖像服務(wù)器的時(shí)候?qū)⑦@個(gè)標(biāo)識(shí)注冊(cè)到進(jìn)程間通信共享內(nèi)存區(qū),注冊(cè)標(biāo)識(shí)的時(shí)候可以同時(shí)綁定一個(gè)任務(wù)處理進(jìn)程,數(shù)據(jù)通道連接到三維圖像服務(wù)器的時(shí)候就可以根據(jù)標(biāo)識(shí)信息和對(duì)應(yīng)的任務(wù)處理進(jìn)程進(jìn)行關(guān)聯(lián)。根據(jù)上述說(shuō)明,本發(fā)明方法的實(shí)現(xiàn)主要是分成三部分通道進(jìn)程(PipelineProcess)(包括命令通道進(jìn)程和數(shù)據(jù)通道進(jìn)程)、進(jìn)程間通信共享內(nèi)存區(qū)(SharedMemory)、任務(wù)處理進(jìn)程(TaskProcess)。但是這三部分如何聯(lián)系起來(lái)以及如何避免通道進(jìn)程相互搶奪資源呢?為了將這三部分有效的組織起來(lái),還需要再引入一個(gè)管理進(jìn)程(ManageProcess),由管理進(jìn)程來(lái)對(duì)資源進(jìn)行有效的分配,因?yàn)橄到y(tǒng)在運(yùn)行的時(shí)候會(huì)為每個(gè)進(jìn)程分配不同的內(nèi)存區(qū)域,對(duì)不同進(jìn)程來(lái)說(shuō),它們具有獨(dú)立的數(shù)據(jù)空間,要進(jìn)行數(shù)據(jù)傳遞需要分配一個(gè)進(jìn)程間通信共享內(nèi)存區(qū)(SharedMemory)。首先在啟動(dòng)管理進(jìn)程的時(shí)候通過(guò)系統(tǒng)函數(shù)CreateFileMa卯ing創(chuàng)建一個(gè)進(jìn)程間通信共享內(nèi)存區(qū),通過(guò)M即View0fFile將內(nèi)存區(qū)映射到進(jìn)程地址中,然后定義四個(gè)數(shù)據(jù)結(jié)構(gòu),分別是命令通道信息結(jié)構(gòu)、數(shù)據(jù)通道信息結(jié)構(gòu)、子進(jìn)程屬性信息結(jié)構(gòu)和管理進(jìn)程屬性信息結(jié)構(gòu),記錄管理進(jìn)程屬性信息、進(jìn)程選擇屬性信息及命令通道和數(shù)據(jù)通道數(shù)據(jù)交換信息,同時(shí)在進(jìn)程間通信共享內(nèi)存區(qū)內(nèi)設(shè)置進(jìn)程狀態(tài)表,將四個(gè)數(shù)據(jù)結(jié)構(gòu)映射到進(jìn)程間通信共享內(nèi)存區(qū),這樣進(jìn)程間就可以知道各自的狀態(tài),以便進(jìn)行下一步的操作。進(jìn)程狀態(tài)表如表3所示表38LProeState進(jìn)程狀態(tài)狀態(tài)描述psClose進(jìn)程已關(guān)Wpslnit進(jìn)程正在初始化中,還不能使用psSuspend進(jìn)程已經(jīng)掛起等待任務(wù)執(zhí)行psAction進(jìn)程被擊活psExecute進(jìn)程正在執(zhí)行任務(wù),無(wú)法接收其他任務(wù)命令通道信息結(jié)構(gòu)structIXhildCommMidDateHWNDHandle;〃進(jìn)程返回?cái)?shù)據(jù)對(duì)象句柄intCommand5boolIsLastFragment;〃是否為結(jié)尾數(shù)據(jù)UINT32ParamSize;〃參數(shù)大小UINT32DataSize;〃數(shù)據(jù)大小charData;數(shù)據(jù)通道信息結(jié)構(gòu)structIXhildReturnDataintDataState;〃數(shù)據(jù)狀態(tài)boolIsLastFragment;〃是否為結(jié)尾數(shù)據(jù)UINT32ParamSize;〃參數(shù)大小UINT32DataSize;〃數(shù)據(jù)大小charData;子進(jìn)程屬性信息結(jié)構(gòu)structIXhildProcInfoLProeStateState;〃進(jìn)程當(dāng)前狀態(tài)HANDLEProcessHandle;〃進(jìn)程句柄UINT32Processld;〃進(jìn)程編號(hào)char0bjectld[20];〃處理對(duì)象編號(hào)DATE0penTime;〃進(jìn)程打開(kāi)時(shí)間DATEExecuteTime;〃進(jìn)程最后一次執(zhí)行命令的時(shí)間DATESuspendTime;〃進(jìn)程最后一次掛起時(shí)間UINT32CommandProcId;〃發(fā)送命令進(jìn)程編號(hào)UINT32ReturnProcId;〃返回?cái)?shù)據(jù)進(jìn)程編號(hào)IXhildCommandDatEiCommandDatEi5〃進(jìn)程命令數(shù)據(jù)內(nèi)容LChildRet證DataRet證Data;〃進(jìn)程返回?cái)?shù)據(jù)內(nèi)容};管理進(jìn)程屬性信息結(jié)構(gòu)strctLParentProcInfo{HWNDHandle;〃父進(jìn)程對(duì)象句柄intIniProcCount;〃子進(jìn)程初始啟動(dòng)數(shù)intMaxProcCo皿t;〃子進(jìn)程可啟動(dòng)總數(shù)};實(shí)現(xiàn)了對(duì)進(jìn)程狀態(tài)的記錄后還需要在進(jìn)程間通信共享內(nèi)存區(qū)中設(shè)置一組用于進(jìn)程間通信的消息命令。進(jìn)程消息表如表4所示表4消息命令命令描述麗—PR0CESS—0PEN進(jìn)程已經(jīng)打開(kāi),向父進(jìn)程發(fā)出通知麗—PR0CESS—CL0SE進(jìn)程已經(jīng)關(guān)閉,向父進(jìn)程發(fā)出通知WM_PROCESS_EXECUTE向父進(jìn)程發(fā)出通知,進(jìn)程已經(jīng)開(kāi)始執(zhí)行操作,需要重新啟動(dòng)一個(gè)新進(jìn)程進(jìn)行監(jiān)聽(tīng)WM_PROCESS_SUSPEND向父進(jìn)程發(fā)出通知,進(jìn)程已經(jīng)掛起WM_PR0CESS_ST0P向子進(jìn)程發(fā)出通知,要求停止處理WM—PROCESS—SELECT向父進(jìn)程發(fā)出通知,要求選擇一個(gè)處理進(jìn)程WM_SEND_COMMAND發(fā)送參數(shù)令命如圖8和圖9所示,管理進(jìn)程啟動(dòng)后將進(jìn)程消息句柄記錄在管理進(jìn)程屬性信息結(jié)構(gòu)中。為了避免啟動(dòng)任務(wù)進(jìn)程影響系統(tǒng)的運(yùn)行效率,在啟動(dòng)管理進(jìn)程后預(yù)先啟動(dòng)至少一個(gè)命令通道處理進(jìn)程、至少一個(gè)數(shù)據(jù)通道處理進(jìn)程和至少一個(gè)任務(wù)處理進(jìn)程。使用CreateProcess函數(shù)啟動(dòng)進(jìn)程,函數(shù)調(diào)用結(jié)束后返回進(jìn)程ID號(hào),找出子進(jìn)程屬性信息結(jié)構(gòu)中未記錄進(jìn)程信息的位置,將內(nèi)容寫(xiě)入該位置,同時(shí)將進(jìn)程設(shè)置為pslnit狀態(tài)表示該進(jìn)程正在啟動(dòng)中,還不能接收任務(wù)。任務(wù)處理進(jìn)程啟動(dòng)后通過(guò)系統(tǒng)函數(shù)0penFileM即ping打開(kāi)管理進(jìn)程創(chuàng)建的進(jìn)程間通信共享內(nèi)存區(qū),通過(guò)M即ViewOfFile將內(nèi)存區(qū)映射到進(jìn)程地址中,這樣任務(wù)處理進(jìn)程就可以訪問(wèn)子進(jìn)程屬性信息結(jié)構(gòu)中的信息。使用GetCurrendProcessId獲取該進(jìn)程10ID找出子進(jìn)程屬性信息結(jié)構(gòu)中記錄該進(jìn)程的位置,將進(jìn)程狀態(tài)修改為psSuspend,同時(shí)將當(dāng)前時(shí)間寫(xiě)入SuspendTime,說(shuō)明任務(wù)處理進(jìn)程已經(jīng)啟動(dòng)成功,可以執(zhí)行任務(wù)。同時(shí)使用PostMessage向管理進(jìn)程發(fā)出WM_PR0CESS_0PEN消息,通知管理進(jìn)程可以為任務(wù)處理進(jìn)程分配任務(wù)。管理進(jìn)程進(jìn)入等待任務(wù)求請(qǐng)狀態(tài),實(shí)時(shí)檢測(cè)命令通道處理進(jìn)程、數(shù)據(jù)通道處理進(jìn)程。當(dāng)命令通道處理進(jìn)程接收到一個(gè)用戶(hù)任務(wù)請(qǐng)求時(shí),首先根據(jù)子進(jìn)程屬性信息結(jié)構(gòu),判斷該通道是否已經(jīng)分配了處理資源,如果CommandProcId等于當(dāng)前命令通道進(jìn)程號(hào),說(shuō)明已經(jīng)分配了資源,直接向任務(wù)處理進(jìn)程發(fā)出處理請(qǐng)求,如果未分配資源,向管理進(jìn)程發(fā)出WM_PROCESS_SELECT消息,將當(dāng)前命令通道進(jìn)程編號(hào)發(fā)送給管理進(jìn)程,請(qǐng)求分配一個(gè)可用資源進(jìn)行處理,發(fā)出消息后通道處理進(jìn)程等待管理進(jìn)程分配的資源,管理進(jìn)程接收到麗_PROCESS—SELECT消息后,在子進(jìn)程屬性信息結(jié)構(gòu)中找出一個(gè)掛起的進(jìn)程做為當(dāng)前的處理對(duì)象,將命令進(jìn)程編號(hào)寫(xiě)入CommandProcId。命令通道進(jìn)程檢測(cè)到CommandProcId與當(dāng)前進(jìn)程編號(hào)匹配后將當(dāng)前客戶(hù)端發(fā)過(guò)來(lái)的ObjectId寫(xiě)入進(jìn)程間通信共享內(nèi)存區(qū),完成客戶(hù)端的連接請(qǐng)求,同時(shí)將State狀態(tài)設(shè)置為psExecute執(zhí)行狀態(tài),當(dāng)前時(shí)間寫(xiě)入ExecuteTime。如果未找到可用任務(wù)處理進(jìn)程,管理進(jìn)程將啟動(dòng)一個(gè)新的任務(wù)處理進(jìn)程來(lái)處理,啟動(dòng)新的任務(wù)處理進(jìn)程的同時(shí)將State狀態(tài)設(shè)置為psAction擊活狀態(tài),等新的任務(wù)處理進(jìn)程啟動(dòng)成功后將其改為psExecute。命令通道連接成功后,數(shù)據(jù)通道也將連接,根據(jù)檢測(cè)Objectld來(lái)配對(duì)處理的資源,如果匹配成功,將數(shù)據(jù)通道進(jìn)程編號(hào)寫(xiě)入ReturnProcId,數(shù)據(jù)通道注冊(cè)成功后客戶(hù)端將保持與三維圖像服務(wù)器的連接狀態(tài),不斷向三維圖像服務(wù)器發(fā)來(lái)獲取數(shù)據(jù)的消息,如果三維圖像服務(wù)器有處理后的數(shù)據(jù)將返回內(nèi)容,如果延遲一定時(shí)間未有數(shù)據(jù)將返回一個(gè)空消息,用于保持兩邊的連接狀態(tài),每次三維圖像服務(wù)器接收到數(shù)據(jù)獲取消息的時(shí)候都將刷新ExecuteTime信息,這樣管理進(jìn)程將可以知道該連接還處于正常狀態(tài)。通過(guò)該方法命令通道進(jìn)程、數(shù)據(jù)通道進(jìn)程和任務(wù)處理進(jìn)程就可以有效的聯(lián)系起來(lái)??蛻?hù)端注冊(cè)成功后就可以向任務(wù)處理進(jìn)程發(fā)出各種操作請(qǐng)求。請(qǐng)求命令內(nèi)容分別在LChildCommandData信息結(jié)構(gòu)填寫(xiě)Command:處理命令信息,ParamSize:參數(shù)內(nèi)容大小,DataSize:二進(jìn)制數(shù)據(jù)大小,Data:數(shù)據(jù)內(nèi)容,數(shù)據(jù)內(nèi)容首先寫(xiě)入?yún)?shù)內(nèi)容然后是二進(jìn)制數(shù)據(jù)內(nèi)容(參數(shù))+(二進(jìn)制數(shù)據(jù))。如果Data定義的最大空間不能放下輸入的參數(shù)內(nèi)容和二進(jìn)制數(shù)據(jù),可以采用多次填入數(shù)據(jù)的方法來(lái)實(shí)現(xiàn)大數(shù)據(jù)的輸入,用IsLastFragment來(lái)識(shí)別數(shù)據(jù)是否傳輸完成。將信息寫(xiě)入后向任務(wù)處理進(jìn)程發(fā)出WM_SEND_C0MMAND命令,通知任務(wù)處理進(jìn)程對(duì)該命令進(jìn)行處理。對(duì)應(yīng)的任務(wù)處理進(jìn)程檢測(cè)到處理任務(wù)后執(zhí)行相應(yīng)的計(jì)算,計(jì)算結(jié)果寫(xiě)入LChildReturnData信息結(jié)構(gòu)中,寫(xiě)入方法與命令參數(shù)傳遞方式基本相同。數(shù)據(jù)通道檢測(cè)到數(shù)據(jù)后將內(nèi)容讀取出來(lái)返回給客戶(hù)端。當(dāng)客戶(hù)端結(jié)束處理后會(huì)向管理進(jìn)程發(fā)出釋放請(qǐng)求W1LPR0CESS—CL0SE消息,管理進(jìn)程接收到消息后為了保證系統(tǒng)的穩(wěn)定工作將關(guān)閉當(dāng)前任務(wù)處理進(jìn)程。關(guān)閉任務(wù)處理進(jìn)程后為了可以接收其它客戶(hù)端的任務(wù),管理進(jìn)程將重啟一個(gè)新的進(jìn)程來(lái)代替舊任務(wù)處理進(jìn)程。當(dāng)客戶(hù)端發(fā)生錯(cuò)誤異常退出,三維圖像服務(wù)器無(wú)法接收到關(guān)閉處理命令的通知,管理進(jìn)程通過(guò)檢測(cè)ExecuteTime的刷新,如果發(fā)現(xiàn)超過(guò)一定時(shí)候沒(méi)有變化就可以知道客戶(hù)端已經(jīng)斷開(kāi),直接將對(duì)應(yīng)任務(wù)處理進(jìn)程關(guān)閉。具體實(shí)例如圖IO所示,在客戶(hù)端和服務(wù)端運(yùn)行五個(gè)程序,分別是客戶(hù)端的測(cè)試進(jìn)程Test3DClient.exe用來(lái)響應(yīng)用戶(hù)的操作任務(wù)和處理后的顯示效果,服務(wù)端的13DServer.exe用來(lái)作為管理進(jìn)程,13DPipeline.exe用于與客戶(hù)端進(jìn)行交互的通道進(jìn)程,13DChild.exe為處理進(jìn)程用來(lái)進(jìn)行核心計(jì)算。如圖IO所示啟動(dòng)了5個(gè)任務(wù)處理進(jìn)程來(lái)響應(yīng)客戶(hù)端的請(qǐng)求,其中有兩個(gè)任務(wù)處理進(jìn)程正在處理用戶(hù)的操作。根據(jù)DICOM標(biāo)準(zhǔn)定義,每個(gè)檢查可以分成多個(gè)序列,每個(gè)序列可分成多幅圖像,三維可視化的數(shù)據(jù)是由一個(gè)序列的一組二維斷層圖像數(shù)據(jù)組成。檢查、序列、圖像在標(biāo)準(zhǔn)里面都定義了唯一的UID標(biāo)識(shí),客戶(hù)端通知三維圖像服務(wù)器重建一組二維序列圖像,本發(fā)明使用兩級(jí)UID,也就是客戶(hù)端發(fā)送檢查UID和序列UID,三維圖像服務(wù)器根據(jù)這兩個(gè)索引值打開(kāi)數(shù)據(jù)內(nèi)容。例如首先客戶(hù)端配置好服務(wù)IP地址192.168.141.82,端口4450,連接上服務(wù)器后,檢查號(hào)輸入1.2.840.113704.1.111.5600.1107858801.l,序列號(hào)輸入1.2.840.113704.1.111.5600.1107859570.17,點(diǎn)打開(kāi)按扭首先客戶(hù)端會(huì)打開(kāi)兩個(gè)線(xiàn)程,分別是命令通道(SendCommandChannel)和數(shù)據(jù)通道(ReadDataCha皿el):OpenSendCommandCha皿elConnect〈IP:192.168.141.82Port:4450〉〈一SENDMESSAGEHEADER(FM_C0NTR0L,F(xiàn)MMC_C0NNECT)—〉RECEIVEMESSAGEHEADER(FM_C0NTR0L,F(xiàn)MMC_ACCEPT)OpenReadDataCha皿elConnect〈IP:192.168.141.82Port:4450〉〈一SENDMESSAGEHEADER(FM_C0NTR0L,F(xiàn)MMC_C0NNECT)—〉RECEIVEMESSAGEHEADER(FM_C0NTR0L,F(xiàn)MMC_ACCEPT)建立連接后客戶(hù)端會(huì)通過(guò)命令通道向三維圖像服務(wù)器發(fā)出當(dāng)前用戶(hù)編號(hào)〈一SENDMESSAGEHEADER(FM_EXECUTE,F(xiàn)MMC_CONNECT)〈一SENDFILEPARAMETERCommand:comOpenObjectAccessory:0Parameter:STRING=38942B2D56BB49同時(shí)數(shù)據(jù)通道也將發(fā)出相同的用戶(hù)編號(hào)來(lái)進(jìn)行注冊(cè)〈一SENDMESSAGEHEADER(FM_EXECUTE,F(xiàn)MMC_CONNECT)〈一SENDFILEPARAMETERCommand:comLoginObjectAccessory:0Parameter:STRING=38942B2D56BB49服務(wù)端接收到一個(gè)用戶(hù)任務(wù)請(qǐng)求時(shí),首先判斷處理進(jìn)程屬性信息結(jié)構(gòu),該通道是否已經(jīng)分配了處理資源,如果CommandProcId等于當(dāng)前命令通道進(jìn)程號(hào),說(shuō)明已經(jīng)分配了資源,直接向處理進(jìn)程發(fā)出處理請(qǐng)求,如果未分配資源,向管理進(jìn)程發(fā)出W1LPR0CESS—SELECT消息,將當(dāng)前命令通道進(jìn)程編號(hào)發(fā)送給管理進(jìn)程,請(qǐng)求分配一個(gè)可用資源進(jìn)行處理,發(fā)出消息后命令通道將等待管理進(jìn)程分配的資源,管理進(jìn)程接收到WM_PROCESS_SELECT消息后,在處理子進(jìn)程信息表中找出一個(gè)掛起的進(jìn)程做為當(dāng)前的處理對(duì)象,將命令進(jìn)程編號(hào)寫(xiě)入CommandProcId。命令通道進(jìn)程檢測(cè)到CommandProcId與當(dāng)前進(jìn)程編號(hào)匹配后將當(dāng)前客戶(hù)端發(fā)過(guò)來(lái)的Objectld寫(xiě)入交換區(qū),完成客戶(hù)端的連接請(qǐng)求,同時(shí)將State狀態(tài)設(shè)置為psExecute執(zhí)行狀態(tài),同時(shí)狀當(dāng)前時(shí)間寫(xiě)入ExecuteTime。如果未找到可用任務(wù)處理進(jìn)程,系統(tǒng)將啟動(dòng)一個(gè)新的任務(wù)處理進(jìn)程來(lái)處理,啟動(dòng)進(jìn)程的同時(shí)將State狀態(tài)設(shè)置為psAction擊活狀態(tài),等進(jìn)程啟動(dòng)成功后將其改為psExecute。數(shù)據(jù)通道連接到服務(wù)端,根據(jù)檢測(cè)Objectld來(lái)配對(duì)處理的資源,如果匹配成功,將數(shù)據(jù)通道進(jìn)程編號(hào)寫(xiě)入ReturnProcId,數(shù)據(jù)通道注冊(cè)成功后客戶(hù)端將保持與服務(wù)器的連接狀態(tài),不斷向服務(wù)端發(fā)來(lái)獲取數(shù)據(jù)的消息,如果服務(wù)端有處理后的數(shù)據(jù)將返回內(nèi)容,如果延遲一定時(shí)間未有數(shù)據(jù)將返回一個(gè)空消息,用于保持兩邊的連接狀態(tài),每次服務(wù)端接收到數(shù)據(jù)獲取消息的時(shí)候都將刷新ExecuteTime信息,這樣管理進(jìn)程將可以知道該連接還處于正常狀態(tài)。連接成功后命令通道向服務(wù)器發(fā)出打開(kāi)數(shù)據(jù)體命令〈一SENDMESSAGEHEADER(FM—EXECUTE,F(xiàn)匪C—CONNECT,3V)〈一SENDFILEPARAMETERCommand:comOpenVolumeAccessory:0Parameter:STRING=1.2.840.113704.1.111.5600.1107858801.1;STRING=1.2.840.113704.1.111.5600.1107859570.17;—〉RECEIVEMESSAGEHEADER(FM—EXECUTE—RESPONSE,F(xiàn)MMC—SUCCESS)服務(wù)端命令通道接收到命令后內(nèi)容填寫(xiě)在LChildCommandData信息結(jié)構(gòu)中。將comOpenVol咖n填寫(xiě)Command信息,參數(shù)大小±真寫(xiě)在ParamSize,打開(kāi)數(shù)據(jù)的檢查號(hào)和序列號(hào)填寫(xiě)到Data中。將信息寫(xiě)入后向處理進(jìn)程發(fā)出WM_SEND_COMMAND命令,通知任務(wù)處理進(jìn)程對(duì)該命令進(jìn)行處理。客戶(hù)端通過(guò)數(shù)據(jù)通道發(fā)出讀取數(shù)據(jù)請(qǐng)求〈一SENDMESSAGEHEADER(FM_GET_FILE,F(xiàn)MMC_CONNECT)〈一SENDFILEPARAMETERCommand:comGetlmageDataAccessory:0—〉RECEIVEMESSAGEHEADER(FM_GET_FILE_RESPONSE,F(xiàn)MMC—ACCEPT)—〉RECEIVEFILEPARAMETERCommand:comGetlmageDataAccessory:0Parameter:INTEGER=5512;INTEGER=985;INTEGER=512;INTEGER=512;INTEGER=665;INTEGER=-2048;INTEGER=1;INTEGER=500;INTEGER=100;CubeContainSize985PixelSizex:512,y:512,z:66513加載過(guò)程中應(yīng)該通過(guò)數(shù)據(jù)通道實(shí)時(shí)向客戶(hù)端返回加載進(jìn)度'、.-Windo麗idth:500,WindoWCenter:100任務(wù)處理進(jìn)程接收到打開(kāi)數(shù)據(jù)體命令后,將數(shù)據(jù)加載到內(nèi)存中,首先將數(shù)據(jù)體的息填寫(xiě)到LChildReturnData信息結(jié)構(gòu)中,通知數(shù)據(jù)通道將內(nèi)容返回給客戶(hù)端。如數(shù)0158:0159:基本《據(jù)體的X、Y、Z的像素大小,默認(rèn)窗寬窗位值等。0160:oi6i:0162:0163:0164:0165:獲取基本數(shù)據(jù)信息后客戶(hù)端會(huì)向數(shù)據(jù)通道重復(fù)發(fā)出讀數(shù)據(jù)請(qǐng)求〈一SENDMESSAGEHEADER(FM_GET_FILE,F(xiàn)MMC_C0NNECT)〈一SENDFILEPARAMETERCommand:comGetlmageDataAccessory:0因?yàn)槿S重建數(shù)據(jù)體一般都比較大,加載數(shù)據(jù)是需要一定時(shí)間的,所以服務(wù)器在0166,0167:0168:0169:0170:0171:0172:0173:0174:0175:0176:0177:0178:0179:0180:0181:0182'->RECEIVEMESSAGEHEADER(FM_GET_FILE_RESPONSE,F(xiàn)MMC—ACCEPT)—〉RECEIVEFILEPARAMETERCommand:comGetlmageDataAccessory:0Parameter:INTEGER=5500;FLOAT=10.000000;Progress:10%當(dāng)數(shù)據(jù)加載完成后數(shù)據(jù)通道將計(jì)算后生成的圖像傳送到客戶(hù)端—〉RECEIVEMESSAGEHEADER(FM_GET_FILE_RESP0NSE,F(xiàn)MMC—ACCEPT)->RECEIVEFILEPARAMETERCommand:comGetlmageDataAccessory:273016Parameter:INTEGER=5515;INTEGER=0;SIZE=532|708;INTEGER=0;—〉RECEIVEFILEDATA數(shù)據(jù)傳輸時(shí)間(毫秒)0,大小(字節(jié))273016數(shù)據(jù)解碼時(shí)間(毫秒)93,大小(字節(jié))1129968RGBImageX:532,Y:708,Size:273016數(shù)據(jù)加載到客戶(hù)端后,客戶(hù)端會(huì)根據(jù)當(dāng)前顯示布局顯示出來(lái),三維數(shù)據(jù)的加載過(guò)程結(jié)束。如圖11和圖12所示為服務(wù)端加載實(shí)例,圖13為客戶(hù)端的加載實(shí)例'0183:空消,l如果一定時(shí)間客戶(hù)端未向服務(wù)器發(fā)出任務(wù)請(qǐng)求,服務(wù)端會(huì)定時(shí)向客戶(hù)端返回一個(gè)!、,通過(guò)這種方法客戶(hù)端和服務(wù)端就可以通過(guò)一定的心跳模式來(lái)知道之間的存在。避免客戶(hù)端異常退出后,服務(wù)器資源一直被占用的情況的發(fā)生0184:0185:0186:0187:0188:0189:0190'〈一SENDMESSAGEHEADER(FM_GET_FILE,F(xiàn)MMC_C0NNECT)〈一SENDFILEPARAMETERCommand:comGetlmageDataAccessory:0—〉RECEIVEMESSAGEHEADER(FM_GET_FILE_RESP0NSE,F(xiàn)MMC—ACCEPT)—〉RECEIVEFILEPARAMETERCommand:comGetlmageDataAccessory:0Parameter:STRING=comReturnObjectEvent;當(dāng)用戶(hù)需要三維體進(jìn)行旋轉(zhuǎn)的時(shí)候,客戶(hù)端會(huì)將X,Y,Z值通過(guò)命令通道提交到服務(wù)器?!礡ECEIVEMESSAGEHEADER(FM_EXECUTE_RESPONSE,F(xiàn)MMC_SUCCESS)〈一SENDMESSAGEHEADER(FM_EXECUTE,F(xiàn)MMC_CONNECT)〈一SENDFILEPARAMETERCommand:4100Accessory:0Parameter:INTEGER=0;INTEGER=250;INTEGER=329;INTEGER=0;服務(wù)端接收到參數(shù)發(fā)生變化后會(huì)將應(yīng)該的結(jié)果計(jì)算出來(lái)通過(guò)數(shù)據(jù)通過(guò)返回給客戶(hù)端,如圖14所示—〉RECEIVEMESSAGEHEADER(FM_GET_FILE_SERIES_RESPONSE,F(xiàn)MMC—ACCEPT)—〉RECEIVEFILEPARAMETERCommand:5120Accessory:290688Parameter:INTEGER=5515;INTEGER=0;SIZE=822|842;INTEGER=0;—〉RECEIVEFILEDATA數(shù)據(jù)傳輸時(shí)間(毫秒):0,大小(字節(jié)):290688數(shù)據(jù)解碼時(shí)間(毫秒)109,大小(字節(jié))2076372RGBImageX:822,Y:842,Size:290688當(dāng)客戶(hù)端結(jié)束處理后命令通道會(huì)向管理進(jìn)程發(fā)出釋放請(qǐng)求WM_PROCESS_CLOSE消息,由于三維任務(wù)處理進(jìn)程的處理邏輯非常復(fù)雜,管理進(jìn)程接收到消息后為了保證系統(tǒng)的穩(wěn)定工作將關(guān)閉當(dāng)前任務(wù)處理進(jìn)程。關(guān)閉任務(wù)處理進(jìn)程后為了可以接收其它客戶(hù)端的處理任務(wù),管理進(jìn)程將重啟一個(gè)新的進(jìn)程來(lái)代替舊任務(wù)處理進(jìn)程。當(dāng)客戶(hù)端發(fā)生錯(cuò)誤異常退出,服務(wù)端無(wú)法接收到關(guān)閉處理命令的通知,管理進(jìn)程通過(guò)檢測(cè)ExecuteTime的刷新時(shí)候,如果發(fā)現(xiàn)超過(guò)一定時(shí)候沒(méi)有變化就可以知道客戶(hù)端已經(jīng)端開(kāi),直接將對(duì)應(yīng)處理進(jìn)程關(guān)閉。本領(lǐng)域技術(shù)人員不脫離本發(fā)明的實(shí)質(zhì)和精神,可以有多種變形方案實(shí)現(xiàn)本發(fā)明,以上所述僅為本發(fā)明較佳可行的實(shí)施例而已,并非因此局限本發(fā)明的權(quán)利范圍,凡運(yùn)用本發(fā)明說(shuō)明書(shū)及附圖內(nèi)容所作的等效結(jié)構(gòu)變化,均包含于本發(fā)明的權(quán)利范圍之內(nèi)。權(quán)利要求一種三維圖像服務(wù)器多任務(wù)管理調(diào)度方法,其特征在于,包括步驟A1、三維圖像服務(wù)器與至少一個(gè)客戶(hù)端通過(guò)私有通信協(xié)議分別建立命令通道連接和數(shù)據(jù)通道連接;A2、在所述三維圖像服務(wù)器中建立相應(yīng)的命令通道處理進(jìn)程、數(shù)據(jù)通道處理進(jìn)程和任務(wù)處理進(jìn)程,并開(kāi)辟進(jìn)程間通信共享內(nèi)存區(qū);A3、所述命令通道處理進(jìn)程與所述客戶(hù)端傳遞交互命令和操作參數(shù);A4、所述任務(wù)處理進(jìn)程根據(jù)所述操作參數(shù)進(jìn)行圖像三維重建并生成三維圖像數(shù)據(jù);A5、所述數(shù)據(jù)通道處理進(jìn)程向所述客戶(hù)端發(fā)送所述三維圖像數(shù)據(jù)。2.根據(jù)權(quán)利要求1所述的三維圖像服務(wù)器多任務(wù)管理調(diào)度方法,其特征在于所述步驟A2包括步驟建立管理進(jìn)程,由所述管理進(jìn)程開(kāi)辟所述進(jìn)程間通信共享內(nèi)存區(qū)。3.根據(jù)權(quán)利要求2所述的三維圖像服務(wù)器多任務(wù)管理調(diào)度方法,其特征在于所述步驟A2包括步驟所述管理進(jìn)程為所述命令通道處理進(jìn)程、所述數(shù)據(jù)通道處理進(jìn)程和所述任務(wù)處理進(jìn)程在所述進(jìn)程間通信共享內(nèi)存區(qū)內(nèi)分配內(nèi)存資源。4.根據(jù)權(quán)利要求3所述的三維圖像服務(wù)器多任務(wù)管理調(diào)度方法,其特征在于所述步驟A2包括步驟所述管理進(jìn)程在所述進(jìn)程間通信共享內(nèi)存區(qū)內(nèi)設(shè)置進(jìn)程狀態(tài)表,所述進(jìn)程狀態(tài)表用于標(biāo)記進(jìn)程的狀態(tài)。5.根據(jù)權(quán)利要求4所述的三維圖像服務(wù)器多任務(wù)管理調(diào)度方法,其特征在于所述步驟A2包括步驟所述管理進(jìn)程在所述進(jìn)程間通信共享內(nèi)存區(qū)內(nèi)設(shè)置進(jìn)程消息表,所述進(jìn)程消息表用于存儲(chǔ)進(jìn)程間進(jìn)行通信的消息內(nèi)容。6.根據(jù)權(quán)利要求5所述的三維圖像服務(wù)器多任務(wù)管理調(diào)度方法,其特征在于所述步驟A2包括步驟所述管理進(jìn)程在所述進(jìn)程間通信共享內(nèi)存區(qū)內(nèi)設(shè)置子進(jìn)程屬性信息結(jié)構(gòu),所述子進(jìn)程屬性信息結(jié)構(gòu)用于標(biāo)記進(jìn)程的相關(guān)信息。7.根據(jù)權(quán)利要求6所述的三維圖像服務(wù)器多任務(wù)管理調(diào)度方法,其特征在于所述步驟A2包括步驟所述管理進(jìn)程在所述進(jìn)程間通信共享內(nèi)存區(qū)內(nèi)設(shè)置命令通道信息結(jié)構(gòu)。8.根據(jù)權(quán)利要求7所述的三維圖像服務(wù)器多任務(wù)管理調(diào)度方法,其特征在于所述步驟A2包括步驟所述管理進(jìn)程在所述進(jìn)程間通信共享內(nèi)存區(qū)內(nèi)設(shè)置數(shù)據(jù)通道信息結(jié)構(gòu)。9.根據(jù)權(quán)利要求8所述的三維圖像服務(wù)器多任務(wù)管理調(diào)度方法,其特征在于所述步驟A2包括步驟所述管理進(jìn)程在所述進(jìn)程間通信共享內(nèi)存區(qū)內(nèi)設(shè)置管理進(jìn)程屬性信息結(jié)構(gòu)。10.根據(jù)權(quán)利要求9所述的三維圖像服務(wù)器多任務(wù)管理調(diào)度方法,其特征在于所述管理進(jìn)程預(yù)先啟動(dòng)至少一個(gè)命令通道處理進(jìn)程、至少一個(gè)數(shù)據(jù)通道處理進(jìn)程和至少一個(gè)任務(wù)處理進(jìn)程。全文摘要本發(fā)明公開(kāi)了一種三維圖像服務(wù)器多任務(wù)管理調(diào)度方法,包括步驟A1、三維圖像服務(wù)器與至少一個(gè)客戶(hù)端通過(guò)私有通信協(xié)議分別建立命令通道連接和數(shù)據(jù)通道連接;A2、在所述三維圖像服務(wù)器中建立相應(yīng)的命令通道處理進(jìn)程、數(shù)據(jù)通道處理進(jìn)程和任務(wù)處理進(jìn)程,并開(kāi)辟進(jìn)程間通信共享內(nèi)存區(qū);A3、所述命令通道處理進(jìn)程與所述客戶(hù)端傳遞交互命令和操作參數(shù);A4、所述任務(wù)處理進(jìn)程根據(jù)所述操作參數(shù)進(jìn)行圖像三維重建并生成三維圖像數(shù)據(jù);A5、所述數(shù)據(jù)通道處理進(jìn)程向所述客戶(hù)端發(fā)送所述三維圖像數(shù)據(jù)。本發(fā)明三維圖像服務(wù)器多任務(wù)管理調(diào)度方法采用多進(jìn)程和雙通道與客戶(hù)端進(jìn)行通信,提高了三維圖像服務(wù)器的通信服務(wù)穩(wěn)定性。文檔編號(hào)G06F9/54GK101777012SQ200910239520公開(kāi)日2010年7月14日申請(qǐng)日期2009年12月31日優(yōu)先權(quán)日2009年12月31日發(fā)明者陳閩峰申請(qǐng)人:深圳市藍(lán)韻實(shí)業(yè)有限公司