3.廣播組網(wǎng)-無線數(shù)據(jù)傳輸_第1頁
3.廣播組網(wǎng)-無線數(shù)據(jù)傳輸_第2頁
3.廣播組網(wǎng)-無線數(shù)據(jù)傳輸_第3頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、3、廣播組網(wǎng)-無線數(shù)據(jù)傳輸實驗內(nèi)容:掌握串口的使用掌握協(xié)調(diào)器和終端通訊過程實現(xiàn)現(xiàn)象:終端發(fā)“0123456789”協(xié)調(diào)器收到后通過串口發(fā)給電腦,串口調(diào)試助手顯示接收到的字符串實驗詳解:此實驗是基于“2.協(xié)議棧中串口基礎實驗”的,只需在原工程上增加發(fā)送和接收部分即可。打開3.高級篇-zigbee協(xié)議棧應用與組網(wǎng)3.廣播組網(wǎng)-無線數(shù)據(jù)傳輸ZStack-CC2530-2.3.0-1.4.0ProjectszstackSlesSleAppCC2530DBSleApp.eww 工程。在左邊workspace 目錄下比較重要的兩個文件夾分別是Zmain和App。開發(fā)主要在App 文件夾進行,這也是用戶自己

2、添加自己代碼的地方。主要修改S1 所示。leApp.c 和SleApp.h 即可,如圖12357481431:http:/創(chuàng)造思索未來科技共贏!圖1 由于此實驗中只需在上個實驗的基礎上,修兩個地方;析源碼。就先修改,觀察實現(xiàn)現(xiàn)象,再分1. 接收數(shù)據(jù)(紅色字體為新增代碼)SleApp_MessageMSGCB , 在函數(shù) case SLEAPP_PERIODIC_CLUSTERID:下面增加三行代碼,修改后如下:void S2leApp_MessageMSGCB(ingMSGPacket_t *pkt ) /接收數(shù)據(jù)2357481431:http:/創(chuàng)造思索未來科技共贏!u16 flashTim

3、e;switch ( pkt-clusterId )case SLEAPP_PERIODIC_CLUSTERID:HalUARTWrite(0, Rx:, 3); /提示信息HalUARTWrite(0, pkt-cmd.Data, pkt-cmd.DataLength); /輸出接收到的數(shù)據(jù) HalUARTWrite(0, n, 1); /回車換行break;case SLEAPP_FLASH_CLUSTERID: /此實驗沒有使用,到后面實驗詳解flashTime = BUILD_U16(pkt-cmd.Data1, pkt-cmd.Data2 );HalLedBlink( HAL_LED

4、_4, 4, 50, (flashTime / 4) );break;2. 發(fā)送數(shù)據(jù)(紅色字體為新增代碼)void SleApp_SendPeriodicMessage( void ) /周期發(fā)送函數(shù)u8 data11=0123456789;/ 調(diào)用 AF_Da taRequest 將數(shù)據(jù)無線廣去,在第一個實驗詳解里就不重復了。if ( AF_DataRequest( &SleApp_Periodic_DstAddr, &SleApp_epDesc,S10,data,&SLEAPP_PERIODIC_CLUSTERID,leApp_TransID,AF_DISCV_ROUTE,AF_DEFAU

5、LT_RADIUS ) = afSelseus_SUCS )32357481431:http:/創(chuàng)造思索未來科技共贏!/ Error occurred in request to send.實驗步驟:選擇 CoodinatorEB-Pro,選擇 EndDeviceEB-Pro,到開發(fā)板網(wǎng)關 A;作為協(xié)調(diào)器,通過 USB 線跟電腦連接到開發(fā)板終端 B;作為終端設備無線發(fā)送數(shù)據(jù)給協(xié)調(diào)器如果網(wǎng)關 A 和節(jié)點 B 建立通信連接 ,那么兩個板子的 D3 都會滅掉。3.給兩塊開發(fā)板上電,打開串口調(diào)試助手,設為:115200 8N1 ,協(xié)調(diào)器間隔 5S 會收到終端發(fā)過來的數(shù)據(jù)。此時你可以把終端設備的電源關閉

6、,看電腦是否還能收到數(shù)據(jù)?自己驗證一下吧。42357481431:http:/創(chuàng)造思索未來科技共贏!好了,看完實驗現(xiàn)象開始分析源碼吧.一、接收部分:接收數(shù)據(jù)主要工作:1)接收到的數(shù)據(jù)2) 把數(shù)據(jù)通過串口發(fā)送給 PC 機在 ScaseSleApp.c 中搜索 SleApp_ProsEvent,找到如下代碼處:ING_MSG_CMD:leApp_MessageMSGCB ( MSGpkt );break;其中 S void SleApp_MessageMSGCB( MSG pkt );就是接收處理函數(shù)。leApp_MessageMSGCB(ingMSGPacket_t *pkt ) /接收數(shù)據(jù)u1

7、6 flashTime;switch ( pkt-clusterId )case SLEAPP_PERIODIC_CLUSTERID:HalUARTWrite(0, Rx:, 3); /提示信息HalUARTWrite(0, pkt-cmd.Data, pkt-cmd.DataLength); /輸出接收到的數(shù)據(jù) HalUARTWrite(0, n, 1); /回車換行break;只關心藍色那行代碼,其中紅色部分為自己添加內(nèi)容。SLEAPP_PERIODIC_CLUSTERID 這個宏定義是不是有點眼熟?沒錯,這就是號相同說明是前面發(fā)送函數(shù)定義的數(shù)據(jù)包的 ID 號,它的作用很明顯了,如果收到的

8、 ID自己定義的周期性廣播包。所有的數(shù)據(jù)和信息都在函數(shù)傳入來的ingMSGPacket_t 的定義,它是一個結(jié)構(gòu)體,內(nèi)容如下:typedef structingMSGPacket_t *pkt 里面,進入52357481431:http:/創(chuàng)造思索未來科技共贏!osal_event_hdr_t hdr; /* O SAL Message header O SAL 消息頭*/uu16 grou; /* Messages grou- 0 i f not set 消息組 ID */16 clusterId; /* Messag es cluster ID 消息族 ID */afAddrType_t

9、srcAddr;/* Source Ad dress, if endpo地址類型*/is STUBAPS_ER_PAN_t s anAN message 源uu u uu16 macDestAddr; /* MAC h eader desti nation short address MAC 物理地址*/8 endPo; /* destination endpoMAC 目的端點*/8 wasBroadcast; /*廣播地址*/8 LinkQuality; /*接收數(shù)據(jù)幀的鏈路質(zhì)量*/8 correlation; /*接收數(shù)據(jù)幀的未加工相關值*/8 rssi; /* The received

10、RFer in unit s dBm 接收的射頻功率*/uu8 SecurityUse; /* deprecated 棄用*/32 timest; /* receipt timestfrom MAC 收到時間標記*/mandFormat_t cmd; /* Application Data 應用程序數(shù)據(jù)*/ingMSGPacket_t; /無線數(shù)據(jù)包格式結(jié)構(gòu)體那么數(shù)據(jù)在哪里呢?在紅色那行,又是一個結(jié)構(gòu)體,繼續(xù)進入。/ Generalized MSGtypedef structbyte TransSeqNumber;d Formatu16 DataLength; / Number of byte

11、sransDatabyte *Data;mandFormat_t;千呼萬喚始出來,現(xiàn)在就可以通過程序?qū)?shù)據(jù)讀出了。通過 osal_memcpy了,到數(shù)據(jù)中處理如: osal_memcpy( buf, MSGpkt-cmd.Data,MSGpkt-cmd.DataLength );62357481431:http:/創(chuàng)造思索未來科技共贏!二、發(fā)送部分發(fā)送部分主要工作:設置發(fā)送內(nèi)容,啟動定時器,周期性地發(fā)送。同樣在SleApp_ProsEven 函數(shù)找到如下代碼:1. case ZDO_SE_CHANGE: /當網(wǎng)絡狀態(tài)改變,所有節(jié)點都會發(fā)生2. Sle App_NwkSe = (devSes_t

12、)(MSGpkt-hdr.sus);3. if ( / /(SleApp_NwkSe = DEV_ZB_COORD) | /協(xié)議器不用發(fā)送所以4. (S5. | (S 6.7./ Starl eApp_NwkSe = DEV_R OUTER) /路由器leApp_NwkSe = DEV_END_DEVICE) ) /終端設備ding the periodic message in a regularerval.8. osal_start_timerEx( SleApp_TaskID,SS9. LE APP_SEND_PERIODIC_MSG _EVT,LE APP_SEND_PERIODIC_

13、MSG _TIMEOUT );第 8 行:紅色字體標出的為關鍵代碼。osal_start_timerEx 三個參數(shù)決定著周期性發(fā)送數(shù)據(jù)脈。逐一分析。SleApp_TaskIDleApp_TaskID: 任務 ID,函數(shù) SleApp_Init 開頭定義了S= task_id;也就是 SleApp 初始化的任務 ID 號。SLE APP_AA_PERIODIC_MSG_EV T:#define SLEAPP_SEND_PERI ODIC_MSG_EVT 0 x0001同一個任務下可以有多個事件,這個是事件的復。可以定義自己的事件,但是不能重SLE APP_AA_PERIODIC_MSG_T IM

14、EOUT:72357481431:http:/創(chuàng)造思索未來科技共贏!#define SLEAPP_SEND_PERI ODIC_MSG_TIMEOUT 5000事件重復執(zhí)行的時間。這里以毫秒為,所以是 5s,也就是剛剛實驗為什么間隔約 5s 收到數(shù)據(jù)的原因。這里可以改成你需要發(fā)送的時間間隔。注意:ZDO_SE_CHANGE 只有當設備網(wǎng)絡發(fā)生改變后才會觸發(fā),所以在此處可做一些初始化工作;如果網(wǎng)絡一直連接的就不會再次進入這個函數(shù)了,只執(zhí)行 1 次。在同一函數(shù)內(nèi)找到如下代碼:/判斷 SLEAPP_SEND_PERIODIC_ MSG_EVT 有沒有發(fā)生,如果有的就執(zhí)行下面函數(shù)1. if ( eve

15、nts & S2. LEAPP_SEND_PERIODIC_MSG_EVT )3. / Send the periodic message4. SleApp_SendPeriodicMessage();5./ Setup to send message again in normal period (+ a little jitter)6.osal_start_timerEx( SleA pp_TaskID, SLEAPP_ SEND_PERIODIC_MSG_EVT,7.(SLEAPP_SEND_PERIODIC_MSG_TIMEOUT + (osal_rand() & 0 x00FF) );/ return unproreturn (events S10. sed eventLEAPP_ SEND_PERIODIC_MSG_EVT );第 4 行:Svoid SleApp_SendPeriodicMessage();是leApp_SendPeriodic Message( void )發(fā)送數(shù)據(jù)的函數(shù):u8 data11=0123456789 ;if ( AF_DataRequest( &SleApp_Periodic_DstAdd r, &SleApp_epDesc,SLEA

溫馨提示

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

評論

0/150

提交評論