CRC16多项式为:G(x)=X^16+X^15+X^2+1,不过仪表中通常都是采用反转的多项式。计算CRC通常有三种方法:1)按位计算CRC
2)按字节计算CRC
3)按半字节计算CRC
三种方法,有各自优缺点。在这里就不谈论了,在网络上可以找到很多这方面的资料。
笔者在一个仪表的测试程序中,是采用第二种的查表法。以下给出代码:
'反转CRC多项式的余数表生成
Public Sub BuidCRCTab()
Dim intI, intJ As Integer
Dim bytPolyLo As Byte = &H1, bytPolyHi As Byte = &HA0
Dim bytTempLo As Byte, bytTempHi As Byte
Dim bytCRCLo As Byte, bytCRCHi As Byte
For intI = 0 To 255
bytCRCLo = intI
bytCRCHi = 0
For intJ = 0 To 7
bytTempLo = bytCRCLo
bytTempHi = bytCRCHi
bytCRCLo >>= 1
bytCRCHi >>= 1
If bytTempLo And &H1 Then
bytCRCLo = b