MIPS架構(gòu)的醫(yī)院智能導(dǎo)診系統(tǒng)設(shè)計(jì)
2 基于嵌入式Linux和MiniGUI的主控程序
2.1 嵌入式Linux
Linux是一個(gè)完全免費(fèi)的開源操作系統(tǒng),內(nèi)核可以被裁剪到134 KB左右。Linux是一個(gè)能夠適應(yīng)多種CPU和硬件平臺(tái)的操作系統(tǒng),裁剪之后的Linux系統(tǒng)用于這些設(shè)備中執(zhí)行資源管理、任務(wù)調(diào)度、存儲(chǔ)空間分配等任務(wù)。嵌入式應(yīng)用系統(tǒng)的開發(fā)一般可以分為如下幾個(gè)步驟:交叉編譯工具的建立,Bootloader的編譯和燒寫,編譯內(nèi)核并移植到開發(fā)板,文件系統(tǒng)的編譯和燒寫。交叉編譯是嵌入式系統(tǒng)開發(fā)中需要用到的一個(gè)常見技術(shù),其主要特征是嵌入式設(shè)備上的可執(zhí)行程序通常是在另外一臺(tái)機(jī)器上編譯生成的。通常將前者稱為目標(biāo)機(jī)器(Target),后者稱為主機(jī)(Host)。主機(jī)擁有的資源豐富很適合在上面編譯機(jī)器相關(guān)的代碼,這種技術(shù)為軟件的不同平臺(tái)移植創(chuàng)造了便利條件。交叉編譯工具配置在主機(jī)(Host)上編譯及配置環(huán)境變量后,就可以用來(lái)編譯Bootloader、內(nèi)核和文件系統(tǒng)。Bootloader是一個(gè)啟動(dòng)加載Linux內(nèi)核的固件程序,有點(diǎn)類似于PC機(jī)的BIOS程序,在完成硬件初始化以及內(nèi)存映射等操作之后,通常會(huì)將外部存儲(chǔ)介質(zhì)上存放的內(nèi)核鏡像加載到RAM中,然后跳轉(zhuǎn)到指定的內(nèi)存位置執(zhí)行。
2.2 MiniGUI用戶界面
GUI(Graphical User Interface)是指采用圖形方式顯示的計(jì)算機(jī)操作用戶界面。系統(tǒng)中所要闡述的高清播放機(jī)上需要提供人機(jī)交互界面,控制諸如視頻的暫停、播放、文件更新以及播放機(jī)的聲音控制和開關(guān)機(jī)控制等圖形界面。智能導(dǎo)診系統(tǒng)中使用的圖形用戶界面采用的是MiniGUI。MiniGUI是一個(gè)跨平臺(tái)的面向嵌入式系統(tǒng)的輕量級(jí)圖形用戶界面支持系統(tǒng),可在Linux/μClinux、eCos、μC/OS-II、VxWorks、pSOS、ThreadX等操作系統(tǒng)以及Win32平臺(tái)上運(yùn)行,廣泛應(yīng)用于手持信息終端、機(jī)頂盒、工業(yè)控制系統(tǒng)、便攜式多媒體播放器機(jī)等產(chǎn)品和領(lǐng)域。
3 播放機(jī)軟件系統(tǒng)設(shè)計(jì)
3.1 智能導(dǎo)診系統(tǒng)的軟件架構(gòu)
SMP8654為應(yīng)用開發(fā)提供分層服務(wù)架構(gòu),軟件系統(tǒng)設(shè)計(jì)主要根據(jù)SMP8654分層服務(wù)模型,找出最優(yōu)化的設(shè)計(jì)方案。智能導(dǎo)診通過(guò)研究DCC的控制邏輯,及Sigma公司的SDK文檔,設(shè)計(jì)出了如圖2所示的SMP8654高清播放機(jī)的軟件系統(tǒng)架構(gòu)。智能導(dǎo)診系統(tǒng)首先對(duì)硬件平臺(tái)初始化,接著初始化有線或者無(wú)線網(wǎng)絡(luò)(這部分主要作用是網(wǎng)絡(luò)接口卡初始化操作,日志部分初始化是跟蹤和調(diào)試應(yīng)用程序的重要組成部分);接著創(chuàng)建MiniGUI主窗口,最后進(jìn)入消息循環(huán)。本文引用地址:http://2s4d.com/article/160634.htm
當(dāng)MiniGUI接收到MSG_CLOSE消息時(shí),由HWNDDESKTOP向主窗口發(fā)送退出消息,至此程序結(jié)束,播放機(jī)被關(guān)閉;當(dāng)播放機(jī)接收到圖片顯示命令時(shí),將命令消息存入到消息隊(duì)列中,這里要?jiǎng)?chuàng)建消息隊(duì)列是因?yàn)镸iniGUI在接收到用戶的各種不同命令時(shí),都會(huì)將命令解析并且存入到任務(wù)隊(duì)列中,由任務(wù)派發(fā)器將任務(wù)發(fā)送到不同模塊處理。MiniGUI的主程序會(huì)根據(jù)用戶選擇的視頻及音頻文件,選擇將消息發(fā)送到視頻解碼進(jìn)程處理,當(dāng)用戶選擇打開某個(gè)高清的圖片時(shí),消息隊(duì)列中會(huì)保留圖片大小、圖片格式、圖片的顯示時(shí)間等控制信息。這里要使用任務(wù)隊(duì)列的原因其實(shí)很簡(jiǎn)單,分離出播放器的一個(gè)個(gè)任務(wù),讓不同的軟件服務(wù)模塊處理。如果要播放視頻,調(diào)度程序會(huì)將任務(wù)隊(duì)列中的視頻播放任務(wù)派發(fā)給視頻解碼進(jìn)程處理。如果要使用GFX引擎高效率繪制圖片,則任務(wù)被分派到高清圖片處理進(jìn)程處理。
智能導(dǎo)診系統(tǒng)服務(wù)進(jìn)程主要負(fù)責(zé)從醫(yī)院HIS信息系統(tǒng)的接口函數(shù)中獲得當(dāng)前病人的掛號(hào)信息,并且通過(guò)TCP發(fā)送到高清播放機(jī)上,最后通過(guò)MiniGUI的Draw Text函數(shù)將相關(guān)病人信息以列表的方式顯示在預(yù)先定義的排隊(duì)隊(duì)列中。這里的視頻解碼進(jìn)程是獨(dú)立的進(jìn)程,主控程序和此進(jìn)程的通信是通過(guò)Linux的消息隊(duì)列機(jī)制實(shí)現(xiàn)的。消息隊(duì)列是一種內(nèi)核標(biāo)示,兩個(gè)進(jìn)程之間的交互是通過(guò)調(diào)用msgsnd和msgrecv這樣的函數(shù)實(shí)現(xiàn)的,只要兩個(gè)進(jìn)程的消息隊(duì)列標(biāo)識(shí)是一致的,進(jìn)程之間就可以交互。當(dāng)MiniGUI接收到退出消息時(shí),會(huì)向視頻解碼進(jìn)程發(fā)送退出消息,讓視頻解碼進(jìn)程清空所占用的系統(tǒng)資源。
光耦相關(guān)文章:光耦原理
萬(wàn)用表相關(guān)文章:萬(wàn)用表怎么用
dc相關(guān)文章:dc是什么
手機(jī)電池相關(guān)文章:手機(jī)電池修復(fù)
c語(yǔ)言相關(guān)文章:c語(yǔ)言教程
linux相關(guān)文章:linux教程
c++相關(guān)文章:c++教程
評(píng)論