<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          嵌入式開發(fā)的一個(gè)騷操作!

          共 5266字,需瀏覽 11分鐘

           ·

          2024-04-19 02:28

             
              關(guān)注、星標(biāo)公眾號(hào),直達(dá)精彩內(nèi)容
          來源 | 網(wǎng)絡(luò)

          目錄

          • 1 映射表在串口數(shù)據(jù)解析中的應(yīng)用

            • 1.1 數(shù)據(jù)結(jié)構(gòu)

          • 1.2 指令、函數(shù)映射表

            • 1.3 串口解析函數(shù)實(shí)現(xiàn)

          • 2 映射表在UI設(shè)計(jì)中的應(yīng)用

            • 2.1 數(shù)據(jù)結(jié)構(gòu)

            • 2.2 函數(shù)映射表

            • 2.3 定義兩個(gè)變量保存當(dāng)前場(chǎng)景和上一個(gè)場(chǎng)景

            • 2.4 按下Up按鍵 跳轉(zhuǎn)到指定場(chǎng)景current_stage的值根據(jù)映射表改變

            • 2.5 場(chǎng)景改變后 根據(jù)映射表執(zhí)行相應(yīng)的函數(shù)Handler


          1 映射表在串口數(shù)據(jù)解析中的應(yīng)用

          1.1 數(shù)據(jù)結(jié)構(gòu)

          typedef struct 
          {
              char CMD[CMDLen];
              unsigned char (*cmd_operate)(char *data);
          }Usart_Tab;

          1.2 指令、函數(shù)映射表

          static const Usart_Tab InstructionList[CMDMax]=
          {
              {"PWON",PowOn},
              {"PWOFF",PowOff},
              {"HDCP",HdcpOnOff},
              {"/V",QueryKaVersion},
              {"EDIDUpgrade",UpdataEDID},
              {"Psave",Psave},
              {"Precall",Precall},
              {"Pclear",Pclear},
          };

          1.3 串口解析函數(shù)實(shí)現(xiàn)

          unsigned char DataAnalysis(char *buf)
          {
            unsigned char i,Result;
            char *NEXT=NULL;
            for(i=0;i<CMDMax;i++)
            {
              NEXT=StrCmp(buf,(char*)InstructionList[i].CMD);
              if(NEXT!=NULL)
              {
                usartfuncp=InstructionList[i].cmd_operate;
                Result=(*usartfuncp)(NEXT);
              }
            }
            return Result;
          }

          2 映射表在UI設(shè)計(jì)中的應(yīng)用

          2.1 數(shù)據(jù)結(jié)構(gòu)

          菜單枚舉:

          typedef enum
          {
            stage1=0,
            stage2,
            stage3,
            stage4,
            stage5,
            stage6,
            stage7,
            stage8,
            stage9,
          }SCENE;

          數(shù)據(jù)結(jié)構(gòu):

          typedef struct {
            void (*current_operate)(); //當(dāng)前場(chǎng)景的處理函數(shù)
            SCENE Index;               //當(dāng)前場(chǎng)景的標(biāo)簽
            SCENE Up;                  //按下Up鍵跳轉(zhuǎn)的場(chǎng)景
            SCENE Down;                //按下Down鍵跳轉(zhuǎn)的場(chǎng)景
            SCENE Right;               //按下Left鍵跳轉(zhuǎn)的場(chǎng)景
            SCENE Left;                //按下Right鍵跳轉(zhuǎn)的場(chǎng)景
          }STAGE_TAB;

          2.2 函數(shù)映射表

          STAGE_TAB stage_tab[]={
            #.    operate       Index    Up     Down    Left   Right   
            {Stage1_Handler,  stage1,  stage4,  stage7,  stage3, stage2},
            {Stage2_Handler,  stage2,  stage5,  stage8,  stage1, stage3},
            {Stage3_Handler,  stage3,  stage6,  stage9,  stage2, stage1},
            {Stage4_Handler,  stage4,  stage7,  stage1,  stage6, stage5},
            {Stage5_Handler,  stage5,  stage8,  stage2, stage4,  stage6},
            {Stage6_Handler,  stage6,  stage9,  stage3, stage5,  stage4},
            {Stage7_Handler,  stage7,  stage1,  stage4, stage9,  stage8},
            {Stage8_Handler,  stage8,  stage2,  stage5, stage7,  stage9},
            {Stage9_Handler,  stage9,  stage3,  stage6, stage8,  stage7},
          };

          2.3 定義兩個(gè)變量保存當(dāng)前場(chǎng)景和上一個(gè)場(chǎng)景

          char current_stage=stage1;
          char prev_stage=current_stage;

          2.4 按下Up按鍵 跳轉(zhuǎn)到指定場(chǎng)景current_stage的值根據(jù)映射表改變

          current_stage =stage_tab[current_stage].Up;

          2.5 場(chǎng)景改變后 根據(jù)映射表執(zhí)行相應(yīng)的函數(shù)Handler

          if(current_stage!=prev_stage)
          {
            stage_tab[current_stage].current_operate();
            prev_stage=current_stage;
          }


          文章來源:物聯(lián)網(wǎng)IoT技術(shù) 


          ?
          版權(quán)聲明:本文來源網(wǎng)絡(luò),免費(fèi)傳達(dá)知識(shí),版權(quán)歸原作者所有。如涉及作品版權(quán)問題,請(qǐng)聯(lián)系我進(jìn)行刪除。

          ????????????????  END  ???????????????

                

          關(guān)注我的微信公眾號(hào),回復(fù)“星球”加入知識(shí)星球,有問必答。

                


          點(diǎn)擊“閱讀原文”查看知識(shí)星球詳情,歡迎點(diǎn)分享、收藏、點(diǎn)贊、在看。

          瀏覽 37
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  色婷婷精品国产免费 | 翔田AV无码秘 三区 | 亚洲在线观看视频在线观看 | 国产精品久久久久久久久毛毛 | 日韩黄色在线电影 |