终端节点发送过来的消息,抓包软件显示校验错误,
可是协调器仍然接收到了消息然后进入了AF_INCOMING_MSG_CMD,这样前后两条消息相当于重复了,
怎么才能过滤这条错误消息不让它进入应用层,或者应用层手动去掉它
case AF_INCOMING_MSG_CMD:
SampleApp_MessageMSGCB(MSGpkt);
break;
Viki Shi:
因为协议栈内部源码无法更改,因此只能在应用层处理。可以在里面加个case,判断CRC,如果无效就丢弃
更正:协议栈中已经实现,只有完整正确的数据包才会进入 AF_INCOMING_MSG_CMD,CRC校验不过不会上报
user6539205:
回复 Viki Shi:
你好,请问我怎么取到这个CRC的值
Viki Shi:
回复 user6539205:
见如上更新。请问你怎么判断AF_INCOMING_MSG_CMD中处理的包是那个CRC错误的包?seq一致吗?
user6539205:
回复 Viki Shi:
消息的载荷消息里面有一个字段是我自定义的seqNum,我把所有接收到的消息通过串口发送到电脑上,电脑上看到了前后两条相同的seqNum的消息
Viki Shi:
回复 user6539205:
修改了APS payload?据我所知TI这部分代码是封装的,恐怕无法提供对修改协议栈,以及因此而造成的问题的支持
user6539205:
回复 Viki Shi:
没有啊,我就是做了应用层的东西。底下的东西我也不会改呀
YiKai Chen:
回复 user6539205:
可以把抓包檔附上來看看嗎?
Viki Shi:
回复 user6539205:
懂了,之前是我理解错了。
从抓包截图看,第一个FCS错误的数据包,并没有收到ACK。你能提供一下完整的抓包数据吗
user6539205:
回复 YiKai Chen:
我重新做了一次,还是出现了向终端发送一次请求,终端重复回复的情况,但是这两次校验没显示错误,我使用的是packet sniffer ,发生异常的位置在 rx2013、rx2014 以及 rx2082、rx2083,怎么让终端不要重复发呢?
问题抓包.psd
user6539205:
回复 Viki Shi:
我重新做了一次,还是出现了向终端发送一次请求,终端重复回复的情况,但是这两次校验没显示错误,我使用的是packet sniffer ,发生异常的位置在 rx2013、rx2014 以及 rx2082、rx2083,怎么让终端不要重复发呢?
4807.问题抓包.psd