当前位置:文档之家› 无线传感器网络实验

无线传感器网络实验

指导教师
李洋
实验类型
综合
实验学时
4
实验时间
2016.10.24
一、实验目的和要求
掌握Z-stack协议栈的运行过程,掌握单播、组播、广播的方法及原理。
要求:1、成功运行CC2530广播实验;
2、掌握Z-Stack协议栈每部分功能;
3、小组完成组播实验,实现LED灯的分组闪烁;
二、实验环境(实验设备)
(void)sentEP;
(void)sentTransID;
// Action taken when confirmation is received.
if ( sentStatus != ZSuccess )
{
// The data wasn't delivered -- Do something
uartConfig.baudRate= HAL_UART_BR_9600;
uartConfig.flowControl= FALSE;
uartConfig.flowControlThreshold = 64; // 2x30 don't care - see uart driver.
uartConfig.rx.maxBufSize= 128; // 2x30 don't care - see uart driver.
ZDO(The ZigBee Device Objects,即ZigBee设备对象)层提供了ZigBee设备管理功能,包括:网络建立,发现网络、加入网络、应用端点的绑定和安全管理服务。ZDP(ZigBee Device Profile,即ZigBee设备规范)描述了ZDO内部一般性的ZigBee设备功能是如何实现的。其定义了相关的命令和相应的函数。ZDP为ZDO和应用程序提供如下功能:设备网络启动、设备和服务发现、终端设备绑定、绑定和取消绑定服务、网络管理服务。
// return unprocessed events
return (events ^ BROADCAST_RTO
// Discard unknown events
return 0;
}
修改部分:
修改f8wConfig.cfg文件中的-DZDAPP_CONFIG_PAN_ID属性为自定义PANID。
ZDO_RegisterForZDOMsg( Broadcast_TaskID, Match_Desc_rsp );
#if defined( IAR_ARMCM3_LM )
// Register this task with RTOS task initiator
RTOS_RegisterApp( task_id, BROADCAST_RTOS_MSG_EVT );
{
//当接收的消息有事件发生时,判断事件的类型
switch ( MSGpkt->hdr.event )
{
case ZDO_CB_MSG:
Broadcast_ProcessZDOMsgs( (zdoIncomingMsg_t *)MSGpkt );
break;
case KEY_CHANGE:
Broadcast_HandleKeys( ((keyChange_t *)MSGpkt)->state, ((keyChange_t *)MSGpkt)->keys );
uartConfig.tx.maxBufSize= 128; // 2x30 don't care - see uart driver.
uartConfig.idleTimeout= 6; // 2x30 don't care - see uart driver.
uartConfig.intEnable= TRUE; // 2x30 don't care - see uart driver.
{
osal_start_timerEx(Broadcast_TaskID,BROADCAST_SEND_MSG_EVT,BROADCAST_SEND_MSG_TIMEOUT );
}
break;
default:
break;
}
osal_msg_deallocate( (uint8 *)MSGpkt );//释放消息占据的存储空间
break;
case AF_DATA_CONFIRM_CMD:
afDataConfirm = (afDataConfirm_t *)MSGpkt;
sentEP = afDataConfirm->endpoint;
sentStatus = afDataConfirm->hdr.status;
sentTransID = afDataConfirm->transID;
初始化函数:
voidBroadcast_Init( uint8 task_id )//任务初始化函数
{
//任务ID号赋值
SampleApp_TaskID = task_id;
//网络状态为初始化状态
SampleApp_NwkState = DEV_INIT;
//传输序列号赋值
SampleApp_TransID = 0;
SampleApp_Periodic_DstAddr.addrMode = (afAddrMode_t)AddrBroadcast;
SampleApp_Periodic_DstAddr.endPoint=SAMPLEAPP_ENDPOINT;
Broadcast_DstAddr.addr.shortAddr = 0x0000;
uartConfig.callBackFunc= NULL;
HalUARTOpen (0, &uartConfig);
}
#if defined ( LCD_SUPPORTED )
HalLcdWriteString( "Broadcast", HAL_LCD_LINE_1 );
#endif
ZDO_RegisterForZDOMsg( Broadcast_TaskID, End_Device_Bind_rsp );
SampleApp_epDesc.endPoint = SAMPLEAPP_ENDPOINT;
//设置任务ID
SampleApp_epDesc.task_id = &SampleApp_TaskID;
SampleApp_epDesc.simpleDesc=(SimpleDescriptionFormat_t *)&SampleApp_SimpleDesc;
// Next
MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( Broadcast_TaskID );//轮循查找消息队列里的消息知道消息队列为空
}
return (events ^ SYS_EVENT_MSG);
}
if ( events & BROADCAST_SEND_MSG_EVT )//判断发送超时
实验报告
(2016 / 2017学年第1学期)
课程名称
计算机通信与网络实验
实验名称
无线传感器网络单播、组播和广播实验
实验时间
2016年10月24日
指导单位
计算机学院实验教学中心
指导教师
李洋
学生姓名
高明珠
班级学号
B13040907
学院(系)
计算机学院
专业
软件工程
实验报告
实验名称
无线传感器网络单播、组播和广播实验
}
break;
case AF_INCOMING_MSG_CMD:
Broadcast_MessageMSGCB( MSGpkt );
break;
case ZDO_STATE_CHANGE:
Broadcast_NwkState = (devStates_t)(MSGpkt->hdr.status);
if (Broadcast_NwkState == DEV_ZB_COORD)
SampleApp_Flash_DstAddr.addr.shortAddr = SAMPLEAPP_FLASH_GROUP;
并在注册按键事件RegisterForKeys( SampleApp_TaskID )后加上代码:
//设置组寻址的组ID号
SampleApp_Group.ID = 0x0001;
osal_memcpy( SampleApp_, "Group 1", 7 );
//在APS层添加组
aps_AddGroup( SAMPLEAPP_ENDPOINT, &SampleApp_Group );
2、掌握Z-Stack协议栈每部分功能;
ZigBee协议栈结构包括物理层、MAC层、NWK(网络层)、APL(应用层)、应用支持子层APS、应用程序框架AF、设备对象ZDO层。
SampleApp_Periodic_DstAddr.addr.shortAddr = 0xFFFF;
上面这部分代码改为下方的代码:
//设置寻址方式为组寻址方式
SampleApp_Flash_DstAddr.addrMode = (afAddrMode_t)afAddrGroup;
SampleApp_Flash_DstAddr.endPoint = SAMPLEAPP_ENDPOINT;
#endif
}
任务处理函数:
uint16Broadcast_ProcessEvent( uint8 task_id, uint16 events )//消息处理函数
{
//定义接收到的消息
afIncomingMSGPacket_t *MSGpkt;
相关主题