求助:关于Zmodem 通信协议里面的CRC校验问题,大牛们进来指点下啊
背景:需要用电脑上的超级终端通过串口接受和发送文件。使用Zmodem协议我用超级终端发送或接受文件,用串口助手就收数据(为了看超级终端发送的命令),有2条
1)下发命令(ZRQINIT):72 7A 0D 2A 2A 18 42 30 30 30 30 30 30 30 30 30 30 30 30 30 30 0D 8A 11
2)启动接受(ZRINIT):2A 2A 18 42 30 31 30 30 30 30 30 30 32 33 62 65 35 30 0D 8A 11
3)开始发送文件信息(ZFILE):2A 18 41 04 00 00 00 01 99 27 55 53 45 52 49 4E 46 4F 2E 64 62 66 00 39 30 32 20 31 31 36 36
37 33 32 32 32 31 32 20 30 20 30 20 31 20 39 30 32 00 18 6B A9 55 11
下面对上面的指令解释下 (1)和(2)都是16进制表头,(3)发送的文件信息是USERINFO.dbf,大小902,为2进制的报头
把上面的命令(1)和(2)整理如下:
1)ZPAD ZPAD ZDEL B //表头 ZPAD:2A(*)、ZDEL(0x18)B(0x42)
00 //命令类型后面的数据在0D之前的都是以16进制字符发送的。和上面对比的就可以看出来
00 00 00 00 00 //ZF3~ZF0
00 00 //CRC,高位低位
0D 8A 11
2)ZPAD ZPAD ZDEL B//表头 ZPAD:2A(*)、ZDEL(0x18)B(0x42)
01 //命令类型
00 00 00 00 23 //ZF3~ZF0
BE 50 //CRC,高位低位
0D 8A 11
3)发送文件信息是二进制报头
ZPAD ZDEL A //表头 ZPAD:2A(*)、ZDEL(0x18)A(0x41)
04 //命令类型
00 00 00 01 //ZF3~ZF0
99 27 //CRC,高位低位
额,解释的挺长的。现在的问题就是我怎么也把那些CRC的值算不出来。所以请问下大牛们,这个CRC是怎么算出来的,在Zmodem协议里面 原来做过,都忘了 回复【1楼】comway 移动狗
-----------------------------------------------------------------------
额。。。我搞了两天了。数据子包的校验就是不对。报头的校验可以了 后面18不参与校验就可以了。
页:
[1]