C
crazycock
Unregistered / Unconfirmed
GUEST, unregistred user!
同时请关注另外一个帖子:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1385808
===========================================================
下面的字符串是某个设备发出的指令,需要在后面计算效验位,但是按照它的协议说的
去算,得不到它自己算出来的效验码,到底怎么回事呢?
16,2,6,0,6,0,1,64,16,3,(241,36),复位
16,2,6,0,6,0,1,8,16,3,(49,144),静音
16,2,6,0,6,0,1,32,16,3,(244,105),隔离i
前面的10个字符是命令串,后面的两位是它算出来的效验码(上面的内容都是直接测出来的,
并非我算出来的),我想知道它到底是怎么算出来的?
参考资料:
Byte Order DLE STX Command Network ID Zone ID Sector ID
No Bytes 1 1 1 1 1 1
Data Length Data DLE ETX CRC
1 [0-128] 1 1 2
The CRC used is CRC-16 (CCiTT).
The CRC includes everything from the first DLE to the ETX..
Byte stuffing of DLE: Any DLE character is followed by either an STX, ETX or
another DLE. If a DLE character is found in the data stream then an addition DLE character is inserted. The byte stuffing occurs between the DLE STX and the DLE ETX.
Predefined characters:
STX 02Hex
ETX 03Hex
ACK 06Hex
NAK 15Hex
DLE 10Hex
我想问的问题是:
(1)估计这个设备采用的CRC算法的多项式是什么?$1021?还是$F005?还是其它的?
(可是我从$1一直猜到$FFFF都得不到它自己算出来的结果)
// $1021, CRC-CCITT, X16+X12+X5+1
// $F005, CRC-16, X16+X15+X2+1
(2)大家用自己的效验算法,根据$1021和$F005来计算,我给的3个例子,你们都算出来什么效验码了?
我算出来的三条分别是
9CD9(多项式为$1021),4E10(多项式为$F005);
5515(多项式为$1021),8131(多项式为$F005);
F07F(多项式为$1021),AF0A(多项式为$F005);
希望大家也能把自己的贴出来,看看得多少,因为我用过好几个人的CRC效验程序了,都号称正在使用的,
没有问题,但是,算出来的结果都不一样,不知道谁对谁错了。
(3)哪位好心人,如果有时间,给我发一个你们的CRC-16(CCITT)的效验程序,让我研究一下。我的信箱
qinmin@371.net,如果需要看我的程序,请到这里下载。
http://asp2.6to23.com/crazycock/tmp/crc.rar(我使用winrar3压缩的)
要是没有装WinRar的朋友,到这里下
http://asp2.6to23.com/crazycock/tmp/crc.exe
------------------
谢谢大家。
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1385808
===========================================================
下面的字符串是某个设备发出的指令,需要在后面计算效验位,但是按照它的协议说的
去算,得不到它自己算出来的效验码,到底怎么回事呢?
16,2,6,0,6,0,1,64,16,3,(241,36),复位
16,2,6,0,6,0,1,8,16,3,(49,144),静音
16,2,6,0,6,0,1,32,16,3,(244,105),隔离i
前面的10个字符是命令串,后面的两位是它算出来的效验码(上面的内容都是直接测出来的,
并非我算出来的),我想知道它到底是怎么算出来的?
参考资料:
Byte Order DLE STX Command Network ID Zone ID Sector ID
No Bytes 1 1 1 1 1 1
Data Length Data DLE ETX CRC
1 [0-128] 1 1 2
The CRC used is CRC-16 (CCiTT).
The CRC includes everything from the first DLE to the ETX..
Byte stuffing of DLE: Any DLE character is followed by either an STX, ETX or
another DLE. If a DLE character is found in the data stream then an addition DLE character is inserted. The byte stuffing occurs between the DLE STX and the DLE ETX.
Predefined characters:
STX 02Hex
ETX 03Hex
ACK 06Hex
NAK 15Hex
DLE 10Hex
我想问的问题是:
(1)估计这个设备采用的CRC算法的多项式是什么?$1021?还是$F005?还是其它的?
(可是我从$1一直猜到$FFFF都得不到它自己算出来的结果)
// $1021, CRC-CCITT, X16+X12+X5+1
// $F005, CRC-16, X16+X15+X2+1
(2)大家用自己的效验算法,根据$1021和$F005来计算,我给的3个例子,你们都算出来什么效验码了?
我算出来的三条分别是
9CD9(多项式为$1021),4E10(多项式为$F005);
5515(多项式为$1021),8131(多项式为$F005);
F07F(多项式为$1021),AF0A(多项式为$F005);
希望大家也能把自己的贴出来,看看得多少,因为我用过好几个人的CRC效验程序了,都号称正在使用的,
没有问题,但是,算出来的结果都不一样,不知道谁对谁错了。
(3)哪位好心人,如果有时间,给我发一个你们的CRC-16(CCITT)的效验程序,让我研究一下。我的信箱
qinmin@371.net,如果需要看我的程序,请到这里下载。
http://asp2.6to23.com/crazycock/tmp/crc.rar(我使用winrar3压缩的)
要是没有装WinRar的朋友,到这里下
http://asp2.6to23.com/crazycock/tmp/crc.exe
------------------
谢谢大家。