<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、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                >[success] 導師視頻講解:[去聽課](https://www.bilibili.com/video/BV1k34y1D7Vz/) >[success] **技術支持說明:** >**1**.一般以自主學習為主 > **2**.可到官方問答社區中提問:[**去提問**](https://bbs.csdn.net/forums/zigbee) > **3**.工程師**會盡快**解答社區問題,但他們是一線開發,【**難以保證**】解答時效,解答辛苦,感謝理解! <br/> ## **添加屬性** 待開發設備所需要使用的屬性均需要在屬性列表中定義。如前面章節所述,打開zcl\_samplesw\_data.c文件,可以找到屬性列表的代碼定義: ![](https://img.kancloud.cn/c3/e1/c3e1f359ceacc0b59fad51c2e34d6a3f_728x864.png =400x) ### 在ZCL內容詳解章節已經講解過這個數組了,此處更進一步講解一下。屬性ATTRID\_ON\_OFF\_SWITCH\_ACTIONS為例講解,這個屬性: * 是一個8位的屬性(ZCL\_DATATYPE\_ENUM8) * 可以看到這個屬性是可被讀取和寫入寫的(ACCESS\_CONTROL\_READ | ACCESS\_CONTROL\_WRITE)。 * 這個屬性被添加進Cluster ZCL\_CLUSTER\_ID\_GEN\_ON\_OFF\_SWITCH\_CONFIG 中 開發者可以套用上述代碼來往指定的Cluster中添加指定的屬性。 <br/> ## **屬性讀寫命令API** 可以調用屬性讀寫命令API對指定的屬性進行讀取或寫入。打開zcl.h文件,可以找到屬性讀寫命令API的定義,代碼如下: ### ``` #ifdef ZCL_READ /* * 發送一個讀取屬性命令 */ extern ZStatus_t zcl_SendRead( uint8 srcEP, // 源端點號 afAddrType_t *dstAddr, // 目標設備地址信息 uint16 realClusterID, // Cluster ID zclReadCmd_t *readCmd, // “讀”信息 uint8 direction, // 通信方向 uint8 disableDefaultRsp, //是否關閉默認響應(目標設備的響應) uint8 seqNum); // 數據包標號,由開發者自定義 /* * 省略部分代碼 */ #endif // ZCL_READ #ifdef ZCL_WRITE /* * 發送一個寫入屬性命令 ZCL_CMD_WRITE * 按以下方式調用: * ZStatus_t zcl_SendWrite( * uint8 srcEP, // 源應用端點 * afAddrType_t *dstAddr, // 目標設備地址信息 * uint16 realClusterID, // Cluster ID * zclWriteCmd_t *writeCmd, // “寫”信息 * uint8 direction, // 通信方向 * uint8 disableDefaultRsp, //是否關閉默認響應(目標設備的響應) * uint8 seqNum); // 數據包標號,由開發者自定義 */ #define zcl_SendWrite(a,b,c,d,e,f,g) (zcl_SendWriteRequest( (a), (b), (c), (d), ZCL_CMD_WRITE, (e), (f), (g) )) /* * 省略部分代碼 */ #endif // ZCL_WRITE ``` <br/> ## **命令處理** 客戶端設備在向服務端設備發送上述命令后,會接收到由服務端的返回來的響應信息并且產生系統事件ZCL\_INCOMING\_MSG。因此,需要處理這個事件。打開zcl\_samplesw.c文件中的zclSampleSw\_event\_loop函數,添加對應的事件處理函數zclSampleSw_ProcessIncomingMsg,代碼如下: ![](https://img.kancloud.cn/89/1d/891d211824059826d3ad3f9eaf6fae3e_758x382.png =500x) ### zclSampleSw\_ProcessIncomingMsg是由開發者自定義的函數,代碼如下: ### ``` 1.static?void?zclSampleSw_ProcessIncomingMsg(zclIncomingMsg_t?*pInMsg) 2.{?? 3.??switch?(?pInMsg->zclHdr.commandID?)?? 4.??{?? 5.#ifdef?ZCL_READ?? 6.????case?ZCL_CMD_READ_RSP:??// 讀命令響應信息 7.??????zclSampleSw_ProcessInReadRspCmd(?pInMsg?);//讀響應信息處理函數 8.??????break;?? 9.#endif?? 10.#ifdef?ZCL_WRITE?? 11.????case?ZCL_CMD_WRITE_RSP:??// 寫命令響應信息 12.??????zclSampleSw_ProcessInWriteRspCmd(?pInMsg?);?//寫命令響應信息處理函數 13.??????break;?? 14.#endif?? 15.#ifdef?ZCL_REPORT?? 16.????...... // 暫時不展開 17.#endif?? 18. 19.????case?ZCL_CMD_DEFAULT_RSP:??// 默認響應信息 20.??????zclSampleSw_ProcessInDefaultRspCmd(?pInMsg?);//默認響應信息處理函數 21.??????break;?? 22. 23.#ifdef?ZCL_DISCOVER?? 24.????...... // 暫時不展開 25.#endif?? 26. 27.????default:?? 28.??????break;?? 29.??}?? 30.?? 31.??if?(?pInMsg->attrCmd?)?? 32.????osal_mem_free(?pInMsg->attrCmd?);?? 33.} ``` ### 上述代碼用到了默認響應(ZCL\_CMD\_DEFAULT\_RSP)、讀響應(ZCL\_CMD\_READ\_RSP)和寫響應(ZCL\_CMD\_WRITE\_RSP),分別展開講解一下。 * **默認響應** 客戶端給服務端發送命令時可以指定服務器端是否需要返回一個默認的響應信息。客戶端可以據此來確定服務器端是否確實接收到這個命令。 ### * **讀響應** 客戶端給服務端發送讀取屬性命令后,服務端會返回一個讀響應。這個讀響應中包含了屬性是否讀取成功和屬性值等內容。 ### * **寫響應** 客戶端給服務端發送寫命令后,服務端會返回一個寫響應。這個寫響應中包含屬性值是否寫入成功等信息。 <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>

                              哎呀哎呀视频在线观看