关于CRC的问题,急急急急急急急急急急急急急急急急急急急急急急急……(200分)

  • 主题发起人 crazycock
  • 开始时间
好消息,这是厂家给的效验公式,但是我还没有能够算出和测量的数据相同的CRC值,请大家帮忙看看。
Here is the C code necessary to generate a CRC-16 CCiTT.

unsigned short CRC ( const char *buffer, int buflen )
{
unsigned crc = 0;
int q;

for ( int i = 0; i < buflen; i++ )
{
q = ( crc ^ buffer[ i ] &amp; 15;
crc = ( crc >> 4 ) ^ ( q * 4225 );
q = ( crc ^ ( buffer[ i ] >> 4 )) &amp; 15;
crc = ( crc >> 4 ) ^ ( q * 4225 );
}
return (unsigned short ) crc;
}

The packet format is as follows:

Byte |
Order: | DLE | STX | Command | Network ID | Zone ID | Sector ID | Data | DLE | ETX | CRC |
======|===================================================================|
Num of | 1 | 1 | 1 | 1 | 1 | 1 | [0 -128]| 1 | 1 | 2 |

The data transmission is big-endian (for smoke level the Hi byte is sent first followed by the Lo byte).
 
谢谢大家,收工收工,问题解决了,里面有大家的功劳,也有我的小聪明[:D]
厂家的效验确实是我最后发的那段代码,不过,才发现,里面果然有蹊跷的地方,想知道么?给我来信吧[^]
resun朋友,作为你热情帮助的回报,我会把问题解决的最终结论发到你信箱里的,再次谢谢你。[:)]
其它朋友,没有帮上忙,但是up有功,给点分。
 
顶部