《物聯(lián)網(wǎng)系統(tǒng)設(shè)計(jì)與應(yīng)用開發(fā)》課件5-4 任務(wù)4 組播通信_第1頁
《物聯(lián)網(wǎng)系統(tǒng)設(shè)計(jì)與應(yīng)用開發(fā)》課件5-4 任務(wù)4 組播通信_第2頁
《物聯(lián)網(wǎng)系統(tǒng)設(shè)計(jì)與應(yīng)用開發(fā)》課件5-4 任務(wù)4 組播通信_第3頁
《物聯(lián)網(wǎng)系統(tǒng)設(shè)計(jì)與應(yīng)用開發(fā)》課件5-4 任務(wù)4 組播通信_第4頁
《物聯(lián)網(wǎng)系統(tǒng)設(shè)計(jì)與應(yīng)用開發(fā)》課件5-4 任務(wù)4 組播通信_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

目錄任務(wù)目標(biāo)01相關(guān)知識點(diǎn)02任務(wù)實(shí)施03任務(wù)目標(biāo)(1)掌握組播通信。(2)掌握按鍵操作。任務(wù)2:組播通信本任務(wù)實(shí)現(xiàn)組播通信:各節(jié)點(diǎn)之間以組播方式發(fā)送數(shù)據(jù),只有同組的節(jié)點(diǎn)可以接收和發(fā)送數(shù)據(jù),組播通信原理圖如圖所示。組播通信原理圖任務(wù)2:組播通信本任務(wù)實(shí)現(xiàn)的具體功能:一個節(jié)點(diǎn)做協(xié)調(diào)器,另外兩個節(jié)點(diǎn)做終端。按終端S1鍵時,協(xié)調(diào)器Led2狀態(tài)改變,同時終端自身的Led2狀態(tài)也改變,提示發(fā)送成功。修改其中一個終端的組編號,編譯下載后,按此終端S1鍵時,此時看協(xié)調(diào)器Led2狀態(tài)是否會改變。組播通信協(xié)調(diào)器程序和終端程序流程圖如圖所示。協(xié)調(diào)器程序流程圖 終端程序流程圖相關(guān)知識點(diǎn)組播定義在apsgroups.h文件中有aps_Group_t結(jié)構(gòu)體的定義,如下所示:#defineAPS_GROUP_NAME_LEN16typedefstruct{uint16ID;uint8name[APS_GROUP_NAME_LEN];}aps_Group_t;每個組有一個特定的ID,然后是組名,組名存放在name數(shù)組中。注意:name數(shù)組的第一個元素是組名的長度,從第二個元素開始存放真正的組名字符串。在程序中可以使用如下方法定義一個組。1aps_Group_tSampleApp_Group;2SampleApp_Group.ID=0x0001;3SampleApp_G[0]=7;4osal_memcpy(&(SampleApp_G[1]),"Group1",7);5aps_AddGroup(SAMPLEAPP_ENDPOINT,&SampleApp_Group);第1行,定義了一個aps_Group_t類型的變量SampleApp_Group。第2行,將組ID初始化為0x0001。第3行,將組名的長度寫入name數(shù)組的第1個元素位置處。第4行,使用osal_memcpy()函數(shù)將組名“Groupl”拷貝到name數(shù)組中,從第2個元素位置處開始存放組名。第5行,使用aps_AddGroup()函數(shù)使該端口加到組中。相關(guān)知識點(diǎn)其中,aps_AddGroup()函數(shù)原型如下:aps_AddGroup(uint8endpoint,aps_Group_t*group);這些協(xié)議棧已經(jīng)幫我們實(shí)現(xiàn)了,打開SampleApp.c文件,搜索SampleApp_Group,可以找到組定義,如圖所示。

組播定義相關(guān)知識點(diǎn)組播通信流程(1)在Coordinator.c文件中添加頭文件:(2)定義組播結(jié)構(gòu)體變量aps_Group_tGenericApp_Group;(3)在GenericApp_Init(uint8task_id)中初始化:GenericApp_Group.ID=0x0001;//組號osal_memcpy(GenericApp_G,“Group1”,6);//組名(4)當(dāng)網(wǎng)絡(luò)狀態(tài)發(fā)生變化時,加入組aps_AddGroup(GENERICAPP_ENDPOINT,&GenericApp_Group);//將端口加入組任務(wù)開發(fā)實(shí)施步驟(1)找到初始化函數(shù)GenericApp_Init(),加上紅框代碼

(2)找到任務(wù)事件處理函數(shù)GenericApp_ProcessEvent()函數(shù),加上按鍵事件處理.

任務(wù)開發(fā)實(shí)施步驟(3)找到消息處理函數(shù)GenericApp_MessageMSGCB()

任務(wù)開發(fā)實(shí)施步驟(4)按鍵處理函數(shù)

任務(wù)開發(fā)實(shí)施步驟(5)發(fā)送消息函數(shù)(組播發(fā)送)

任務(wù)開發(fā)實(shí)施步驟(6)添加幾個變量

任務(wù)開發(fā)實(shí)施步驟(7)添加頭文件(8)添加組播簇ID任務(wù)開發(fā)實(shí)施步驟(9)函數(shù)聲明(10)GenericApp.h文件添加簇任務(wù)開發(fā)實(shí)施步驟任務(wù)結(jié)果操作步驟(1)編譯程序下載到三個節(jié)點(diǎn)中,一個協(xié)調(diào)器,一個路由器,一個終端。(2)終端節(jié)點(diǎn)按下S1按鍵,發(fā)送組播數(shù)據(jù),成功則終端D2燈翻轉(zhuǎn),協(xié)調(diào)器收到數(shù)據(jù)后協(xié)調(diào)器的D2燈同時翻轉(zhuǎn)。(3)按下協(xié)調(diào)器S2按鍵,退出組,則終端再按下S1按鍵,協(xié)調(diào)器收不到數(shù)據(jù),D2燈不變化。注意:協(xié)調(diào)器發(fā)送組播信息時,

終端節(jié)點(diǎn)收不到組播的數(shù)據(jù),只有路由器能收到。什么原因呢?原因:協(xié)議棧規(guī)范里面規(guī)定,睡眠中斷不接收組播信息,如果一定要接收的話,只有將終端的接收機(jī)一直打開,這樣就可以接收到了。具體做法為:將f8config.cfg配置文件中的:-RFD_RCVC_ALWAYS_ON=FALSE改為:-RFD_RCVC_ALWAYS_ON=TRUE就可以了。拓展作業(yè):改為協(xié)調(diào)器發(fā)送數(shù)據(jù),終端接收數(shù)據(jù),收到數(shù)據(jù)后D2燈翻轉(zhuǎn)。程序下載到三個節(jié)點(diǎn)中,協(xié)調(diào)器、路由器、終端各一個,協(xié)調(diào)器按下S1按鍵,其他兩個節(jié)點(diǎn)上D2燈同時翻轉(zhuǎn)。感謝觀看THANKYOUPleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontenttothisdirectly.Pleasereplacetext,clickaddrelevantheadline,modifythetextcontent,alsocancopyyourcontentto

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論