我用CH395Q做服务器时,客户端发指令过来,CH395Q自动回复了ACK,如下图IP地址52是CH395Q,211是电脑,但为什么会多了几个字节,而且是我要发的数据的前几个字节,每次都这样,不知道什么原因,求赐教。
经过搜资料发现,这个ACK帧是因为回复的字数不够46字节,然后自动补了6个字节,也就是Trailer,但这个Trailer为什么是我将要发的数据的前6个字节呢,为什么不是为00呢?这个能改成默认为00的吗?现在电脑把这6个字节识别成我要发的数据了,导致跟后面要发的数据连在一起识别而认为数据错误了。
经过测试发现,这个Trailer数据是我上次发送的数据的前6个字节,而不是后面将要发送的数据的前6个字节,这是为什么呢?这个能设置吗?
我测试又发现,如果通信时间间隔超过半分钟左右,Trailer数据就会自动变成00,但如果在半分钟内进行通信并回复,则会自动把Trailer数据填充成上一次发送的数据的前6个字节。那是不是有可能做什么操作能把Trailer数据变成00呢。
您好,CH395这款芯片暂时还没有对底层数据帧格式修改的命令接口。再请问一下,您使用过程这种应答的方式会对您的应用上产生什么样的影响了?
回复5楼:我们这边测试跟电脑后台通信,后台收到这帧trailer数据跟我下一帧发的数据连在一起了,因为trailer是上次回的数据前6个字节,刚好识别出帧头就认为是一帧正常数据,但数据长度和校验都不过,导致识别错误把后面那帧正确的数据都丢掉了。
数据补帧述非固定,目前不支持指定和修改。