你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

智能手表雏形之调时功能实现

[复制链接]
颩色四葉愺 发布时间:2015-1-7 12:42
本帖最后由 颩色四葉愺 于 2015-1-7 18:03 编辑

拥有GPS调时和人工调时功能!
  1. void GUI_time(void)
  2. {
  3.                 WM_HWIN hText;
  4.                 WM_HWIN hButton;
  5.                 Win_Set.time=FRAMEWIN_CreateEx(0,0,Win_Set.xSizeWin,Win_Set.ySizeWin,Win_Set.hWinMain, WM_CF_SHOW, FRAMEWIN_CF_ACTIVE,GUI_ID_FRAMEWIN0, "Time",0);
  6.                 FRAMEWIN_SetTitleHeight(Win_Set.time,20);
  7.                 FRAMEWIN_SetSkin(Win_Set.time,FRAMEWIN_SKIN_FLEX);
  8.                 FRAMEWIN_AddCloseButton(Win_Set.time, FRAMEWIN_BUTTON_RIGHT, 0);
  9.                 FRAMEWIN_AddMaxButton(Win_Set.time, FRAMEWIN_BUTTON_RIGHT, 1);
  10.                 FRAMEWIN_AddMinButton(Win_Set.time, FRAMEWIN_BUTTON_RIGHT, 2);

  11.                 Win_Set.hBkWheel= WM_CreateWindowAsChild(0,20,240,280,Win_Set.time, WM_CF_SHOW, _cbBkWheel, 0);
  12.                
  13.                 hText = TEXT_CreateEx(5,30,240,40,Win_Set.hBkWheel,WM_CF_SHOW,GUI_TA_LEFT,GUI_ID_TEXT3,"12:20:30");
  14.                 TEXT_SetFont(hText,GUI_FONT_32B_ASCII);
  15.                 TEXT_SetTextColor(hText,GUI_WHITE);
  16.                 hText = TEXT_CreateEx(130,20,240,40,Win_Set.hBkWheel,WM_CF_SHOW,GUI_TA_LEFT,GUI_ID_TEXT4,"monday");
  17.                 TEXT_SetFont(hText,GUI_FONT_20B_ASCII);
  18.                 TEXT_SetTextColor(hText,GUI_WHITE);
  19.         
  20.                 hText = TEXT_CreateEx(130,60,240,40,Win_Set.hBkWheel,WM_CF_SHOW,GUI_TA_LEFT,GUI_ID_TEXT5,"2014.1.1");
  21.                 TEXT_SetFont(hText,GUI_FONT_24B_ASCII);
  22.                 TEXT_SetTextColor(hText,GUI_WHITE);
  23.         
  24.                 hText = TEXT_CreateEx(0,100,240,40,Win_Set.hBkWheel,WM_CF_SHOW,GUI_TA_LEFT,GUI_ID_TEXT8," Time Setting:");
  25.                 TEXT_SetFont(hText,&GUI_Font20B_ASCII);
  26.                 TEXT_SetTextColor(hText,GUI_RED);
  27.                 TEXT_SetBkColor(hText,GUI_WHITE);
  28.                
  29.                
  30.         
  31.                 hText = TEXT_CreateEx(0,120,240,20,Win_Set.hBkWheel,WM_CF_SHOW,GUI_TA_LEFT,GUI_ID_TEXT9,"  Year    Month  Day   Hour  Min  Sec");
  32.                 TEXT_SetFont(hText,&GUI_Font16B_ASCII);
  33.                 TEXT_SetTextColor(hText,GUI_BLUE);
  34.                 TEXT_SetBkColor(hText,GUI_WHITE);
  35.         
  36.                 hButton = BUTTON_CreateEx(190,100,40,20,Win_Set.hBkWheel,WM_CF_SHOW,0,GUI_ID_OK);
  37.                 BUTTON_SetText(hButton,"OK");
  38.                 BUTTON_SetSkin(hButton, BUTTON_SKIN_FLEX);
  39.                
  40.                 Wheel_Create(0, 141, 45, 130,GUI_ID_LISTWHEEL0,aYear);
  41.                 Wheel_Create(46, 141, 47, 130,GUI_ID_LISTWHEEL1,aMon);
  42.                 Wheel_Create(94, 141, 35, 130,GUI_ID_LISTWHEEL2,aDay);
  43.                 Wheel_Create(130, 141, 35, 130,GUI_ID_LISTWHEEL3,aHour);
  44.                 Wheel_Create(166, 141, 35, 130,GUI_ID_LISTWHEEL4,aNum);
  45.                 Wheel_Create(202,141,37,130,GUI_ID_LISTWHEEL5,aNum);
  46. }
复制代码
DSC_0388.JPG
收藏 评论7 发布时间:2015-1-7 12:42

举报

7个回答
颩色四葉愺 最优答案 回答时间:2015-1-7 18:05:28
  1. static void _cbBkWheel(WM_MESSAGE * pMsg)
  2. {
  3.                 int xSize, ySize;
  4.                 int        Id;
  5.                 int        NCode;
  6.                 WM_HWIN hText;
  7.                 char text_buffer[30];
  8.                 struct tm SrcTm;
  9.                 WM_HWIN hListWheel;
  10.                 switch (pMsg->MsgId)
  11.                 {
  12.                                 case WM_NOTIFY_PARENT:
  13.                                                         Id    = WM_GetId(pMsg->hWinSrc);      // 控件的ID
  14.                                                         NCode = pMsg->Data.v;
  15.                                                         
  16.                                                         switch(NCode)
  17.                                                         {
  18.                                                                 case WM_NOTIFICATION_SEL_CHANGED:
  19.                                                                                         LISTWHEEL_SetSel(pMsg->hWinSrc,LISTWHEEL_GetPos(pMsg->hWinSrc));
  20.                                                                         break;
  21.                                                                 case WM_NOTIFICATION_RELEASED:
  22.                                                                                         if(Id == GUI_ID_OK)
  23.                                                                                         {
  24.                                                                                                         /* 年 */
  25.                                                                                                         hListWheel                 = WM_GetDialogItem(pMsg->hWin, GUI_ID_LISTWHEEL0);
  26.                                                                                                         SrcTm.tm_year = LISTWHEEL_GetSel(hListWheel);
  27.                                                                                                         SrcTm.tm_year += 2000;
  28.                                                                                                         
  29.                                                                                                         /* 月 */
  30.                                                                                                         hListWheel                 = WM_GetDialogItem(pMsg->hWin, GUI_ID_LISTWHEEL1);
  31.                                                                                                         SrcTm.tm_mon         = LISTWHEEL_GetSel(hListWheel);
  32.                                                                                                         
  33.                                                                                                         /* 日 */
  34.                                                                                                         hListWheel                 = WM_GetDialogItem(pMsg->hWin, GUI_ID_LISTWHEEL2);
  35.                                                                                                         SrcTm.tm_mday = LISTWHEEL_GetSel(hListWheel);
  36.                                                                                                         SrcTm.tm_mday += 1;
  37.                                                                                                         
  38.                                                                                                         /* 时 */
  39.                                                                                                         hListWheel                 = WM_GetDialogItem(pMsg->hWin, GUI_ID_LISTWHEEL3);
  40.                                                                                                         SrcTm.tm_hour = LISTWHEEL_GetSel(hListWheel);
  41.                                                                                                         
  42.                                                                                                         
  43.                                                                                                         /* 分 */
  44.                                                                                                         hListWheel                 = WM_GetDialogItem(pMsg->hWin, GUI_ID_LISTWHEEL4);
  45.                                                                                                         SrcTm.tm_min = LISTWHEEL_GetSel(hListWheel);
  46.                                                                                                         
  47.                                                                                                         /* 秒 */
  48.                                                                                                         hListWheel                 = WM_GetDialogItem(pMsg->hWin, GUI_ID_LISTWHEEL5);
  49.                                                                                                         SrcTm.tm_sec = LISTWHEEL_GetSel(hListWheel);
  50.                                                                                                 
  51.                                                                                        
  52.                                                                                                         //RTC_SetCalendarTime(SrcTm);
  53.                                                                                                         RTC_Config();
  54.                                                                                                         RTC_SetCalendarTime(SrcTm);
  55.                                                                                                         BKP_WriteBackupRegister(BKP_DR1, 0xA4A2);
  56.                                                                                         }        
  57.                                                                         break;
  58.                                                         }
  59.                                         break;
复制代码

颩色四葉愺 最优答案 回答时间:2015-1-7 18:06:29
  1. case MY_MESSAGE_RTC:
  2.                                                 //        BJ_TimeVar =RTC_GetCounter() + 8*60*60;
  3.                                                 //        to_tm(BJ_TimeVar, &systmtime);//RTC_GetCalendarTime()
  4.                                                         systmtime=RTC_GetCalendarTime();
  5.                                                         sprintf(text_buffer,"%02d:%02d:%02d",systmtime.tm_hour,systmtime.tm_min,systmtime.tm_sec);
  6.                                                         /* 获取text句柄 */
  7.                                                         hText = WM_GetDialogItem(pMsg->hWin, GUI_ID_TEXT3);
  8.                                                         /* 输出时间 */
  9.                                                         TEXT_SetText(hText,text_buffer);
  10.                                 
  11.                                                         sprintf(text_buffer,"%04d.%02d.%02d",systmtime.tm_year,systmtime.tm_mon+1,systmtime.tm_mday);
  12.                                                         
  13.                                                         /* 获取text句柄 */
  14.                                                         hText = WM_GetDialogItem(pMsg->hWin, GUI_ID_TEXT5);
  15.                                                         
  16.                                                         /* 输出时间 */
  17.                                                         TEXT_SetText(hText,text_buffer);
  18.                                 
  19.         
  20.                                                 hText = WM_GetDialogItem(pMsg->hWin, GUI_ID_TEXT4);
  21.                
  22.                                                 /* 输出星期 */
  23.                                                 
  24.                                                 
  25.                                                 switch(systmtime.tm_wday)
  26.                                                 {
  27.                                                 
  28.                                                         case 1:
  29.                                                                 TEXT_SetText(hText,"Monday");
  30.                                                                         
  31.                                                                                                 
  32.                                                                 break;
  33.                                                         
  34.                                                                 case 2:
  35.                                                                 TEXT_SetText(hText,"Tuesday");        
  36.                                                                
  37.                                                                                                 
  38.                                                                 break;
  39.                                                                                                         
  40.                                                                 case 3:
  41.                                                                 TEXT_SetText(hText,"Wednesday");
  42.                                                                
  43.                                                                                                 
  44.                                                                 break;
  45.                                                                                                                                 
  46.                                                                 case 4:
  47.                                                                 TEXT_SetText(hText,"Thursday");        
  48.                                                                                                 
  49.                                                                 break;
  50.                                                                
  51.                                                                 case 5:
  52.                                                                 TEXT_SetText(hText,"Friday");
  53.                                                                                        
  54.                                                                 break;
  55.                                                                                                                                                         
  56.                                                                 case 6:
  57.                                                                 TEXT_SetText(hText,"Saturday");
  58.                                                                                                 
  59.                                                                 break;                        
  60.                                                                
  61.                                                                 case 7:
  62.                                                                 TEXT_SetText(hText,"Sunday");
  63.                                                                                        
  64.                                                                 break;
  65.                                                         
  66.                                                         default:
  67.                                                                 break;

  68.                                                         }
  69.                                         break;
  70.                                 case WM_PAINT:
  71.                                                 xSize = WM_GetWindowSizeX(pMsg->hWin);
  72.                                                 ySize = WM_GetWindowSizeY(pMsg->hWin);               

  73.                                                 GUI_DrawGradientV(0, 0, xSize - 1, ySize - 1, 0xfffff56c, 0xffffffe8);
  74.                                                 GUI_DrawGradientV(0,0,240,280,0xffff0d23,0xfffff56c);
  75.                                         break;
  76.                         /*        case WM_DELETE:
  77.                                                 WM_DeleteWindow(Win_Set.hBkWheel);
  78.                                                 break;*/
  79.                                 default:
  80.                                                 WM_DefaultProc(pMsg);
  81.                 }
  82. }
复制代码


沐紫 回答时间:2015-1-7 13:30:00
楼主,这些一个主题的帖子请放在一个主题帖子中即可。否则只有代码,将被算作水贴清理,请尽快修改下
颩色四葉愺 回答时间:2015-1-7 17:07:48
沐紫 发表于 2015-1-7 13:30
楼主,这些一个主题的帖子请放在一个主题帖子中即可。否则只有代码,将被算作水贴清理,请尽快修改下 ...

额   代码太多  怎么放到一个帖子啊    字数限制啊
沐紫 回答时间:2015-1-7 17:27:32
颩色四葉愺 发表于 2015-1-7 17:07
额   代码太多  怎么放到一个帖子啊    字数限制啊

跟帖回复即可
颩色四葉愺 回答时间:2015-1-7 17:40:46
哦哦  懂
颩色四葉愺 回答时间:2015-1-7 17:42:49
请问怎么删帖子?

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版