基于嵌入式的心電模擬發(fā)生系統(tǒng)設(shè)計(jì)方案
3.1 D/A驅(qū)動(dòng)程序和高壓信號(hào)采集驅(qū)動(dòng)部分
設(shè)備驅(qū)動(dòng)程序是操作系統(tǒng)內(nèi)核和機(jī)器硬件之間的接口。設(shè)備驅(qū)動(dòng)程序?yàn)閼?yīng)用程序屏蔽了硬件的細(xì)節(jié),這樣在應(yīng)用程序看來,硬件設(shè)備只是一個(gè)設(shè)備文件,應(yīng)用程序可以像操作普通文件一樣對硬件設(shè)備進(jìn)行操作,以往在開發(fā)應(yīng)用程序時(shí)都有一個(gè)main函數(shù)作為程序的入口點(diǎn),而在驅(qū)動(dòng)開發(fā)時(shí)卻沒有main函數(shù),模塊在調(diào)用insmod命令時(shí)被加載,此時(shí)的入口點(diǎn)是init module函數(shù),通常在該函數(shù)中完成沒備的注冊。同樣,模塊在調(diào)用rmmod函數(shù)時(shí)被卸載,此時(shí)的入口點(diǎn)是cleanup module函數(shù),在該函數(shù)中完成設(shè)備的卸載。在設(shè)備完成注冊加載之后,用戶的應(yīng)用程序就可以對該設(shè)備進(jìn)行一定的操作,如read,write等,而驅(qū)動(dòng)程序就是用于實(shí)現(xiàn)這些操作,在用戶應(yīng)用程序調(diào)用相應(yīng)入口函數(shù)時(shí)執(zhí)行相關(guān)的操作,init roodule入口點(diǎn)函數(shù)則不需要完成其他如read,write之類功能。
驅(qū)動(dòng)程序主要函數(shù)如下:
3.2 系統(tǒng)應(yīng)用程序設(shè)計(jì)與實(shí)現(xiàn)
該系統(tǒng)的應(yīng)用程序是基于Qt/Embedded設(shè)計(jì)的,目前使用的嵌入式GUI系統(tǒng)存在 Microwindows,MiniGUI,Qt/Embedded,Qt/Embedded延續(xù)了Qt的強(qiáng)大功能,可以運(yùn)行在多種不同的處理器上部署的嵌入式Linux操作系統(tǒng)。Qt/Embedded提供了信號(hào)和插槽的編程機(jī)制,該部分采用的Qt是一個(gè)創(chuàng)建GUI程序的C++類庫,編寫Qt應(yīng)用程序的主要工作是基于已有的Qt類編寫用戶類。該部分主要分為波形界面的實(shí)現(xiàn)和用戶按鍵控制的實(shí)現(xiàn),波形顯示采用Qt的函數(shù)類庫Qpainter,由于波形界面顯示兩路心電波形,會(huì)產(chǎn)生延遲效果,所以引入了多線程機(jī)制協(xié)調(diào),Qt支持多線程,有獨(dú)立于平臺(tái)的線程類,線程安全方式的時(shí)間傳遞和一個(gè)全局Qt庫互斥量允許不同的線程調(diào)用Qt方法。
4 結(jié)語
本系統(tǒng)設(shè)計(jì)采用三星2440嵌入式處理器作為核心搭建了硬件平臺(tái),并采用嵌入式Linux操作系統(tǒng)并結(jié)合外圍的D/A轉(zhuǎn)換部分、與監(jiān)護(hù)儀匹配網(wǎng)絡(luò)、高壓信號(hào)采集部分、應(yīng)用程序控制部分等實(shí)現(xiàn)了心電除顫模擬發(fā)生系統(tǒng)的設(shè)計(jì)。該系統(tǒng)可以很好地模擬醫(yī)學(xué)除顫的過程,并可以與醫(yī)用監(jiān)護(hù)儀相連接,輸出符合醫(yī)學(xué)標(biāo)準(zhǔn)的34種常見異常心率波形,由于系統(tǒng)使用嵌入式實(shí)時(shí)多任務(wù)操作系統(tǒng),因此該設(shè)計(jì)具有很高的實(shí)時(shí)性、穩(wěn)定性和可靠性。
評論