ppp 协议中的crc校验问题

zb922 2007-01-12 10:38:31
我现在正开发一个小部件,功能是拨号16300上网发udp数据包。现在被crc卡住了,
还请高手指点.
从MODEM接收到的数据:
7E FF 7D 23 C0 21 7D 21 3A 7D 20 7D 39 7D 21

7D 24 7D 25 DC 7D 22 7D 26 7D 20 7D 2A 7D 20

7D 20 7D 27 7D 22 7D 28 7D 22 7D 31 7D 24 7D

25 DC 7D 33 7D 23 7D 21 F9 88 7E

恢复出原来的数据:
7E FF 03 C0 21 01 3A 00 19 01

04 05 DC 02 06 00 0A 00

00 07 02 08 02 11 04

05 DC 13 03 01 F9 88 7E

数据整理:
7E
FF 03 C0 21 01 3A 00 19

01 04 05 DC
02 06 00 0A 00 00
07 02
08 02
11 04 05 DC
13 03 01

F9 88 ;CRC校验码(CRC-CCITT 1021 ) 我自己用计算工具计算出的是4BBB ,不知为什么?
7E
现在就是这个crc一直算不正确.搞了3天,郁闷.....
...全文
857 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zb922 2012-09-09
  • 打赏
  • 举报
回复
CRC16校验有时会让人困惑,主要是因为不同的CRC有细分项。我罗列CRC如下,希望对大家有用。
CRC4/5/6/7/8/32这里就不讨论了。

Name Poly Init RefIn RefOut XorOut Alias 多项式

CRC16/IBM 0X8005 0X0000 True True 0x0000 ARC LHA x16/x15/x2/1
CRC16/MAXIM 0X8005 0X0000 True True 0xFFFF x16/x15/x2/1
CRC16/USB 0X8005 0XFFFF True True 0xFFFF x16/x15/x2/1
CRC16/MODBUS 0X8005 0XFFFF True True 0x0000 x16/x15/x2/1
CRC16/CCITT 0X1021 0X0000 True True 0x0000 KERMIT CCITT-TRUE x16/x12/x5/1
CRC16/CCITT-FALSE 0X1021 0XFFFF FALSE FALSE 0x0000 x16/x12/x5/1
CRC16/X25 0X1021 0XFFFF True True 0xFFFF x16/x12/x5/1
CRC16/XMODEM 0X1021 0X0000 FALSE FALSE 0x0000 ZMODEM ACORN x16/x12/x5/1

CRC16/DNP 0X3D65 0X0000 TRUE TRUE 0xFFFF x16/x13/x12/x11/x10/x8/x6/x5/x2/1





UltraBejing 2008-05-01
  • 打赏
  • 举报
回复
好像没那么简单,呵呵.
zb922 2007-05-19
  • 打赏
  • 举报
回复
已经解决
yeLongBox 2007-01-12
  • 打赏
  • 举报
回复
"F9 88" 所对应的应该是 原始 Modem数据中的有效信息部分的 CRC 校验码,应该CRC是链路层的东西,它的主要作用是检测接收到的数据的正确性,具体接收到的数据如何理解,那就是协议层的事情了,以上是我个人理解,仅供参考。

1,068

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧