Foxtable(狐表)用户栏目专家坐堂 → CRC-16/modbus


  共有2433人关注过本帖树形打印复制链接

主题:CRC-16/modbus

帅哥哟,离线,有人找我吗?
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106178 积分:540007 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/12/5 10:50:00 [显示全部帖子]

全局代码
Public Function ToModbus(ByVal byteData As Byte()) As Byte()
Dim CRC As Byte() = New Byte(1) {}
Dim wCrc As UInt16 = &HFFFF
For i As Integer = 0 To byteData.Length - 1
    wCrc = wCrc Xor Convert.ToUInt16(byteData(i))
    For j As Integer = 0 To 8 - 1
        If (wCrc And &H0001) = 1 Then
            wCrc = wCrc >> 1
            wCrc = wCrc Xor &HA001
        Else
            wCrc = wCrc >> 1
        End If
    Next
Next
CRC(1) = CByte((wCrc And &HFF00) >> 8)
CRC(0) = CByte((wCrc And &H00FF))
Return CRC
End Function

命令窗口
Dim bt() As Byte = {&H08,&H00}
Dim res() As Byte
res = ToModbus(bt)
Output.Show(res(0))
Output.Show(res(1))
Output.Show(&H70)

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106178 积分:540007 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/12/5 11:40:00 [显示全部帖子]

结果只有2个,哪来的第三个?

Dim bt() As Byte = {&H02,&H05,&H00,&H1e,&Heb,&H8c,&H01}
Dim res() As Byte
res = ToModbus(bt)
Output.Show(res(0))
Output.Show(res(1))
Output.Show(&H89)
Output.Show(&HEB)

 回到顶部