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

📄 bttest.inc

📁 乐高机器人的源码,开发平台是IAR_for_AVR.
💻 INC
📖 第 1 页 / 共 4 页
字号:
          pMapDisplay->pTextLines[TEXTLINE_8] = (UBYTE*)TXT_TIMER;
          pMapDisplay->EraseMask             |= TEXTLINE_BITS;
          pMapDisplay->UpdateMask            |= TEXTLINE_BITS;
          State = TIMER_INIT;
        }
        break;

        case BUTTON_RIGHT :
        {
          IOMapUi.Flags                      &= ~UI_ENABLE_STATUS_UPDATE;
          pMapDisplay->EraseMask             |=  SCREEN_BIT(SCREEN_BACKGROUND);
          pMapDisplay->pTextLines[TEXTLINE_1] = (UBYTE*)TXT_EMPTY;
          pMapDisplay->pTextLines[TEXTLINE_2] = (UBYTE*)TXT_EMPTY;
          pMapDisplay->pTextLines[TEXTLINE_3] = (UBYTE*)TXT_EMPTY;
          pMapDisplay->pTextLines[TEXTLINE_4] = (UBYTE*)TXT_EMPTY;
          pMapDisplay->pTextLines[TEXTLINE_5] = (UBYTE*)TXT_EMPTY;
          pMapDisplay->pTextLines[TEXTLINE_6] = (UBYTE*)TXT_EMPTY;
          pMapDisplay->pTextLines[TEXTLINE_7] = (UBYTE*)TXT_EMPTY;
          pMapDisplay->pTextLines[TEXTLINE_8] = (UBYTE*)TXT_BT_PAGE;
          if (DISPLAYLINE_LENGTH >= 16)
          {
            sprintf((char*)TxtBuffer[2],"Command       %02X",(UWORD)VarsUi.BTCommand & 0xFF);
            sprintf((char*)TxtBuffer[3],"Parameter 1   %02X",(UWORD)VarsUi.BTPar1 & 0xFF);
            sprintf((char*)TxtBuffer[4],"Parameter 2   %02X",(UWORD)VarsUi.BTPar2 & 0xFF);
            sprintf((char*)TxtBuffer[5],"Result      %04X",(UWORD)VarsUi.BTResult);
            pMapDisplay->pTextLines[TEXTLINE_1] = (UBYTE*)TXT_LAST;
            pMapDisplay->pTextLines[TEXTLINE_2] = (UBYTE*)TXT_LINE;
            pMapDisplay->pTextLines[TEXTLINE_3] = TxtBuffer[2];
            pMapDisplay->pTextLines[TEXTLINE_4] = TxtBuffer[3];
            pMapDisplay->pTextLines[TEXTLINE_5] = TxtBuffer[4];
            pMapDisplay->pTextLines[TEXTLINE_6] = TxtBuffer[5];
          }
          pMapDisplay->EraseMask             |= TEXTLINE_BITS;
          pMapDisplay->UpdateMask            |= TEXTLINE_BITS;
          State = BT_PAGE;
        }
        break;

      }
    }
    break;
    
    case TIMER_INIT :
    {
      State = TIMER_SHOW;
    }
    break;
    
    case TIMER_SHOW :
    {
      sprintf((char*)TxtBuffer[2]," %10lu mS  ",VarsUi.CRPasskey);
      pMapDisplay->pTextLines[TEXTLINE_3] = TxtBuffer[2];
      pMapDisplay->UpdateMask            |= TEXTLINE_BIT(TEXTLINE_3);
      
      switch (cUiReadButtons())
      {
        case BUTTON_ENTER :
        {
          pMapDisplay->pTextLines[TEXTLINE_8] = (UBYTE*)TXT_TIMER_HOLD;
          pMapDisplay->UpdateMask            |= TEXTLINE_BIT(TEXTLINE_8);
          State = TIMER_HOLD;
        }
        break;
        
        case BUTTON_LEFT :
        {
          pMapDisplay->EraseMask             |= TEXTLINE_BIT(TEXTLINE_3);
          VarsUi.CRPasskey = 0L;
        }
        break;

        case BUTTON_EXIT :
        {
          State = TSTPRG_SKIP;
        }
        break;

      }
    }
    break;
    
    case TIMER_HOLD :
    {
      switch (cUiReadButtons())
      {
        case BUTTON_ENTER :
        {
          pMapDisplay->pTextLines[TEXTLINE_8] = (UBYTE*)TXT_TIMER;
          pMapDisplay->UpdateMask            |= TEXTLINE_BIT(TEXTLINE_8);
          State = TIMER_SHOW;
        }
        break;

        case BUTTON_EXIT :
        {
          State = TSTPRG_SKIP;
        }
        break;

      }
    }
    break;

    case BT_PAGE :
    {
      switch (cUiReadButtons())
      {
        case BUTTON_ENTER :
        {
          for (Count = 0;Count < TEXTLINES;Count++)
          {
            strcpy((char*)TxtBuffer[Count],(char*)TXT_EMPTY);
            pMapDisplay->pTextLines[TEXTLINE_1 + Count] = TxtBuffer[Count];
          }
          pMapDisplay->pTextLines[TEXTLINE_2] = (UBYTE*)TXT_LINE;
          pMapDisplay->pTextLines[TEXTLINE_8] = (UBYTE*)TXT_BT_LIST;
          pMapDisplay->EraseMask             |= TEXTLINE_BITS;
          pMapDisplay->UpdateMask            |= TEXTLINE_BITS;
          Pointer = 0;
          State   = BT_LIST_INIT;
        }
        break;

        case BUTTON_EXIT :
        {
          Count = 0;
          State = TSTPRG_SKIP;
        }
        break;

        case BUTTON_LEFT :
        {
          State = BT_RESET;
        }
        break;

        case BUTTON_RIGHT :
        {
          pMapDisplay->pTextLines[TEXTLINE_1] = (UBYTE*)TXT_BTUPDATE;
          pMapDisplay->pTextLines[TEXTLINE_2] = (UBYTE*)TXT_LINE;
          pMapDisplay->pTextLines[TEXTLINE_3] = (UBYTE*)TXT_EMPTY;
          pMapDisplay->pTextLines[TEXTLINE_4] = (UBYTE*)TXT_DONE;
          pMapDisplay->pTextLines[TEXTLINE_5] = (UBYTE*)TXT_RESET;
          pMapDisplay->pTextLines[TEXTLINE_6] = (UBYTE*)TXT_REBOOT;
          pMapDisplay->pTextLines[TEXTLINE_7] = (UBYTE*)TXT_EMPTY;
          pMapDisplay->pTextLines[TEXTLINE_8] = (UBYTE*)TXT_EMPTY;
          pMapDisplay->EraseMask             |= TEXTLINE_BITS;
          pMapDisplay->UpdateMask            |= TEXTLINE_BITS;
          Timer = 0;
          State = BT_UPDATE_FW;
        }
        break;

      }
    }
    break;
    
    case BT_RESET :
    {
      VarsUi.BTCommand  = (UBYTE)FACTORYRESET;
      VarsUi.BTPar1     = (UBYTE)0;
      VarsUi.BTPar2     = (UBYTE)0;
      if (pMapComm->pFunc(VarsUi.BTCommand,VarsUi.BTPar1,VarsUi.BTPar2,0,NULL,&(VarsUi.BTResult)) == SUCCESS)
      {
        pMapDisplay->pTextLines[TEXTLINE_1] = (UBYTE*)TXT_EMPTY;
        pMapDisplay->pTextLines[TEXTLINE_2] = (UBYTE*)TXT_EMPTY;
        pMapDisplay->pTextLines[TEXTLINE_3] = (UBYTE*)TXT_EMPTY;
        pMapDisplay->pTextLines[TEXTLINE_4] = (UBYTE*)TXT_RESETTING;
        pMapDisplay->pTextLines[TEXTLINE_5] = (UBYTE*)TXT_EMPTY;
        pMapDisplay->pTextLines[TEXTLINE_6] = (UBYTE*)TXT_EMPTY;
        pMapDisplay->pTextLines[TEXTLINE_7] = (UBYTE*)TXT_EMPTY;
        pMapDisplay->pTextLines[TEXTLINE_8] = (UBYTE*)TXT_EMPTY;
        pMapDisplay->EraseMask             |= TEXTLINE_BITS;
        pMapDisplay->UpdateMask            |= TEXTLINE_BITS;
        State = BT_RESETTING;
      }
      else
      {
        State = TSTPRG_SKIP;
      }
    }
    break;
    
    case BT_RESETTING :
    {
      if (VarsUi.BTResult != INPROGRESS)
      {
        State = TSTPRG_SKIP;
      }
    }
    break;
    
    case BT_UPDATE_FW :
    {
      if (++Timer >= 100)
      {
        BtIo();
      }
    }
    break;
    
    case BT_LIST_INIT :
    {
      sprintf((char*)TxtBuffer[0],"DeviceTable No%2u",Pointer);
      sprintf((char*)TxtBuffer[2],"%-*.*s",DISPLAYLINE_LENGTH,DISPLAYLINE_LENGTH,(char*)pMapComm->BtDeviceTable[Pointer].Name);
      Count = (UWORD)sprintf((char*)TxtBuffer[3],"COD=");
      for (Tmp = 0;(Tmp < SIZE_OF_CLASS_OF_DEVICE) && (Count < (DISPLAYLINE_LENGTH - 2));Tmp++)
      {
        Count += (UWORD)sprintf((char*)&TxtBuffer[3][Count],"%02X",(UWORD)(pMapComm->BtDeviceTable[Pointer].ClassOfDevice[Tmp]) & 0xFF);
      }
      Count = (UWORD)sprintf((char*)TxtBuffer[4],"A=");
      for (Tmp = 0;(Tmp < SIZE_OF_BDADDR) && (Count <= (DISPLAYLINE_LENGTH - 2));Tmp++)
      {
        Count += (UWORD)sprintf((char*)&TxtBuffer[4][Count],"%02X",(UWORD)(pMapComm->BtDeviceTable[Pointer].BdAddr[Tmp]) & 0xFF);
      }
      sprintf((char*)TxtBuffer[5],"Status=%02X",(UWORD)(pMapComm->BtDeviceTable[Pointer].DeviceStatus) & 0xFF);
      pMapDisplay->EraseMask             |= TEXTLINE_BITS;
      pMapDisplay->UpdateMask            |= TEXTLINE_BITS;
      State = BT_LIST;
    }
    break;
    
    case BT_LIST :
    {
      switch (cUiReadButtons())
      {
        case BUTTON_ENTER :
        {
          for (Count = 0;Count < TEXTLINES;Count++)
          {
            strcpy((char*)TxtBuffer[Count],(char*)TXT_EMPTY);
            pMapDisplay->pTextLines[TEXTLINE_1 + Count] = TxtBuffer[Count];
          }
          pMapDisplay->pTextLines[TEXTLINE_2] = (UBYTE*)TXT_LINE;
          pMapDisplay->pTextLines[TEXTLINE_8] = (UBYTE*)TXT_BT_CONN;
          pMapDisplay->EraseMask             |= TEXTLINE_BITS;
          pMapDisplay->UpdateMask            |= TEXTLINE_BITS;
          Pointer = 0;
          State   = BT_CONN_INIT;
        }
        break;

        case BUTTON_EXIT :
        {
          State = SYSTEM_INIT;
        }
        break;

        case BUTTON_LEFT :
        {
          if (Pointer)
          {
            Pointer--;
          }
          else
          {
            Pointer = (SIZE_OF_BT_DEVICE_TABLE - 1);
          }
          State = BT_LIST_INIT;
        }
        break;

        case BUTTON_RIGHT :
        {
          if (Pointer < (SIZE_OF_BT_DEVICE_TABLE - 1))
          {
            Pointer++;
          }
          else
          {
            Pointer = 0;
          }
          State = BT_LIST_INIT;
        }
        break;

      }
    }
    break;
  
    case BT_CONN_INIT :
    {
      sprintf((char*)TxtBuffer[0],"Conn. Table No%2u",Pointer);
      sprintf((char*)TxtBuffer[2],"%-*.*s",DISPLAYLINE_LENGTH,DISPLAYLINE_LENGTH,(char*)pMapComm->BtConnectTable[Pointer].Name);
      Count = (UWORD)sprintf((char*)TxtBuffer[3],"COD=");
      for (Tmp = 0;(Tmp < SIZE_OF_CLASS_OF_DEVICE) && (Count < (DISPLAYLINE_LENGTH - 2));Tmp++)
      {
        Count += (UWORD)sprintf((char*)&TxtBuffer[3][Count],"%02X",(UWORD)(pMapComm->BtConnectTable[Pointer].ClassOfDevice[Tmp]) & 0xFF);
      }
      Count = (UWORD)sprintf((char*)TxtBuffer[4],"A=");
      for (Tmp = 0;(Tmp < SIZE_OF_BDADDR) && (Count <= (DISPLAYLINE_LENGTH - 2));Tmp++)
      {
        Count += (UWORD)sprintf((char*)&TxtBuffer[4][Count],"%02X",(UWORD)(pMapComm->BtConnectTable[Pointer].BdAddr[Tmp]) & 0xFF);
      }
      sprintf((char*)TxtBuffer[5],"%-*.*s",DISPLAYLINE_LENGTH,DISPLAYLINE_LENGTH,(char*)pMapComm->BtConnectTable[Pointer].PinCode);
      if (DISPLAYLINE_LENGTH >= 16)
      {
        sprintf((char*)TxtBuffer[6],"H=%02X  S=%02X  Q=%02X",(UWORD)(pMapComm->BtConnectTable[Pointer].HandleNr) & 0xFF,(UWORD)(pMapComm->BtConnectTable[Pointer].StreamStatus) & 0xFF,(UWORD)(pMapComm->BtConnectTable[Pointer].LinkQuality) & 0xFF);
      }
      pMapDisplay->EraseMask             |= TEXTLINE_BITS;
      pMapDisplay->UpdateMask            |= TEXTLINE_BITS;
      State = BT_CONN;
    }
    break;
    
    case BT_CONN :
    {
      switch (cUiReadButtons())
      {
        case BUTTON_ENTER :
        {
          State = BT_CONN_INIT;
        }
        break;

        case BUTTON_EXIT :
        {
          State = SYSTEM_INIT;
        }
        break;

        case BUTTON_LEFT :
        {
          if (Pointer)
          {
            Pointer--;
          }
          else
          {
            Pointer = (SIZE_OF_BT_CONNECT_TABLE - 1);
          }
          State = BT_CONN_INIT;
        }
        break;

        case BUTTON_RIGHT :
        {
          if (Pointer < (SIZE_OF_BT_CONNECT_TABLE - 1))
          {
            Pointer++;
          }
          else
          {
            Pointer = 0;
          }
          State = BT_CONN_INIT;
        }
        break;

      }
    }
    break;
  
    case TSTPRG_INIT :
    {
      IOMapUi.Flags                      &= ~UI_ENABLE_STATUS_UPDATE;

      pMapDisplay->EraseMask             |=  SCREEN_BIT(SCREEN_BACKGROUND);

      pMapDisplay->pTextLines[TEXTLINE_1] = (UBYTE*)TXT_TESTPRG;
      pMapDisplay->pTextLines[TEXTLINE_2] = (UBYTE*)TXT_LINE;
      pMapDisplay->pTextLines[TEXTLINE_3] = (UBYTE*)TXT_EMPTY;
      pMapDisplay->pTextLines[TEXTLINE_4] = (UBYTE*)TXT_EMPTY;
      pMapDisplay->pTextLines[TEXTLINE_5] = (UBYTE*)TXT_SELECT;
      pMapDisplay->pTextLines[TEXTLINE_6] = (UBYTE*)TXT_EMPTY;
      pMapDisplay->pTextLines[TEXTLINE_7] = (UBYTE*)TXT_EMPTY;
      pMapDisplay->pTextLines[TEXTLINE_8] = (UBYTE*)TXT_SUBTEST;
      pMapDisplay->UpdateMask            |= TEXTLINE_BITS;

      State = TSTPRG_SELECT_SUBTEST;
    }
    break;

    case TSTPRG_SELECT_SUBTEST :
    {
      switch (cUiReadButtons())
      {
        case BUTTON_LEFT :
        {
          State = TSTPRG_SENSOR_INIT;
        }
        break;

        case BUTTON_RIGHT :
        {
          State = TSTPRG_MOTOR_INIT;
        }
        break;

        case BUTTON_ENTER :
        {
          State = TSTPRG_RCX_INIT;
        }
        break;

        case BUTTON_EXIT :
        {
          Count = 0;
          State = TSTPRG_SKIP;
        }
        break;

      }
    }
    break;

    case TSTPRG_SENSOR_INIT :
    {
      pMapDisplay->pTextLines[TEXTLINE_1] = (UBYTE*)TXT_TESTPRG;
      pMapDisplay->pTextLines[TEXTLINE_2] = (UBYTE*)TXT_LINE;
      pMapDisplay->pTextLines[TEXTLINE_3] = (UBYTE*)TXT_EMPTY;

⌨️ 快捷键说明

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