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

📄 menu.c

📁 基于ARM的uCOS-II完整源码,在VC++ WINDOWN下的编程. 利用VC++直接编译显示图形.便于源码的调试.首先下载uC/OS-II - WIN32 Port for 32bit Wind
💻 C
📖 第 1 页 / 共 5 页
字号:
        DispChar (7, 7,  StrValue[0],         sel==3?1:0);
        DispChar (12, 7, StrValue[1],          sel==4?1:0);
        DispChar (16, 7, StrValue[2],          sel==5?1:0);
        DispChar (12, 8, StrValue[3],          sel==6?1:0);
		DispChar (16, 8, StrValue[4],          sel==7?1:0);
		DispPhoto (0, 0, (char *)"dd",0);  //去掉
        MenuFlag = 1;
        while(MenuFlag)
        { 
           pMsg = GetMessagetemp(task1_tmq);
           switch(pMsg->message)
           {  
              case  TM_KEYOK:	
              	  clr_kb(); //清除键盘缓存消息
				  if(sel != 2)
              	     sel = DispMessage(100,120,(char *)"正在退出,是否保存数据?功能键是,其它键否",1);
              	      ;//保存设置的数据于分配的地址 
              	  WinId = 3;
              	  MenuFlag = 0;
                  WinFlag  = 0; 
                  break;
              case  TM_KEYUP: //向上  数值累加
                  switch(sel)
                  {
					  case 1:
						  sel = 2;
						  break;
					  case 2:
						  sel = 1;
						  break;
                      case 3:           //年份
                          if(IntValue[sel-3] < 2999)
                              IntValue[sel-3]++;
                          else
                              IntValue[sel-3] = 2000;
                          itoa(IntValue[sel-3],StrValue[sel-3],10);  //转化为字符串
                          break;
                      case 4:           //月份
                          if(IntValue[sel-3] < 12)
                              IntValue[sel-3]++;
                          else
                              IntValue[sel-3] = 1;
                          itoa(IntValue[sel-3],StrValue[sel-3],10);  //转化为字符串
                          break;
                      case 5:           //日子
                          if(IntValue[sel-3] < 31)
                              IntValue[sel-3]++;
                          else
                              IntValue[sel-3] = 1;
                          itoa(IntValue[sel-3],StrValue[sel-3],10);  //转化为字符串
                          break;
                      case 6:           //小时数
                          if(IntValue[sel-3] < 23)
                              IntValue[sel-3]++;
                          else
                              IntValue[sel-3] = 0;
                          itoa(IntValue[sel-3],StrValue[sel-3],10);  //转化为字符串
                          break;
                      case 7:           //分钟数
                          if(IntValue[sel-3] < 59)
                              IntValue[sel-3]++;
                          else
                              IntValue[sel-3] = 0;
                          itoa(IntValue[sel-3],StrValue[sel-3],10);  //转化为字符串
                          break;
                      default:
                          break;    
                  }
                  MenuFlag = 0;
                  break;		
              case  TM_KEYDOWN: //向下  数值减少
                  switch(sel)
                  {
					  case 1:
						  sel = 2;
						  break;
					  case 2:
						  sel = 1;
						  break;
                      case 3:           //年份
                          if(IntValue[sel-3] > 2000)
                              IntValue[sel-3]--;
                          else
                              IntValue[sel-3] = 2999;
                          itoa(IntValue[sel-3],StrValue[sel-3],10);  //转化为字符串
                          break;
                      case 4:           //月份
                          if(IntValue[sel-3] > 1)
                              IntValue[sel-3]--;
                          else
                              IntValue[sel-3] = 12;
                          itoa(IntValue[sel-3],StrValue[sel-3],10);  //转化为字符串
                          break;
                      case 5:           //日子
                          if(IntValue[sel-3] > 1)
                              IntValue[sel-3]--;
                          else
                              IntValue[sel-3] = 31;
                          itoa(IntValue[sel-3],StrValue[sel-3],10);  //转化为字符串
                          break;
                      case 6:           //小时数
                          if(IntValue[sel-3] > 0)
                              IntValue[sel-3]--;
                          else
                              IntValue[sel-3] = 23;
                          itoa(IntValue[sel-3],StrValue[sel-3],10);  //转化为字符串
                          break;
                      case 7:           //分钟数
                          if(IntValue[sel-3] > 0)
                              IntValue[sel-3]--;
                          else
                              IntValue[sel-3] = 59;
                          itoa(IntValue[sel-3],StrValue[sel-3],10);  //转化为字符串
                          break;
                      default:
                          break;    
                  }
                  MenuFlag = 0;
                  break;		
              case  TM_KEYRIGHT: //按向右键
                  if(sel == 1)
                     sel = 3;    //菜单循环
				  else if(sel == 2)
				  {
                     WinId = 3;
                     WinFlag  = 0; 
				  }
				  else if(sel == 7)
					 sel = 2;
				  else
                     sel++;      
                  MenuFlag = 0;
                  break;
              case  TM_KEYLEFT: //按向左键
                  if((sel > 3) && (sel <= 7))
					 sel--; 
				  else if(sel == 3)
					 sel = 1;
                  MenuFlag = 0;
                  break;    
              case  TM_KEYMEASURE:	  // 此时按测量键时,如果未进入通讯及测量操作,
                                      //则开始测量,否则提示用户稍后进行
                  switch(TStatus)
                  {
                     //注意显示信息不能覆盖界面上的静态数据
                    case Idle:    //空闲时进入测量界面
                      WinId    = 1; //测量前界面
                      WinFlag  = 0;
                      break; 
                    case Measure: //正在启动测量
                      SetFont(2); //设置字体
                      DispString(7,7,(char *)"正在启动测量!",0);     
                      break;  
                    case communication: //正在传输数据
                      SetFont(2); //设置字体
                      DispString(7,7,(char *)"正在传输数据!",0);  
                      break;    
                    case Buff: //无效时错误
                      SetFont(2); //设置字体
                      DispString(7,7,(char *)"系统错误!",0);    
                      break; 
        	        default:
        	          break;
        	      } 
        	      MenuFlag = 0;
        	      break;
        	   default:
        	      break;
         } //switch(pMsg->message)   
      }//while(MenuFlag) 	      
   }//while(WinFlag)
	
}

/****************************************************************************
* 函数名:ShowAdvice
* 功能:  显示医嘱信息,按测量键时,进入测量前界面;按上下键时,查看医嘱信息,按向左键
          时返回上层菜单
  注意:   没有医嘱信息时,
  返回值: 无
****************************************************************************/
void    ShowAdvice()
{
  clr_scr();
  DispString(1,1,(char *)"按上下键时,查看医嘱信息",0);
  DispString(1,2,(char *)"按向左键时返回上层菜单",0);
  DispMessage(100,120,(char *)"医嘱信息为空?按任意键返回",1);
	
}

/****************************************************************************
* 函数名:SetVolume
* 功能:  设置音量
          打开/关闭/增加/降低
  说明:   返回时WinId为3(主界面)
****************************************************************************/
void SetVolume()
{
    uint8 ret,sel=1;     //当前选择的菜单
	uint8 WinFlag = 1; //懑足窗体切换条件时置为0
	uint8 MenuFlag    ;//满足菜单选择条件时,置为0
	MSGtemp  *pMsg;        //声明消息
	SetFont(2);
	while(WinFlag)
	{   
	    clr_scr();  
	    //显示界面静态数据
	    DispPhoto( 16,20,(char *)"音量设置",1);
	    //显示界面动态数据
        DispPhoto (140, 130, (char *)"返回",     sel==1?1:0);
        DispPhoto (140, 80, (char *)"关闭",    sel==2?1:0);
        DispPhoto (140, 180,(char *)"打开",     sel==3?1:0);
        DispPhoto (40, 130,(char *)"降低",     sel==4?1:0);
		DispPhoto (240, 130,(char *)"增加",     sel==5?1:0);
		DispPhoto (0, 0, (char *)"dd",0);  //去掉
        MenuFlag = 1;
        while(MenuFlag)
        { 
           pMsg = GetMessagetemp(task1_tmq);
           switch(pMsg->message)
           {  
              case  TM_KEYOK:	
				  switch(sel)
				  {
				      case 1:
						  WinId = 3;
						  WinFlag  = 0; //按处理后的WINID进行切换
						  break;
					  case 2:
						  ret = DispMessage(100,120,(char *)"音量已关闭",0);
						  break;
					  case 3:
						  ret = DispMessage(100,120,(char *)"音量已打开",0);
						  sel = 4;
						  break;
                      default:
						  break;
				  }
				  MenuFlag = 0;
                  break;
              case  TM_KEYRIGHT: //
				  switch(sel)
				  {
				      case 1:
						  sel = 5;
						  break;
					  case 4:
						  sel = 1;
						  break;
					  case 5:
						  sel = 4;
						  break;
                      default:
						  break;
				  }
                  MenuFlag = 0;
                  break;	
			  case  TM_KEYLEFT: //
				  switch(sel)
				  {
				      case 1:
						  sel = 4;
						  break;
					  case 4:
						  sel = 5;
						  break;
					  case 5:
						  sel = 1;
						  break;
                      default:
						  break;
				  }
                  MenuFlag = 0;
                  break;		  
              case  TM_KEYUP   : //按向上键
                  switch(sel)
				  {
				      case 1:
					  case 2:
						  sel++;
						  break;
					  case 3:
						  sel = 1;
						  break;
					  case 4:
						  
						  break;
					  case 5:
						  break;
                      default:
						  break;
				  }
                  MenuFlag = 0;
                  break;
              case  TM_KEYDOWN: //按向下键
                  switch(sel)
				  {
				      case 1:
						  sel = 3;
						  break;
					  case 2:
					  case 3:
						  sel--;
						  break;
					  case 4:
						  break;
					  case 5:
						  break;
                      default:
						  break;
				  }
                  MenuFlag = 0;
                  break;      
              case  TM_KEYMEASURE:	  // 此时按测量键时,如果未进入通讯及测量操作,
                                      //则开始测量,否则提示用户稍后进行
                  switch(TStatus)
                  {
                     //注意显示信息不能覆盖界面上的静态数据
                    case Idle:    //空闲时进入测量界面
                      WinId    = 1; //测量前界面
                      WinFlag  = 0;
                      break; 
                    case Measure: //正在启动测量
                      SetFont(2); //设置字体
                      DispString(7,7,(char *)"正在启动测量!",0);     
                      break;  
                    case communication: //正在传输数据
                      SetFont(2); //设置字体
                      DispString(7,7,(char *)"正在传

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -