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

📄 housecontrol.c

📁 uc/os下的gui,友好的交互界面可以使你的产品更有吸引力
💻 C
📖 第 1 页 / 共 4 页
字号:
    if (strcmp(pStr, "JALOUSIE") == 0) {      if (v1) {        _Jalousie1.NewV = _Clip(v2);      } else {        _Jalousie2.NewV = _Clip(v2);      }      return;    }    if (strcmp(pStr, "MARQUEE") == 0) {      if (v1) {        _Marquee1.NewV = _Clip(v2);      } else {        _Marquee2.NewV = _Clip(v2);      }      return;    }    if (strcmp(pStr, "GARAGE") == 0) {      _Garage.NewV = _Clip(v1);      return;    }    if (strcmp(pStr, "LOGO") == 0) {      switch (v1) {      case 0:        _LogoRPM  = 0;        _LogoMulX = 1000;        _InvalidateObject(_hWinHouse, _Logo.Rect);        _InvalidateObject2(_hWinMap, _LogoSmall.Rect);        break;      case 1:        _LogoRPM = -RPM;        break;      case 2:        _LogoRPM =  RPM;      }      _InvalidateObject(_hWinHouse, _LogoArrow.Rect);      return;    }    if (strcmp(pStr, "LIFT") == 0) {      _ElevatorMove(v1);      return;    }    if (strcmp(pStr, "LIFT_OPEN") == 0) {      _ElevatorOpenDoor();      return;    }    if (strcmp(pStr, "LIFT_STOP") == 0) {      _ElevatorPause();      return;    }    if (strcmp(pStr, "SHOW") == 0) {      if (v1 >= 0 && v1 <= 5) {        _Scroll.NewV = 650 - v1 * 130;        _ScrollPrevTime = GUI_GetTime();      }      return;    }    if (strcmp(pStr, "BURGLARY") == 0) {      if (v1 & 0x1) {        _AlertOn(0);      }      if (v1 & 0x2) {        _AlertOn(1);      }      return;    }  }}/***********************************************************************       static code, window callbacks************************************************************************//***********************************************************************       _cbBkWindow*/static void _cbBkWindow(WM_MESSAGE* pMsg) {  switch (pMsg->MsgId) {  case WM_PAINT:    GUI_SetBkColor(GUI_BLACK);    GUI_Clear();    break;  default:    WM_DefaultProc(pMsg);  }}/***********************************************************************       _cbWinControl*/static void _cbWinControl(WM_MESSAGE* pMsg) {  switch (pMsg->MsgId) {  case WM_TOUCH:    WM_BringToTop(WM_GetParent(pMsg->hWin));    break;  case WM_PAINT:    GUI_SetBkColor(GUI_GRAY);    GUI_Clear();    break;  default:    WM_DefaultProc(pMsg);  }}/***********************************************************************       _cbWinHouse*/static void _cbWinHouse(WM_MESSAGE* pMsg) {  WM_SCROLL_STATE ScrollState;  switch (pMsg->MsgId) {  case WM_NOTIFY_PARENT:    if (pMsg->Data.v == WM_NOTIFICATION_VALUE_CHANGED) {      if (WM_GetId(pMsg->hWinSrc) == GUI_ID_VSCROLL) {        WM_GetScrollState(pMsg->hWinSrc, &ScrollState);        if (ScrollState.v != _Scroll.ActV) {          _Scroll.NewV = ScrollState.v;          _Scroll.ActV = _Scroll.NewV;          _InvalidateObject(_hWinHouse, _Scroll.Rect);          WM_BringToTop(WM_GetParent(pMsg->hWin));        }      }    }    break;  case WM_TOUCH:    WM_BringToTop(WM_GetParent(pMsg->hWin));    break;  case WM_PAINT:    GUI_SetBkColor(GUI_BLACK);    GUI_ClearRect(0, 0, 34, 129);    GUI_ClearRect(165, 0, 199, 129);    if (_Scroll.ActV < 130) {      _DrawLevel(5,   0 - _Scroll.ActV);    }    if (_Scroll.ActV != 0 && _Scroll.ActV < 260) {      _DrawLevel(4, 130 - _Scroll.ActV);    }    if (_Scroll.ActV > 130 && _Scroll.ActV < 390) {      _DrawLevel(3, 260 - _Scroll.ActV);    }    if (_Scroll.ActV > 260 && _Scroll.ActV < 520) {      _DrawLevel(2, 390 - _Scroll.ActV);    }    if (_Scroll.ActV > 390 && _Scroll.ActV < 650) {      _DrawLevel(1, 520 - _Scroll.ActV);    }    if (_Scroll.ActV > 520) {      _DrawLevel(0, 650 - _Scroll.ActV);    }    break;  default:    WM_DefaultProc(pMsg);  }}/***********************************************************************       _cbWinMap*/static void _cbWinMap(WM_MESSAGE* pMsg) {  GUI_PID_STATE TouchState;  switch (pMsg->MsgId) {  case WM_TOUCH:    GUI_TOUCH_GetState(&TouchState);    if (TouchState.Pressed) {      int x = TouchState.x - WM_GetWindowOrgX(pMsg->hWin);      int y = TouchState.y - WM_GetWindowOrgY(pMsg->hWin);      if (x >= 0 && x <= 50 && y >= 0 && y <= 233) {        _Scroll.NewV = 650 - 130 * (5 - (y / 39));        _ScrollPrevTime = GUI_GetTime();      }    }    break;  case WM_PAINT:    GUI_SetBkColor(GUI_BLACK);    GUI_Clear();    _DrawHouseMap(0, 0);    break;  default:    WM_DefaultProc(pMsg);  }}/***********************************************************************       _cbWinAlert*/static void _cbWinAlert(WM_MESSAGE* pMsg) {  WM_HWIN hParent;  int Index;  hParent = WM_GetParent(pMsg->hWin);  for (Index = 0; Index < 2; Index++) {    if (hParent == _hAlert[Index]) break;  }  switch (pMsg->MsgId) {  case WM_PAINT:    GUI_SetBkColor(GUI_WHITE);    GUI_Clear();    break;  case WM_NOTIFY_PARENT:    if (pMsg->Data.v == WM_NOTIFICATION_RELEASED) {      _AlertOff(Index);    }  case WM_TOUCH:    WM_BringToTop(_hAlert[Index]);    break;  default:    WM_DefaultProc(pMsg);  }}/***********************************************************************       static code, dialog callbacks************************************************************************//***********************************************************************       _cbDialogLight*/static void _cbDialogLight(WM_MESSAGE* pMsg) {  switch (pMsg->MsgId) {  case WM_INIT_DIALOG:    _hDialogLight = pMsg->hWin;    _SetDialogLight();    break;  case WM_NOTIFY_PARENT:    if (_InitDialog) break;    if (pMsg->Data.v == WM_NOTIFICATION_VALUE_CHANGED) {      int Id = WM_GetId(pMsg->hWinSrc);      if (Id >= GUI_ID_SLIDER0 && Id <= GUI_ID_SLIDER4) {        int i = Id - GUI_ID_SLIDER0;        _Level[i].Light.ActV = _GetSliderValue(pMsg->hWin, Id);        _InvalidateObject(_hWinHouse, _Level[i].Light.Rect);        _InvalidateObject2(_hWinMap, _LightSmall[i].Rect);        _SerialSendCommand("LIGHT", i, _Level[i].Light.ActV);      }    }  case WM_TOUCH:    WM_BringToTop(WM_GetParent(_hWinControl));    break;  default:    WM_DefaultProc(pMsg);  }}/***********************************************************************       _cbDialogMisc*/static void _cbDialogMisc(WM_MESSAGE* pMsg) {  switch (pMsg->MsgId) {  case WM_NOTIFY_PARENT:    if (_InitDialog) break;    if (pMsg->Data.v == WM_NOTIFICATION_CLICKED) {      int Id = WM_GetId(pMsg->hWinSrc);      if (Id >= GUI_ID_BUTTON0 && Id <= GUI_ID_BUTTON7) {        switch (Id) {        case GUI_ID_BUTTON0:          _Jalousie2.NewV = 100 - _Jalousie2.NewV;          _SerialSendCommand("JALOUSIE", 0, _Jalousie2.NewV);          break;        case GUI_ID_BUTTON1:          _Jalousie1.NewV = 100 - _Jalousie1.NewV;          _SerialSendCommand("JALOUSIE", 1, _Jalousie1.NewV);          break;        case GUI_ID_BUTTON2:          _Marquee2.NewV = 100 - _Marquee2.NewV;          _SerialSendCommand("MARQUEE", 0, _Marquee2.NewV);          break;        case GUI_ID_BUTTON3:          _Marquee1.NewV = 100 - _Marquee1.NewV;          _SerialSendCommand("MARQUEE", 1, _Marquee1.NewV);          break;        case GUI_ID_BUTTON4:          _Garage.NewV = 100 - _Garage.NewV;          _SerialSendCommand("GARAGE", _Garage.NewV, -1);          break;        case GUI_ID_BUTTON5:          _LogoRPM = -RPM;          _InvalidateObject(_hWinHouse, _LogoArrow.Rect);          _SerialSendCommand("LOGO", 1, -1);          break;        case GUI_ID_BUTTON6:          _LogoRPM  = 0;          _LogoMulX = 1000;          _InvalidateObject(_hWinHouse, _LogoArrow.Rect);          _InvalidateObject(_hWinHouse, _Logo.Rect);          _InvalidateObject2(_hWinMap, _LogoSmall.Rect);          _SerialSendCommand("LOGO", 0, -1);          break;        case GUI_ID_BUTTON7:          _LogoRPM = RPM;          _InvalidateObject(_hWinHouse, _LogoArrow.Rect);          _SerialSendCommand("LOGO", 2, -1);          break;        }      }    }  case WM_TOUCH:    WM_BringToTop(WM_GetParent(_hWinControl));    break;  default:    WM_DefaultProc(pMsg);  }}/***********************************************************************       _cbDialogElev*/static void _cbDialogElev(WM_MESSAGE* pMsg) {  int i;  switch (pMsg->MsgId) {  case WM_INIT_DIALOG:    _Elevator.Handle = pMsg->hWin;     break;  case WM_NOTIFY_PARENT:    if (_InitDialog) break;    if (pMsg->Data.v == WM_NOTIFICATION_CLICKED) {      int Id = WM_GetId(pMsg->hWinSrc);      if (Id >= GUI_ID_BUTTON0 && Id <= GUI_ID_BUTTON4) {        _ElevatorMove(Id - GUI_ID_BUTTON0);                } else {        if (Id == GUI_ID_BUTTON5) {          if (!_Elevator.Move) {            if (_Elevator.Itself.ActV == _Elevator.Itself.NewV) {              _ElevatorOpenDoor();            }          }        }        if (Id == GUI_ID_BUTTON6) {          if (_Elevator.Pause) {            BUTTON_SetText(pMsg->hWinSrc, "Pause");          } else {            BUTTON_SetText(pMsg->hWinSrc, "Resume");          }          _ElevatorPause();        }      }    }  case WM_TOUCH:    WM_BringToTop(WM_GetParent(_hWinControl));    break;  case WM_PAINT:    GUI_SetBkColor(GUI_BLACK);    GUI_ClearRect(0, 0, 35, 15);          GUI_SetColor(GUI_GRAY);    GUI_FillRect(0, 16, 35, 114);    GUI_SetColor(GUI_WHITE);    GUI_DrawRect(0, 0, 35, 114);    GUI_DrawHLine(16, 0, 35);    GUI_SetColor(GUI_RED);    GUI_SetFont(&GUI_Font8x10_ASCII);    GUI_DispCharAt(_Elevator.Level + '1', 9, 4);    if (_Elevator.Move) {      GUI_FillPolygon((_Elevator.Move < 0) ? _aArrowDown : _aArrowUp, 8, 22, 4);    }    GUI_SetBkColor(GUI_GRAY);    GUI_SetFont(&GUI_Font6x8);    for (i = 0; i < 5; i++) {      GUI_SetColor((_Level[i].Elevator) ? GUI_RED : GUI_BLACK);      GUI_DispCharAt(i + '1', 6, 97 - (i * 18));    }    break;  default:    WM_DefaultProc(pMsg);  }}/***********************************************************************       static code************************************************************************//***********************************************************************       _NEC_Demo*/static void _NEC_Demo(void) {  MULTIPAGE_Handle hMultiPage;  FRAMEWIN_Handle hFrame;  /* Use memory devices for all windows */  WM_SetCreateFlags(WM_CF_MEMDEV);  WM_EnableMemdev(WM_HBKWIN);  /* Set the callback for the background window */  WM_SetCallback(WM_HBKWIN, &_cbBkWindow);  /* Create a framewin for the house */  FRAMEWIN_SetDefaultCaptionSize(14);  FRAMEWIN_SetDefaultFont(&GUI_Font10_1);  hFrame = FRAMEWIN_Create("NEC - House", 0, WM_CF_SHOW, 100, 28, 217, 151);  FRAMEWIN_SetMoveable(hFrame, 1);  FRAMEWIN_SetActive(hFrame, 1);  FRAMEWIN_CreateMinButton(hFrame, FRAMEWIN_BUTTON_RIGHT, 0);  /* Get the client window and add a scrollbar */  _hWinHouse = WM_GetClientWindow(hFrame);  WM_SetCallback(_hWinHouse, &_cbWinHouse);  _hScroll = SCROLLBAR_CreateAttached(_hWinHouse, SCROLLBAR_CF_VERTICAL);  SCROLLBAR_SetNumItems(_hScroll, 780);  SCROLLBAR_SetPageSize(_hScroll, 130);  SCROLLBAR_SetValue(_hScroll, 650);  FRAMEWIN_Minimize(hFrame);  /* Create a framewin for the controls */  _hWinControl = FRAMEWIN_Create("Control", 0, WM_CF_SHOW, 100, 5, 130, 181);  FRAMEWIN_SetMoveable(_hWinControl, 1);  FRAMEWIN_SetActive(_hWinControl, 1);  FRAMEWIN_CreateMinButton(_hWinControl, FRAMEWIN_BUTTON_RIGHT, 0);  FRAMEWIN_Minimize(_hWinControl);  /* Get the client window and add controls */  _hWinControl = WM_GetClientWindow(_hWinControl);  WM_SetCallback(_hWinControl, &_cbWinControl);  hMultiPage = MULTIPAGE_Create(3, 4, 117, 153, _hWinControl, 0, WM_CF_SHOW, 0);  _hDialogLight  = _AddDialog("Light", ARRAY(_aDialogLight), &_cbDialogLight, hMultiPage);  _AddDialog("Misc",  ARRAY(_aDialogMisc),  &_cbDialogMisc,  hMultiPage);  _AddDialog("Elev.", ARRAY(_aDialogElev),  &_cbDialogElev,  hMultiPage);  MULTIPAGE_SelectPage(hMultiPage, 0);  /* Create a window for the house map */  _hWinMap = WM_CreateWindow(0, 3, 57, 235, WM_CF_SHOW, &_cbWinMap, 0);  /* Init some values */  _Elevator.Itself.ActV = 650;  _Elevator.Itself.NewV = 650;  /* Init the serial interface */  _SerialInit(&_cbReceiveCommand);  /* Show the touch cursor */  GUI_CURSOR_Select(&_TouchCursor);  GUI_CURSOR_Show();  /* Handle the windows */  _ExecuteCommands = 1;  while (1) {    _SlideStatus();    _ElevatorExec();    if (_DrawRotateLogo()) {      _InvalidateObject(_hWinHouse, _Logo.Rect);      _InvalidateObject2(_hWinMap, _LogoSmall.Rect);    }    _SerialExec();    WM_Exec();  }}/***********************************************************************       MainTask************************************************************************/void MainTask(void) {  GUI_Init();  _NEC_Demo();}

⌨️ 快捷键说明

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