<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                * 導師視頻講解:[**去聽課**](https://www.bilibili.com/video/BV1k34y1D7Vz/) >[success] **技術支持說明:** >**1**.一般以自主學習為主 > **2**.可到官方問答社區中提問:[**去提問**](https://bbs.csdn.net/forums/zigbee) > **3**.工程師**會盡快**解答社區問題,但他們是一線開發,【**難以保證**】解答時效,解答辛苦,感謝理解! <br/> 終端設備開發內容主要有以下這幾部分: * 定義和啟動屬性上報事件 * 定義事件處理函數,進行屬性上報 * 啟用對應的宏定義 <br/> ## **定義和啟動屬性上報事件** 在zcl_samplesw.h文件中添加事件定義和事件發生時間定義,代碼如下: ### ``` #ifdef ZDO_COORDINATOR #else /* * 此處省略了部分代碼 */ #define SAMPLEAPP_REPORT_EVT 0x0040 #define SAMPLEAPP_REPORT_PERIOD 3000 #endif ``` <br/> 在zcl\_samplesw.c文件中的應用層初始化函數zclSample\_Init中添加啟動屬性上報事件代碼: ``` osal_start_timerEx(zclSampleSw_TaskID, SAMPLEAPP_REPORT_EVT,//事件 SAMPLEAPP_REPORT_PERIOD);//延遲處理事件的時間長度 ``` <br/> ## **定義事件處理函數** 定義事件后,需要添加事件處理函數。打開zcl\_samplesw.c文件找到事件處理函數zclSampleSw\_event\_loop,添加如下代碼: ~~~ #ifdef ZDO_COORDINATOR #else /* * 此處省略了部分代碼 */ if ( events & SAMPLEAPP_REPORT_EVT ) { zclSampleSw_ReportTest();//屬性上報事件的處理函數 //啟動下一個屬性上報事件 osal_start_timerEx(zclSampleSw_TaskID, SAMPLEAPP_REPORT_EVT, SAMPLEAPP_REPORT_PERIOD); return ( events ^ SAMPLEAPP_REPORT_EVT ); } #endif ~~~ <br/> #### **屬性上報API 簡介** 只需調用屬性上報API即可完成屬性上報功能。在zcl.c文件中,可以找到屬性上報API,代碼如下: ### ~~~ /* * 上報一個或多個屬性值 */ extern ZStatus_t zcl_SendReportCmd( uint8 srcEP, //源端點號 afAddrType_t *dstAddr, //目標設備地址信息 uint16 realClusterID, //屬性所屬Cluster ID zclReportCmd_t *reportCmd,//描述待上報的屬性值 uint8 direction, //通信方向 uint8 disableDefaultRsp, //是否關閉默認響應(目標設備的響應) uint8 seqNum); //數據包標號,由開發者自定義 ~~~ ### <br/> #### **屬性上報處理函數** 學習完API后,即可編寫屬性上報事件處理函數zclSampleSw_ReportTest,其代碼定義如下: ### ``` /* * 數據上報事件的處理函數,用于上報數據 */ static?void?zclSampleSw_ReportTest(void) {?? static?uint8?seqNum?=?0;?? zclReportCmd_t?*reportCmd;?? //目標設備的地址信息 afAddrType_t?destAddr;?? destAddr.addrMode?=?afAddr16Bit; destAddr.endPoint?=?SAMPLESW_ENDPOINT; destAddr.addr.shortAddr?=?0x0000;//0x0000表示協調器的網絡地址 reportCmd?=?(zclReportCmd_t?*)osal_mem_alloc(sizeof(zclReportCmd_t)+sizeof(zclReport_t));//申請內存空間 if(reportCmd?==?NULL)//判斷內存空間是否申請成功 ? return;?? reportCmd->attrList[0].attrData?=?(uint8?*)osal_mem_alloc(sizeof(uint8));//申請內存空間 if(reportCmd->attrList[0].attrData?==?NULL)//判斷內存空間是否申請成功 return;?? reportCmd->numAttr?=?1;//屬性數量為1 reportCmd->attrList[0].attrID?=?ATTRID_ON_OFF_SWITCH_TYPE;//屬性ID reportCmd->attrList[0].dataType?=?ZCL_DATATYPE_ENUM8;//數據類型 *((uint8?*)(reportCmd->attrList[0].attrData))?=?seqNum;//屬性值 //上報數據 zcl_SendReportCmd(SAMPLESW_ENDPOINT,//源端點號 &destAddr,//地址信息 ZCL_CLUSTER_ID_GEN_ON_OFF_SWITCH_CONFIG,//Cluster ID reportCmd, ZCL_FRAME_CLIENT_SERVER_DIR,//通信方向為從客戶端到服務端 TRUE,//關閉默認響應(目標設備的響應) ? seqNum++?);//數據包標號,每上報一次數據seqNum的值就會增加1 HalLcdWriteStringValue("Report:?",?(seqNum-1),?10,?4);//顯示 // 釋放內存空間! osal_mem_free(reportCmd->attrList[0].attrData);?? osal_mem_free(reportCmd); } ``` <br/> ## **啟用對應的宏定義** 最后,還需要開啟一個宏定義ZCL\_REPORTING\_DEVICE,如下圖所示。 ![](https://img.kancloud.cn/7b/c5/7bc589cc8cdb932b0496d63841460a1b_650x810.png =500x) <br/> <br/> ## **項目定制** * 如需項目定制開發,可掃碼添加項目經理好友(注明“**項目定制**”) * 定制范圍:**NB-IoT**、**CATn(4G)**、**WiFi**、**ZigBee**、**BLE Mesh**以及**STM32**、**嵌入式Linux**等IoT技術方案 * 善學坊官網:[www.sxf-iot.com](https://www.sxf-iot.com/) ![](https://img.kancloud.cn/ca/73/ca739f92cab220a3059378642e3bd502_430x430.png =200x) * 非項目定制**勿擾**,此處**非**技術支持
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看