基于LabVIEW的食管動力檢測系統(tǒng)設(shè)計
引 言
消化道的動力功能是消化系統(tǒng)重要的生理功能,消化道的動力活動是消化和吸收的基礎(chǔ)。近年來,由于社會競爭激烈、生活節(jié)奏加快、飲食結(jié)構(gòu)變化以及人們心理、精神等因素,胃腸動力障礙性疾病(DGIM)發(fā)病率呈上升趨勢。2006年,功能性胃腸病(FGDs)的羅馬III標(biāo)準(zhǔn)的問世,加深了人們對消化道動力的認識。FGDs需要排除炎癥、感染、腫瘤及其他結(jié)構(gòu)異常等器質(zhì)性病變,并根據(jù)癥狀作出診斷。同樣,作為FGDs中的一種,DGIM也不能用器質(zhì)性疾病機理解釋癥狀。因此,消化道動力檢測作為消化道疾病其他檢查方法的補充,對于研究和診斷胃腸動力障礙性疾病,有較高的臨床意義。
本系統(tǒng)由下位機與上位機組成。下位機負責(zé)采集數(shù)據(jù),并將其發(fā)送給上位機;上位機主要完成數(shù)據(jù)的顯示、分析等工作。上位機軟件采用LabVIEW開發(fā)。 LabVIEW作為圖形化編程環(huán)境的引領(lǐng)者,不僅直觀易學(xué)、開發(fā)功能強,而且程序的可重用性高,儀器驅(qū)動功能強大,能與第三方軟件輕松連接。使用 LabVIEW進行軟件開發(fā),可以充分利用計算機強大的數(shù)據(jù)處理和傳輸能力及LabVIEW提供的大量擴展功能庫和軟件工具包,大大豐富和增強了儀器的功能。
1 系統(tǒng)原理
本系統(tǒng)采用腔內(nèi)壓力記錄法中的毛細管液壓灌注法進行食管動力檢測。四通道測壓導(dǎo)管內(nèi)注滿蒸餾水后插入食管中,測壓導(dǎo)管側(cè)孔處的食管壓力通過無伸縮性的水柱傳至壓力傳感器的敏感膜片上,可測得食管4個不同位置的壓力信號。該信號經(jīng)放大調(diào)理后,接到下位機的模擬量輸入口。由下位機的模數(shù)轉(zhuǎn)換模塊轉(zhuǎn)換為數(shù)字量,通過USB接口傳送給上位機。由上位機軟件設(shè)定灌注壓力,通過USB接口傳送給下位機,下位機輸出脈寬調(diào)制輸出信號控制檢測儀中的電機。系統(tǒng)原理框圖如圖 1所示。
2 下位機設(shè)計
下位機主要由凌陽公司16位單片機SPCE061A和Philips公司的USB接口芯片PDIU/SBDl2(簡稱D12)組成。SPCE06lA擁有 32位可編程的多功能I/O端口和2個16位定時器/計數(shù)器,內(nèi)部集成了7通道10位電壓模數(shù)轉(zhuǎn)換器,兼具低電壓復(fù)位/監(jiān)測功能。SPCE061A的模擬量輸入口IOA[O~3]接檢測儀4路壓力信號,脈寬調(diào)制輸出口IO138接檢測儀的電機,SPCE061A與D12的連接如圖2所示。
主程序流程如圖3所示。系統(tǒng)初始化包括:系統(tǒng)時鐘設(shè)置、D12初始化、D12芯片的軟連接和模擬輸入通道初始化。定時器TimeA的時鐘源A選擇4 096 Hz,定時100 ms后,打開IRQl_TMA中斷。中斷發(fā)生后,中斷服務(wù)子程序調(diào)用D12命令層中的寫緩沖區(qū)函數(shù),將函數(shù)Get_AD()讀取的4路A/D轉(zhuǎn)換值寫入 USB端點2。其中,函數(shù)Get_AD()先讀取模擬輸入通道0的A/D轉(zhuǎn)換值26次,忽略最大與最小的5個值后取平均值;再依次讀取下一路模擬輸入通道的A/D轉(zhuǎn)換值。
3 上位機軟件系統(tǒng)的設(shè)計
采用LabVIEW8.2專業(yè)版開發(fā)軟件,后臺數(shù)據(jù)庫采用ACC2ESS 2003。采用模塊化設(shè)計方法將軟件系統(tǒng)分為數(shù)據(jù)庫操作模塊、數(shù)據(jù)采集與顯示模塊以及數(shù)據(jù)分析模塊。
3.1 數(shù)據(jù)庫操作模塊的設(shè)計
使用ACCESS 2003創(chuàng)建數(shù)據(jù)庫文件patient.mdb,經(jīng)過數(shù)據(jù)庫需求分析,建立如下6個數(shù)據(jù)表:系統(tǒng)信息表、用戶信息表、患者信息表、患者波形數(shù)據(jù)表、常用語詞庫表和解釋與評議詞庫表。
LabVIEW訪問上述的數(shù)據(jù)庫文件,需要安裝數(shù)據(jù)庫互聯(lián)工具包。數(shù)據(jù)庫互聯(lián)工具包通過使用ADO技術(shù)與數(shù)據(jù)庫建立連接。ADO是通過Mi- crosoft OLE DB與數(shù)據(jù)庫通信的。基于OLE DB的通信是通過一個類似于數(shù)據(jù)庫驅(qū)動程序的Provider實現(xiàn)的。使用ADO將允許與任何提供了OLE DB Provider或者ODBC Driver的數(shù)據(jù)庫建立連接。ODBC(Open DataBaseConnectivity)是一種傳統(tǒng)的通用的允許與數(shù)據(jù)庫建立連接的API。如果一個數(shù)據(jù)庫具有ODBC驅(qū)動,則可以通過使用 “Microsoft OLE DB Provider for ODBC”(實現(xiàn)了從0LE DB到ODBC的轉(zhuǎn)換功能)與數(shù)據(jù)庫連接。
創(chuàng)建Microsoft Data Link文件并對UDL文件進行相應(yīng)設(shè)置后,即可利用LabVIEW的數(shù)據(jù)庫互聯(lián)工具包中的函數(shù)實現(xiàn)對Access數(shù)據(jù)庫的訪問。
數(shù)據(jù)庫操作模塊包括以下幾個部分:
①用戶及密碼管理部分,負責(zé)軟件用戶的登陸及密碼的管理,包括用戶及密碼的添加、修改及刪除。
②常用語詞庫管理部分,是為了方便醫(yī)生在撰寫病人病例時輸入常用的病例詞匯的部分。醫(yī)生可以根據(jù)自己的需要添加和編輯常用的病例詞匯。
? ③解釋與評議詞庫管理部分,是為了方便醫(yī)生撰寫檢查報告時輸入解釋與評議詞匯的部分。醫(yī)生可以根據(jù)自己的需要添加和編輯常用的解釋與評議詞匯。
?、懿∪藬?shù)據(jù)庫管理部分,負責(zé)病人數(shù)據(jù)庫的管理,包括病人信息的瀏覽、修改、刪除以及病人各個時期檢查波形的查看。
病人數(shù)據(jù)庫管理部分用于顯示病人信息的程序,如圖4所示。這段代碼分為3個線程。線程1具體實現(xiàn)的步驟如下:
?、佾@得UDL文件的相對路徑,再用DB Tools Open COnnection函數(shù)打開與這個數(shù)據(jù)庫的連接。
②使用DB Tools Execute Query函數(shù),利用SQL語句select * from PatientTable來執(zhí)行SQL查詢,用以選擇患者信息表中的任何記錄。
?、凼褂肈B Tools Fetch Recordset Data函數(shù),將記錄以二維數(shù)據(jù)庫變量數(shù)組的形式輸出。
④通過For循環(huán)中的Database Variant To Data函數(shù),將二維數(shù)據(jù)庫變量數(shù)組轉(zhuǎn)換成字符串格式顯示在多列列表框中。
線程2用于顯示選項卡2中的所有控件(包括多列列表框),線程3用于插入新的菜單。
3.2 數(shù)據(jù)采集與顯示模塊的設(shè)計
數(shù)據(jù)采集與顯示模塊是醫(yī)生操作檢測儀的平臺,主要完成食管壓力數(shù)據(jù)的讀取和顯示、圖標(biāo)的標(biāo)記以及數(shù)據(jù)的保存。
每100 ms下位機將食管壓力數(shù)據(jù)寫到USB端點2上。要正確讀取USB接口的數(shù)據(jù),涉及對USB設(shè)備的驅(qū)動。在LabVIEW環(huán)境下,可以采用傳統(tǒng)的開發(fā)USB 驅(qū)動程序方法對D12芯片進行驅(qū)動,如先用windowsDDK開發(fā)USB驅(qū)動程序,然后用Visual C++編寫DLL,最后在LabVIEW中調(diào)用DLL來操作USB設(shè)備。這里介紹一種在LabVIEW環(huán)境下使用VISA進行快速開發(fā)USB驅(qū)動程序的方法。
NI-VISA是一個用來與各種儀器總線進行通信的高級應(yīng)用編程接口(API),且支持USB通信。使用VISA的驅(qū)動程序開發(fā)向?qū)閁SB設(shè)備創(chuàng)建并安裝INF文檔,只需在相應(yīng)欄內(nèi)輸入設(shè)備的供應(yīng)商ID(0X0471)、產(chǎn)品ID(0X0666)、制造商名稱(Philips Semiconductors)和型號名稱(PDILISBD12)。本設(shè)計中D12的VISA儀器描述符為 USB0::0x0471::0x0666::NI-VISA-O::RAw,在測量與自動化瀏覽器中可找到設(shè)備及其資源名稱,并可使用VI-SA Interactive Control測試通信情況。
LabVIEW中使用VISA中的函數(shù)與USB設(shè)備進行通信。圖5為從USB設(shè)備端點2中讀取指定字節(jié)數(shù)的程序代碼。具體實現(xiàn)過程如下:
①在前面板的“VISA資源名稱控件”中輸入VISA資源名稱字符串(即上述的VISA儀器描述符),用來指定要連接的USB設(shè)備。
?、谟肰ISAOPEN函數(shù)打開VISA資源名稱控件所指定的設(shè)備。
?、塾肬SB Raw的屬性節(jié)點USB Settings:Bulk-InPipe,將端點2設(shè)置為批量輸入端點。
?、苡肰ISARead函數(shù)從USB端點2中讀取16字節(jié)的數(shù)據(jù)。
用波形圖表控件顯示讀取的USB端點數(shù)據(jù),即可實現(xiàn)食管壓力數(shù)據(jù)的顯示。
在采集過程中,應(yīng)根據(jù)需要在波形圖表上設(shè)置基線和標(biāo)記圖標(biāo)。例如,當(dāng)確定測壓導(dǎo)管所有通道均插入胃中,應(yīng)點擊工具欄相應(yīng)圖標(biāo)設(shè)置胃基線;當(dāng)確定導(dǎo)管處于食管下括約肌中時,應(yīng)點擊工具欄相應(yīng)圖標(biāo)進行標(biāo)記。這些圖標(biāo)都會標(biāo)記在波形圖表上,以便今后的計算和分析。采集過程中,還應(yīng)將食管壓力數(shù)據(jù)以及圖標(biāo)標(biāo)記的時間和種類分別保存到二進制文件中,最后將文件作為oLE對象保存到數(shù)據(jù)庫中。
3.3 數(shù)據(jù)分析模塊的設(shè)計
數(shù)據(jù)分析模塊主要負責(zé)分析患者食管壓力數(shù)據(jù),并完成對患者壓力數(shù)據(jù)的輔助診斷。
首先需要將數(shù)據(jù)采集過程中進行過標(biāo)記操作的食管壓力數(shù)據(jù)波形圖繪制出來。由于要顯示波形圖以及各種直線、圖像、文字,波形圖控件已不能實現(xiàn)這些功能,故使用圖片控件進行顯示的工作。可使用繪制波形圖函數(shù)將保存在數(shù)據(jù)庫中相應(yīng)的食管壓力數(shù)據(jù)繪制在圖片中。利用讀取BMP文件函數(shù)、還原像素圖函數(shù)和繪制還原像素圖函數(shù),可以在圖片控件對應(yīng)區(qū)域繪制正確的標(biāo)志圖像。
對圖像進行操作時還需進行防閃爍的處理。通常情況下,在圖片中重新繪制圖形或拖動滾動條時,LabVIEW將通過擦除對象的內(nèi)容并重繪新數(shù)據(jù)的方式來更新某個對象,但這樣會導(dǎo)致可覺察的閃爍。通過設(shè)置圖片控件快捷菜單中的平滑更新屬性,LabVIEW會自動利用幕后緩沖區(qū)來最大限度地抑制擦除和重繪所引起的閃爍。食管壓力數(shù)據(jù)的波形圖繪制完后,根據(jù)在數(shù)據(jù)采集時所作的標(biāo)記選擇相應(yīng)的區(qū)域,系統(tǒng)會自動計算各種功能參數(shù),如LES靜息壓、殘余壓、松弛率以及吞咽時食管的收縮壓力。
? 分析結(jié)果會以報告的形式反饋給醫(yī)生,并且會被重新保存到數(shù)據(jù)庫中。最后,分析結(jié)果以報表形式輸出。
4 食管壓力檢查結(jié)果分析
上位機軟件系統(tǒng)會自動測量食管不同部位在靜息狀態(tài)與吞咽時的壓力,并實時顯示給醫(yī)生。對歷史數(shù)據(jù)樣本進行分析時,根據(jù)波形與采集時的標(biāo)記,從彈出的快捷菜單中選擇對應(yīng)的菜單項,然后選擇波形區(qū)域,系統(tǒng)會自動計算各種食管壓力參數(shù),以方便醫(yī)生進行診斷。
4.1 食管下括約肌壓力及松弛功能檢測
四通道測壓導(dǎo)管經(jīng)鼻腔插入胃腔,用緩慢定點牽拉法,當(dāng)壓力曲線隨呼吸波幅度明顯增加,如壓力持續(xù)升高超過胃基線2 mmHg以上時,說明測壓通道已進入LES;同時點擊工具欄圖標(biāo),以在壓力波形的相應(yīng)通道上進行LES標(biāo)記。選擇區(qū)域后可測得LES靜息壓,如圖6所示。
導(dǎo)管進入LES高壓區(qū)時壓力波形出現(xiàn)高峰,當(dāng)導(dǎo)管位于LES腹段時,作吸氣試驗可看到吸氣時壓力升高。繼續(xù)牽拉導(dǎo)管直至吸氣時壓力突然下降,此下降點即為壓力反轉(zhuǎn)點(PIP),表明導(dǎo)管已進入LES胸段。
每隔20~30 s囑受檢者做數(shù)次濕咽,以檢測吞咽后的LES松弛功能,同時在相應(yīng)的通道上打上濕咽(殘余壓)圖標(biāo)。選擇區(qū)域后可測得LES松弛壓,如圖7所示。
4.2 食管體部壓力測定
繼續(xù)緩慢向外牽拉測壓導(dǎo)管,使四通道導(dǎo)管都離開LES進入食道體部。每隔20~30 s囑患者濕咽數(shù)次,同時在第一通道上標(biāo)記濕咽圖標(biāo)。濕咽時,食道會發(fā)生收縮,壓力波形上會升高。選擇區(qū)域后可測得食管蠕動波幅,如圖8所示。
4.3 食管上括約肌(UES)檢測
繼續(xù)緩慢向外牽拉測壓導(dǎo)管,當(dāng)壓力波形出現(xiàn)一個增高的平臺時,表明導(dǎo)管進入食管上括約肌,同時應(yīng)在壓力波形上標(biāo)記UES圖標(biāo)。平臺頂部至食管基線的壓力差即為UES壓力。囑受檢者干咽,壓力平臺會突然下降又上升,下降的最低點至食管基線的壓力差即為UES松弛壓。
結(jié) 語
利用LabVIEW強大的儀器驅(qū)動功能,快速、高效地開發(fā)了USB驅(qū)動程序。利用LabVIEW的工具包實現(xiàn)了與ACCESS數(shù)據(jù)庫的輕松連接。通過對人體食管壓力數(shù)據(jù)樣本進行分析,得到了可供輔助診斷的壓力參數(shù),滿足了實際的醫(yī)用需求。
評論
查看更多