<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                * 導師**視頻**講解:[**去聽課**](https://www.bilibili.com/video/BV1k34y1D7Vz/) >[success] **技術支持說明:** >**1**.一般以自主學習為主 > **2**.可到官方問答社區中提問:[**去提問**](https://bbs.csdn.net/forums/zigbee) > **3**.工程師**會盡快**解答社區問題,但他們是一線開發,【**難以保證**】解答時效,解答辛苦,感謝理解! <br/> 本章實驗和先前講解的屬性上報非常相似,我們實現的功能是:設備會啟動一個周期性事件來檢測溫度是否發生變化,如果發生了變化,會把數據上報給協調器;協調器接收到數據時會顯示在屏幕上! ### ## \*\* **協調器** 接收“上報”命令并進行處理: ![](https://img.kancloud.cn/5a/aa/5aaa55143641bd56891f17afde691609_832x176.png =600x) ### 最終調用函數:zclSampleTemperatureSensor\_ProcessInReportCmd ``` 1.static?uint8?zclSampleTemperatureSensor_ProcessInReportCmd(?zclIncomingMsg_t?*pInMsg?)???? 2.{???? 3.??zclReportCmd_t?*reportCmd;???? 4.??uint8?i;???? 5.???? 6.??HalLcdWriteString("pro?report",?3);???? 7.?????? 8.??reportCmd?=?(zclReportCmd_t?*)pInMsg->attrCmd;???? 9.??for?(?i?=?0;?i?<?reportCmd->numAttr;?i++?)???? 10.??{???? 11.????if(?pInMsg->clusterId?==?ZCL_CLUSTER_ID_MS_TEMPERATURE_MEASUREMENT?&&??? 12.??????reportCmd->attrList[i].attrID?==?ATTRID_MS_TEMPERATURE_MEASURED_VALUE) 13.????{???? 14.????????int16?temp?=?*((uint16?*)reportCmd->attrList[i].attrData);???? 15.????????HalLcdWriteStringValue("Rx?Temp:",?temp,?10,?4);???? 16.????}???? 17.??}???? 18.???? 19.??return?(?TRUE?);???? 20.} ``` ### Cluster:ZCL\_CLUSTER\_ID\_MS\_TEMPERATURE\_MEASUREMENT, 屬性:ATTRID\_MS\_TEMPERATURE\_MEASURED\_VALUE 同時記得在“option”中打開宏: ``` ZCL_REPORT_DESTINATION_DEVICE ZCL_REPORT ``` ### ## \*\* **設備** 定義周期性“上報”事件: ![](https://img.kancloud.cn/70/d7/70d7010ee47a873ad211ab51277c4744_830x158.png =600x) ### 在應用層初始化函數中啟動周期性上報事件: ![](https://img.kancloud.cn/81/e6/81e69f2b6fae1af8785305ba8e74bf0a_832x176.png =600x) ### 在應用層事件處理函數中處理該事件: ![](https://img.kancloud.cn/f4/0f/f40f7b489e83179664e0dd523301b890_832x330.png =600x) ### 最終調用函數zclSampleTemperatureSensor\_GetAndReport,該函數的做的事件是:通過DHT11驅動 程序獲取溫度值,然后判斷溫度是否發生變化,如果發生變化則上報數據給協調器! ``` 1.static?void?zclSampleTemperatureSensor_GetAndReport(void)???? 2.{???? 3.????halDHT11Data_t?dat?=?halDHT11GetData();??//?獲取溫度值?? 4.????if(dat.ok)??//?檢測是否獲取成功?? 5.????{???? 6.??????HalLcdWriteStringValue("Temp:",?dat.temp,?10,?3);???? 7.?????????? 8.??????//?如果溫度值沒有變化,直接忽略(return)?? 9.if(zclSampleTemperatureSensor_MeasuredValue?==?((int16)dat.temp?*?100))???? 10.????????return;???? 11. zclSampleTemperatureSensor_MeasuredValue?=?(int16)dat.temp?*?100;?? 12.????}???? 13.????else???? 14.????{???? 15.??????HalLcdWriteStringValue("Error?Code:",?dat.ok,?10,?3);???? 16.??????return;???? 17.????}???? 18.??if(?zclSampleTemperatureSensor_MeasuredValue?>?zclSampleTemperatureSensor_MaxMeasuredValue?)???? 19.????{???? 20.??????zclSampleTemperatureSensor_MeasuredValue?=?zclSampleTemperatureSensor_MaxMeasuredValue;???? 21.????}???? 22.????else?if?(?zclSampleTemperatureSensor_MeasuredValue?<?zclSampleTemperatureSensor_MinMeasuredValue?)???? 23.????{???? 24.??????zclSampleTemperatureSensor_MeasuredValue?=?zclSampleTemperatureSensor_MinMeasuredValue;???? 25.????}???? 26.???????? 27.????//?Report?data??//?上報溫度值?? 28.zclSampleTemperatureSensor_ReportTemp(zclSampleTemperatureSensor_MeasuredValue);???? 29.} ``` ### 最后通過函數zclSampleTemperatureSensor\_ReportTemp進行數據上報,該函數的結構和前面講解屬性上報的內容基本一樣,這里不做展開! ## \*\* **仿真調試** 分別編譯協調器和路由器的程序,然后分別燒錄到兩個開發板中;我們可以往DHT11溫濕度傳感器上吹氣來改變溫度值,可以看到數據上報和顯示:
                  <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>

                              哎呀哎呀视频在线观看