Jennic-WSN专业综合训练文档-基础通信实验3.doc_第1页
Jennic-WSN专业综合训练文档-基础通信实验3.doc_第2页
Jennic-WSN专业综合训练文档-基础通信实验3.doc_第3页
Jennic-WSN专业综合训练文档-基础通信实验3.doc_第4页
Jennic-WSN专业综合训练文档-基础通信实验3.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

WSN基础通信实验讲义3 简单点对点无线通信实验 四、基本实验1. 新建Coordinator工程,将如下给定代码添加到Coordinator工程程序框架中,并给予注释,然后编译、下载、运行。/Include files#include #include #include WSN_Profile.h/Macro Definitions#define APP_TICK_PERIOD_ms 500/Local Function PrototypesPRIVATE void vInit(void);PRIVATE void vAppTick(void *pvMsg, uint8 u8Param);PRIVATE void vSendData(uint8 data);PRIVATE void vAddDesc(void);/Local VariablesPRIVATE bool_t bNwkStarted = FALSE;PRIVATE bool_t NextReadStart = TRUE ;PRIVATE uint16 DstAddress = 0 ;PUBLIC void AppColdStart(void)JZS_sConfig.u32Channel = WSN_CHANNEL;JZS_sConfig.u16PanId = WSN_PAN_ID; vInit();PRIVATE void vInit(void) JZS_u32InitSystem(TRUE); vLedInitFfd(); /led的初始化 vLedControl(0,TRUE); vLedControl(1,TRUE); vLedControl(2,FALSE);vLedControl(3,FALSE);vButtonInitFfd(); /按键的初始化 vAHI_HighPowerModuleEnable (TRUE, TRUE ); (void)bBosRun(TRUE); /bos可以工作PRIVATE void vAppTick(void *pvMsg, uint8 u8Param) NextReadStart = TRUE; /使按键有效PRIVATE void vSendData(uint8 data)AF_Transaction_s asTransaction;asTransaction.u8SequenceNum = u8AfGetTransactionSequence(TRUE); /msg数据帧的序列号 asTransaction.uFrame.sMsg.u8TransactionDataLen = 1; /传输数据的长度为1 asTransaction.uFrame.sMsg.au8TransactionData0 = data; (void)afdeDataRequest(APS_ADDRMODE_SHORT, /直接发送模式 DstAddress, /发送的目标地址 WSN_DATA_SINK_ENDPOINT, /目标地址端口号 WSN_DATA_SOURCE_ENDPOINT, /源地址端口号 WSN_PROFILE_ID, /采用的 Profile ID WSN_CID_SENSOR_READINGS, /* Cluster ID */ AF_MSG, /* Frame type */ 1, /请求发送数据事务的数量 &asTransaction, /存放需要发送的数据 APS_TXOPTION_NONE, /没有任何选项 SUPPRESS_ROUTE_DISCOVERY, /强制路由发现模式 0); /采用2倍的maxdepth发送深度void JZA_vAppEventHandler(void) uint8 u8Msg; uint8 u8TimerId; if (!bNwkStarted) return; if (u8ButtonReadFfd() = BUTTON_0_MASK) if (DstAddress & NextReadStart) vSendData(2); NextReadStart = FALSE; (void)bBosCreateTimer(vAppTick, &u8Msg, 0, (APP_TICK_PERIOD_ms/10), &u8TimerId); PUBLIC bool_t JZA_bAfMsgObject(APS_Addrmode_e eAddrMode, uint16 u16AddrSrc, uint8 u8SrcEP, uint8 u8LQI, uint8 u8DstEP, uint8 u8ClusterID, uint8 *pu8ClusterIDRsp, AF_Transaction_s *puTransactionInd, AF_Transaction_s *puTransactionRsp) static bool_t bToggle = FALSE; if (eAddrMode = APS_ADDRMODE_SHORT) & (u8DstEP = WSN_DATA_SINK_ENDPOINT) /直接发送模式并且目标端口地址配对 if(u8ClusterID = WSN_CID_SENSOR_READINGS) /cluster id对应 if (DstAddress) bToggle = !bToggle; vLedControl(1,bToggle); return 0;PUBLIC void JZA_vStackEvent(teJZS_EventIdentifier eEventId, tuJZS_StackEvent *puStackEvent) if (eEventId = JZS_EVENT_NWK_STARTED) /如果网络建立成功 bNwkStarted = TRUE; vLedControl(0, FALSE); /0灯就灭 if (eEventId = JZS_EVENT_NEW_NODE_HAS_JOINED)&(DstAddress=0) /如果有网络加入 DstAddress = puStackEvent-sNewNodeEvent.u16ShortAddr; /获取16位短地址vLedControl(1, FALSE); /有网络加入后,1灯灭vAddDesc(); /调用vAddDes PRIVATE void vAddDesc() uint8 u8InputClusterCnt = 1; /输入cluster数量为1 uint8 au8InputClusterList = WSN_CID_SENSOR_READINGS; uint8 u8OutputClusterCnt = 1; /输出cluster数量为1 uint8 au8OutputClusterList = WSN_CID_SENSOR_READINGS; (void)afmeAddSimpleDesc(WSN_DATA_SINK_ENDPOINT, /endpoint序号 WSN_PROFILE_ID, /所使用的profile id 0x0000, /设备的id 0x00, /设备的版本 0x00, / u8InputClusterCnt, /输入clustter数量 au8InputClusterList, /输入cluser数组的指针 u8OutputClusterCnt, /输出cluser数量 au8OutputClusterList); /指向cluster数组的指针2. 新建EndDevice工程,将上述给定代码添加到EndDevice工程程序框架中,然后做如下适当改动,并给予注释,然后编译、下载、运行。分别按动Coordinator和EndDevice的按键SW0,观测实验现象。/Local VariablesPRIVATE bool_t bNwkJoined = FALSE;PRIVATE bool_t NextReadStart = TRUE ;PRIVATE void vInit(void)中的vLedControl(1, TRUE)改为vLedControl(1,FALSE)。PRIVATE void vSendData(uint8 data)中的DstAddress改为0x0000。PUBLIC bool_t JZA_bAfMsgObject( )中的 if (DstAddress) bToggle = !bToggle; vLedControl(1,bToggle); 改为 if (puTransactionInd-uFrame.sMsg.au8TransactionData0=2) bToggle = !bToggle; vLedControl(1,bToggle); PUBLIC void JZA_vAppEventHandler(void) uint8 u8Msg; uint8 u8TimerId; if (!bNwkJoined) return; if (u8ButtonReadRfd() = BUTTON_0_MASK) if (NextReadStart) vSendData(2); NextReadStart = FALSE; (void)bBosCreateTimer(vAppTick, &u8Msg, 0, (APP_TICK_PERIOD_ms/10), &u8TimerId); PUBLIC void JZA_vStackEv

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论