加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

VB CRC16校验源码

(2014-01-08 14:18:45)
标签:

it

比如:
Dim SendStr() As Byte
 SendStr(0) = 1 '从站号是1
 SendStr(1) = &H3 '读多个字的命令代码
 SendStr(2) = 0 '起始地址高字节
 SendStr(3) = 0 '起始地址低字节
 SendStr(4) = &H0 '数据长度高字节
 SendStr(5) = &H9 '数据长度低字节
 SendStr(6) =?校验高位
 SendStr(7) =?校验低位


'CRC校验码的计算方法,如以下函数,可以得到字节数组变量cmdstring指向的字

符串的CRC校验码。
    Function crc16(ByRef cmdstring() As Byte, ByVal j As Integer)
     Dim data As Integer
     Dim i As Integer

     Addressreg_crc = &HFFFF
     For i = 0 To j
     Addressreg_crc = Addressreg_crc Xor cmdstring(i)
     For j = 0 To 7
     data = Addressreg_crc And &H1
     If data Then
     Addressreg_crc = Int(Addressreg_crc / 2)
     Addressreg_crc = Addressreg_crc And &H7FFF
     Addressreg_crc = Addressreg_crc Xor &HA001
     Else
     Addressreg_crc = Addressreg_crc / 2
     Addressreg_crc = Addressreg_crc And &H7FFF
     End If
     Next j
     Next i
     If Addressreg_crc < 0 Then
     Addressreg_crc = Addressreg_crc - &HFFFF0000
     End If

     HiByte = Addressreg_crc And &HFF
     LoByte = (Addressreg_crc And &HFF00) / &H100
    End Function

'调用 

     Call crc16(SendStr,5)
     SendStr(6) = HiByte
     SendStr(7) = LoByte

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有