一種基于AVR單片機的便攜式無線醫(yī)療點滴監(jiān)控系統(tǒng)
3 系統(tǒng)軟件結(jié)構(gòu)
本文引用地址:http://cafeforensic.com/article/262821.htm(1) 數(shù)據(jù)幀結(jié)構(gòu)
定義一個通信數(shù)據(jù)幀結(jié)構(gòu)來管理控制端與設(shè)備間的通信,通過對數(shù)據(jù)幀的解析,主/從設(shè)備可以高效率地完成數(shù)據(jù)處理。按照通信傳輸?shù)南群箜樞颍瑪?shù)據(jù)幀的格式為:命令(1字節(jié))+設(shè)備ID(1字節(jié))+事件類型(1字節(jié))+數(shù)據(jù)域長度(1字節(jié))+數(shù)據(jù)域(n字節(jié))+校驗和(2字節(jié))。
(2) μC/OSII的移植
μC/OSII是一種開源、結(jié)構(gòu)可裁剪的可剝奪實時內(nèi)核的RTOS,其大部分代碼都是C語言,可移植性較強,已在多種系列的CPU上進行了移植。AVR Studio 5內(nèi)部集成了Software Framework軟件包,包含Atmel MCU接口驅(qū)動函數(shù),在AVR Studio 5環(huán)境下,移植μC/OSII到AT32UC3A0512 MCU上,需要在Micrium官方移植實例中進行以下修改:
?、?修改exception.S文件中的內(nèi)容,修改如下:
_handle_Supervisor_Call:
lddpcpc,__OSCtxSw
__OSCtxSw:。
longOSCtxSw
② 修改cpu.h內(nèi)容如下:
#define CPU_CRITICAL_ENTER()
{cpu_sr = CPU_SR_Save();}
#define CPU_CRITICAL_EXIT()
{CPU_SR_Restore(cpu_sr);}
#define CPU_SR_Save()cpu_irq_save()
#define CPU_SR_Restore(cpu_sr)
cpu_irq_restore(cpu_sr)
#define CPU_IntDis()Enable_global_interrupt()
#define CPU_IntEn()Disable_global_interrupt()
#define CPU_ExceptDis()Disable_global_exception()
#define CPU_ExceptEn()Enable_global_exception()
#define CPU_Reset()Reset_CPU()
圖6 主控制端的軟件結(jié)構(gòu)圖
(3) 控制器部分軟件設(shè)計
在μC/OSII系統(tǒng)下的軟件結(jié)構(gòu)如圖6所示。
主控制端主要通過LCD界面來完成用戶的操作,5個觸摸鍵為界面操作按鍵,數(shù)字鍵盤用軟件實現(xiàn)。通過數(shù)字鍵盤輸入要查詢的病房號,確認后即可查詢到該病房中點滴的速度、余量等狀態(tài)。
界面菜單的切換關(guān)系通過定義一個結(jié)構(gòu)體來實現(xiàn),結(jié)構(gòu)體定義為:
typedef struct MenuItem{
U8 MenuNum;//當層菜單項目數(shù)
U8 *DispStr; //顯示字符串
struct MenuItem *ChildrenMenus;//子菜單節(jié)點
struct MenuItem *ParentMenus; //父菜單節(jié)點
} Menu;
(4) 終端監(jiān)控部分軟件設(shè)計
終端接收到控制端發(fā)來的命令數(shù)據(jù)包,解析出命令,實施相應(yīng)的處理,并將數(shù)據(jù)處理后打包發(fā)送給控制端。終端控制部分的軟件流程如圖7所示。
圖7 終端主程序
結(jié)語
基于AVR32MCU和μC/OSII的嵌入式系統(tǒng),利用無線通信方式實現(xiàn)遠程在線監(jiān)控,無線網(wǎng)絡(luò)的組建增強了系統(tǒng)的可移動性。本文提出的一種基于AVR32的便攜式點滴監(jiān)控系統(tǒng)的設(shè)計,將醫(yī)療點滴監(jiān)控裝置小型化,近距離范圍內(nèi)系統(tǒng)穩(wěn)定。由于資源有限,關(guān)于遠距離控制的網(wǎng)絡(luò)組建還在進一步探索。
評論