modibus 脚本下载

weixin_39820835 2019-05-08 09:00:16
modibus脚本

'crc16校验代码
Public Function CRC16(ByVal SendStr As String) As String
Dim CRC16Lo As Byte, CRC16Hi As Byte 'CRC寄存器
Dim CL As Byte, CH As Byte '多项式码&HA001
Dim SaveHi As Byte, SaveLo As Byte
Dim i As Integer, j As Integer
Dim Flag As Intege
相关下载链接://download.csdn.net/download/fdzhj/2133657?utm_source=bbsseo
...全文
39 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
modibus脚本 'crc16校验代码 Public Function CRC16(ByVal SendStr As String) As String Dim CRC16Lo As Byte, CRC16Hi As Byte 'CRC寄存器 Dim CL As Byte, CH As Byte '多项式码&HA001 Dim SaveHi As Byte, SaveLo As Byte Dim i As Integer, j As Integer Dim Flag As Integer Dim StrLen As Integer Dim TempStr As String Dim Check() As Byte If (SendStr = "") Then Exit Function TempStr = "" For i = 1 To Len(SendStr) TempStr = Mid(Replace(SendStr, " ", ""), i, 1) '将字符串中的空格去掉 Next i StrLen = Len(SendStr) If (StrLen Mod 2) > 0 Then Exit Function '2个字母或数字为一个字节 StrLen = StrLen / 2 - 1 ReDim Check(StrLen) For i = 0 To StrLen Check(i) = Val("&H" + Mid(SendStr, i * 2 + 1, 2) + "&") Next i CRC16Lo = &HFF CRC16Hi = &HFF CL = &H1 CH = &HA0 For i = 0 To UBound(Check) CRC16Lo = CRC16Lo Xor Check(i) '每一个数据与CRC寄存器进行异或 For Flag = 0 To 7 SaveHi = CRC16Hi SaveLo = CRC16Lo CRC16Hi = CRC16Hi \ 2 '高位右移一位 CRC16Lo = CRC16Lo \ 2 '低位右移一位 If ((SaveHi And &H1) = &H1) Then '如果高位字节最后一位为1 CRC16Lo = CRC16Lo Or &H80 '则低位字节右移后前面补1 End If '否则自动补0 If ((SaveLo And &H1) = &H1) Then '如果LSB为1,则与多项式码进行异或 CRC16Hi = CRC16Hi Xor CH CRC16Lo = CRC16Lo Xor CL End If Next Flag Next i Dim ReturnData(1) As Byte ReturnData(0) = CRC16Lo 'CRC低位 ReturnData(1) = CRC16Hi 'CRC高位 CRC16 = SendStr & Hex(ReturnData(0)) & Hex(ReturnData(1)) End Function

12,907

社区成员

发帖
与我相关
我的任务
社区描述
CSDN 下载资源悬赏专区
其他 技术论坛(原bbs)
社区管理员
  • 下载资源悬赏专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧