⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 menu.c.bak

📁 基于ARM的uCOS-II完整源码,在VC++ WINDOWN下的编程. 利用VC++直接编译显示图形.便于源码的调试.首先下载uC/OS-II - WIN32 Port for 32bit Wind
💻 BAK
📖 第 1 页 / 共 5 页
字号:
/****************************************************************************
* 文件名: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 + -