5.zigbee的开发,串口putchar重定向(使用print),单播实验,usb抓包实验

一。实验:单播

实验要求:

实现终端定时向协调器发送给“好好学习”字符串,并且从终端打印出来。

要求:  

指定端点为 0x0005            

指定簇为     0x0003

1.进入应用层SampleApp.c中,串口的重定向

5.zigbee的开发,串口putchar重定向(使用print),单播实验,usb抓包实验_第1张图片

报错:函数没有原型

解决:

5.zigbee的开发,串口putchar重定向(使用print),单播实验,usb抓包实验_第2张图片

2.设置为单播模式

查找方法:通过右键进入定义去寻找

5.zigbee的开发,串口putchar重定向(使用print),单播实验,usb抓包实验_第3张图片

Addr16Bit

3.指定断电修改为5

5.zigbee的开发,串口putchar重定向(使用print),单播实验,usb抓包实验_第4张图片

4.以下两个是终端节点协调器节点的数据处理

5.zigbee的开发,串口putchar重定向(使用print),单播实验,usb抓包实验_第5张图片

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;
  }
}

5.zigbee的开发,串口putchar重定向(使用print),单播实验,usb抓包实验_第6张图片

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)选择协调器节点,烧录到协调器中

5.zigbee的开发,串口putchar重定向(使用print),单播实验,usb抓包实验_第7张图片

(2)选择终端节点,烧录到终端中

5.zigbee的开发,串口putchar重定向(使用print),单播实验,usb抓包实验_第8张图片

结果:

5.zigbee的开发,串口putchar重定向(使用print),单播实验,usb抓包实验_第9张图片

二。抓包分析

需要usb串口抓包工具

1.程序

5.zigbee的开发,串口putchar重定向(使用print),单播实验,usb抓包实验_第10张图片

5.zigbee的开发,串口putchar重定向(使用print),单播实验,usb抓包实验_第11张图片

5.zigbee的开发,串口putchar重定向(使用print),单播实验,usb抓包实验_第12张图片

三。广播

1.协调器模块作为协调器

2.风扇节点作为路由器

3.温湿度节点作为终端节点

在应用层修改,针对各个节点(终端节点,协调器节点,路由节点)区分处理(switch)

应用层

5.zigbee的开发,串口putchar重定向(使用print),单播实验,usb抓包实验_第13张图片

节点封装层

5.zigbee的开发,串口putchar重定向(使用print),单播实验,usb抓包实验_第14张图片

四。组播,mac地址通信

        组播是一种网络通信方式,用于将数据包从一个源主机发送到一个或多个目的主机。在组播通信中,源主机只需发送一次数据包,而目的主机可以是一个或多个。组播可以有效地减少网络带宽的使用,因为只有那些对数据包感兴趣的目的主机才会接收它。

        在计算机网络中,MAC地址(Media Access Control address)是用于唯一标识网络设备的硬件地址MAC地址是一个48位的二进制数,通常以十六进制表示。每个网络设备都会有一个唯一的MAC地址。

        MAC地址在局域网中起到了重要的作用,它被用来在同一局域网内进行数据传输和通信。当数据需要从一个设备传输到另一个设备时,发送设备会将数据包封装,并加上目标设备的MAC地址作为目的地。交换机或路由器会根据目的MAC地址将数据包转发到目标设备。

当设备从网络上接收数据时,它会检查数据包中的目的MAC地址,如果与自己的MAC地址匹配,则接收该数据包并处理;否则,将其丢弃。

你可能感兴趣的:(网络)