帧长度超过127后,如何进行拆包
时间:10-02
整理:3721RD
点击:
zstack一帧最大长度是127,在帧长度超过127字节后需要进行拆包,AF_DataRequest()函数的数据长度参数超过时,zstack是否会自动进行拆包?我这边帧长超过127后就不发包了,是否需要进行某些设置来使能拆包? 接收端的程序中,是否需要进行一些动作来组包,还是说组包有zstack自动完成了,用户完全不必理会?
我这边的测试如下:
协调器发送数据包,终端接收并将数据用串口输出到PC(串口输出数据长度参数有调整过,输出150+个数据时没有问题的)。在帧长度是126的时候,PC上是能够看到接收到的数据的(126 byte);在帧长度是127的时候,终端就无法收到数据了。用Packet Sniffer进行抓包,发现完全没有真正的数据包在进行发送。
ZIGBEE_FRAGMENTATION已定义。
如果使能了分包发送功能,ZIGBEE_FRAGMENTATION,那么协议栈自动会做分包的处理。同样接收端也是把分包的数据组装好以后往应用层传输。用户可以不理会。
你说的帧长度是指应用层还是整个数据帧?
你好,谢谢回复,127是指的物理层的载荷。
问题今天找到了,是单播、广播造成的,之前我是协调器广播发送,终端接收,发现物理层数据不能超过127,且无法拆包。后来我改成用终端单播发送,协调器接收,试了下发送500字节,没有问题。
广播确实不法拆包吗,zstack的Documents里面也都没有讲到。
你好,我已经定义了ZIGBEE_FRAGMENTATION,在ZSTACK中还需要做什么操作才能实现自动分包?
@Harry
不需要直接发就可以了!