📄 menu.c.bak
字号:
/****************************************************************************
* 文件名:menu.C
* 功能:显示UI界面
****************************************************************************/
#include "includes.h"
extern TMQ *task1_tmq;
extern TemiStatus TStatus; //终端状态全局变量
extern uint8 WinId; //当前窗体状态
extern uint8 debug; //调试开关
extern HWND hwnd ;
extern HDC hdc;
void UI_wellcome();
void UI_BeginMeasure();
void UI_Main();
void UI_ShowSetting(); //设置数据
void UI_ShowInfo();
void UI_ShowChart();
void UI_MeasureResult();
void SetDayNight(); //昼夜定义
void SetVolume(); //音量设置
void SetTime(); //时间设置
void drap_info();
void SetUserStatus();
void SetFrequency();
/****************************************************************************
* 函数名:SetMenu
* 功能:循环根据用户选择进入相应的界面
****************************************************************************/
void SetMenutemp()
{
while(1)
{
switch(WinId)
{
case 0:
UI_wellcome(); //欢迎界面
break;
case 1:
UI_BeginMeasure(); //测量前界面
break;
case 2:
UI_MeasureResult(); //显示图形为最近12小时的收缩压和舒张压两条曲线,数据则是当前测到的血压
break;
case 3:
UI_Main(); //主菜单界面
break;
case 4:
UI_ShowInfo(); //显示界面(医嘱或其它)
break;
case 5:
UI_ShowChart(); //图表界面(按月周日显示血压心率曲线)
break;
case 6:
UI_ShowSetting(); //设置数据界面
break;
//以下为图形显示加处理函数
case 10:
SetTime(); //进入时间处理函数
break;
case 11:
SetDayNight(); //进入昼夜定义
break;
case 12:
SetVolume(); //音量设置
break;
default:
break;
} //end switch
} //end while
} //end function
/****************************************************************************
* 函数名:UI_wellcome.
* 功能: 显示欢迎信息,1秒后进入下一个界面
****************************************************************************/
void UI_wellcome()
{
clr_scr();
SetFont(2); //设置字体
DispString(0,10,(char *)"欢迎使用安立凯动态血压监护服务!",0);
OSTimeDly(OS_TICKS_PER_SEC*3); // 延时1秒
//WinId = 2; //进入下一个窗体 显示最近24小时的血压数据
WinId = 3;
}
/****************************************************************************
* 函数名:UI_BeginMeasure.
* 功能: 测量前界面.此时按测量键启动测量,按其它任意键返回主界面
如果正在通讯或测量则提示用户稍后再测并返回主界面
****************************************************************************/
void UI_BeginMeasure()
{
uint8 Error, Flag = 1; //有消息进来且需要处理时置为0
MSGtemp *pMsg; //声明消息
clr_scr();
SetFont(2); //设置字体
DispString(10,2,(char *)"测量前准备 测量键继续,其它键返回",0);
DispString(1,8,(char *)"动态血压正在测量中,请您放松左臂并使袖带与心脏处于同样高度。",0);
DispString(1,12,(char *)"测量后,则显示那个,平时与测量后屏幕显示.",0);
DispString(1,16,(char *)"按下功能键,则开始测量,其它任意键返回。",0);
while(Flag)
{
pMsg = GetMessagetemp(task1_tmq);
switch(pMsg->message)
{
case TM_KEYOK: // 按除测量键后的任意键后进入主界面
case TM_KEYDOWN:
case TM_KEYUP:
case TM_KEYLEFT:
case TM_KEYRIGHT:
Flag = 0;
WinId = 3; //进入主界面
break;
case TM_KEYMEASURE: // 此时按测量键时,如果未进入通讯及测量操作,
//则开始测量,否则提示用户稍后进行
switch(TStatus) //终端状态
{
case Idle: //空闲启动测量
Error = measure(); //测量函数
if (0 == Error)
{
DispString(7,7,(char *)"测量失败,请检查后重新测量!",0);
OSTimeDly(OS_TICKS_PER_SEC / 5);
}
else //测量成功,显示测量结果
{
Flag = 0;
WinId = 2; //显示测量结果
}
break;
case Buff:
clr_scr();
SetFont(2); //设置字体
DispString(7,7,(char *)"系统错误!",0);
OSTimeDly(OS_TICKS_PER_SEC / 5);
if(debug)
Debug((char *)"UI_MeasureResult处理错误");
break;
case Measure: //正在启动测量
clr_scr();
SetFont(2); //设置字体
DispString(7,7,(char *)"正在启动测量!",0);
OSTimeDly(OS_TICKS_PER_SEC / 5);
if(debug)
Debug((char *)"UI_MeasureResult处理错误");
break;
case communication: //正在传输数据
clr_scr();
SetFont(2); //设置字体
DispString(7,7,(char *)"正在传输数据!",0);
OSTimeDly(OS_TICKS_PER_SEC / 5);
if(debug)
Debug((char *)"UI_MeasureResult处理错误");
break;
default:
break;
}
case TM_UART0RCV: // UART0接收消息处理,暂不处理串口消息
break;
default:
break;
} // end of switch(pMsg->message)
}
}
/****************************************************************************
* 函数名:UI_MeasureResult.
* 功能: 显示图形为最近24小时的收缩压和舒张压和心率三条曲线,数据则是当前测到的血压
并等待用户输入,按任意键进入主界面
****************************************************************************/
void UI_MeasureResult()
{
uint8 Flag = 1; //有消息进来且需要处理时置为0
MSGtemp *pMsg; //声明消息
clr_scr();
drap_info(); //显示图形为最近24小时的收缩压和舒张压两条曲线,数据则是当前测到的血压
while(Flag)
{
pMsg = GetMessagetemp(task1_tmq);
switch(pMsg->message)
{
case TM_KEYOK: // 按除测量键后的任意键后进入主界面
case TM_KEYDOWN:
case TM_KEYUP:
case TM_KEYLEFT:
case TM_KEYRIGHT:
Flag = 0;
WinId = 3; //进入主界面
break;
case TM_KEYMEASURE: // 此时按测量键时,如果未进入通讯及测量操作,
//则开始测量,否则提示用户稍后进行
switch(TStatus)
{
case Idle:
Flag = 0;
WinId = 1; //进入测量前界面
break;
case Buff: //无效时错误
clr_scr();
SetFont(2); //设置字体
DispString(7,7,(char *)"系统错误!",0);
if(debug)
Debug((char *)"UI_MeasureResult处理错误");
break;
case Measure: //正在启动测量
clr_scr();
SetFont(2); //设置字体
DispString(7,7,(char *)"正在启动测量!",0);
if(debug)
Debug((char *)"UI_MeasureResult处理错误");
break;
case communication: //正在传输数据
clr_scr();
SetFont(2); //设置字体
DispString(7,7,(char *)"正在传输数据!",0);
if(debug)
Debug((char *)"UI_MeasureResult处理错误");
break;
default:
break;
}
case TM_UART0RCV: // UART0接收消息处理,暂不处理串口消息
break;
default:
break;
} // end of switch(pMsg->message)
}
}
/****************************************************************************
* 函数名:UI_Main.
* 功能: 显示主要功能,按不同的键相应的界面或处理
****************************************************************************/
void UI_Main()
{
uint8 rel,sel=1; //当前选择的菜单
uint8 WinFlag = 1; //懑足窗体切换条件时置为0
uint8 MenuFlag ;//满足菜单选择条件时,置为0
MSGtemp *pMsg; //声明消息
//MSG pMsg;
SetFont(2);
while(WinFlag)
{
clr_scr();
//显示界面静态数据
DispString(1,1,(char *)"主菜单!",1);
//显示界面动态数据
DispPhoto (80, 60, (char *)"时间设定", sel==1?1:0);
DispPhoto (80, 120, (char *)"显示", sel==2?1:0);
DispPhoto (80, 180, (char *)"图表", sel==3?1:0);
DispPhoto (240, 60, (char *)"昼夜设定", sel==4?1:0);
DispPhoto (240, 120, (char *)"音量设置", sel==5?1:0);
DispPhoto (240, 180, (char *)"输入数据", sel==6?1:0);
DispPhoto (0, 0, (char *)"dd",0); //去掉
//显示界面静态数据
/* DispString(35,3,(char *)"主菜单!",0);
//显示界面动态数据
DispPhoto (20, 6, (char *)"时间设定", sel==1?1:0);
DispPhoto (20, 12, (char *)"显示", sel==2?1:0);
DispPhoto (20, 20, (char *)"图表", sel==3?1:0);
DispPhoto (50, 6, (char *)"昼夜设定", sel==4?1:0);
DispPhoto (50, 12, (char *)"音量设置", sel==5?1:0);
DispPhoto (50, 20, (char *)"输入数据", sel==6?1:0); */
MenuFlag = 1;
while(MenuFlag)
{
pMsg = GetMessagetemp(task1_tmq);
switch(pMsg->message)
{
case TM_KEYOK:
case TM_KEYRIGHT: //按功能键或向右键时表表示确认并进入子菜单
switch (sel)
{
case 1:
WinId = 10; //进入时间设置
break;
case 2:
WinId = 4; //进入显示界面
break;
case 3:
WinId = 5; //进入图表
break;
case 4:
WinId = 11; //进入昼夜定义
break;
case 5:
WinId = 12; //进入声音设置
break;
case 6:
WinId = 6; //进入设置数据菜单
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -