5.zigbee的开发,串口putchar重定向(使用print),单播实验,usb抓包实验
一。实验:单播
实验要求:
实现终端定时向协调器发送给“好好学习”字符串,并且从终端打印出来。
要求:
指定端点为 0x0005
指定簇为 0x0003
1.进入应用层SampleApp.c中,串口的重定向
报错:函数没有原型
解决:
2.设置为单播模式
查找方法:通过右键进入定义去寻找
Addr16Bit
3.指定断电修改为5
4.以下两个是终端节点与协调器节点的数据处理
void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )
{uint16 flashTime;uint8 buf[] = "\r\n";switch ( pkt->clusterId ){//写数据case SAMPLEAPP_PERIODIC_CLUSTERID:HalUARTWrite(0,pkt->cmd.Data,pkt->cmd.DataLength);HalUARTWrite(0,buf,strlen(buf));break;case SAMPLEAPP_FLASH_CLUSTERID:flashTime = BUILD_UINT16(pkt->cmd.Data[1], pkt->cmd.Data[2] );HalLedBlink( HAL_LED_4, 4, 50, (flashTime / 4) );break;}
}
void SampleApp_SendPeriodicMessage( void )
{//数据uint8 buf[] = "天天向上";if ( AF_DataRequest( &SampleApp_Periodic_DstAddr, &SampleApp_epDesc,SAMPLEAPP_PERIODIC_CLUSTERID,strlen(buf) + 1,buf,&SampleApp_TransID,AF_DISCV_ROUTE,AF_DEFAULT_RADIUS ) == afStatus_SUCCESS ){}else{// Error occurred in request to send.}
}
5.进行实验:
(1)选择协调器节点,烧录到协调器中
(2)选择终端节点,烧录到终端中
结果:
二。抓包分析
需要usb串口抓包工具
1.程序
三。广播
1.协调器模块作为协调器
2.风扇节点作为路由器
3.温湿度节点作为终端节点
在应用层修改,针对各个节点(终端节点,协调器节点,路由节点)区分处理(switch)
应用层
节点封装层
四。组播,mac地址通信
组播是一种网络通信方式,用于将数据包从一个源主机发送到一个或多个目的主机。在组播通信中,源主机只需发送一次数据包,而目的主机可以是一个或多个。组播可以有效地减少网络带宽的使用,因为只有那些对数据包感兴趣的目的主机才会接收它。
在计算机网络中,MAC地址(Media Access Control address)是用于唯一标识网络设备的硬件地址MAC地址是一个48位的二进制数,通常以十六进制表示。每个网络设备都会有一个唯一的MAC地址。
MAC地址在局域网中起到了重要的作用,它被用来在同一局域网内进行数据传输和通信。当数据需要从一个设备传输到另一个设备时,发送设备会将数据包封装,并加上目标设备的MAC地址作为目的地。交换机或路由器会根据目的MAC地址将数据包转发到目标设备。
当设备从网络上接收数据时,它会检查数据包中的目的MAC地址,如果与自己的MAC地址匹配,则接收该数据包并处理;否则,将其丢弃。