永发信息网

modbus中lrc校验 发送字串为{“:”,0x30,0x31,0x30,0x33,0x30,0x30,0x31,0x

答案:3  悬赏:80  手机版
解决时间 2021-03-23 04:29
  • 提问者网友:了了无期
  • 2021-03-22 11:46
modbus中lrc校验 发送字串为{“:”,0x30,0x31,0x30,0x33,0x30,0x30,0x31,0x32,0x30,0x30,0x30,0x34}
最佳答案
  • 五星知识达人网友:大漠
  • 2021-03-22 12:53
你先把十六进制的数转换成 8bit的字符 相加取反加一
例如 0x300x31对应 01
0x300x33 03
0x300x30 00
0x310x32 12
0x300x30 00
0x300x34 04
01+02+00+12+00+04=1A 取反E5 加一 等E6
希望对你有帮助
全部回答
  • 1楼网友:低音帝王
  • 2021-03-22 14:20
然后?

有 计算 校验码 的 程序吧

其实,程序里 设计 的 有,会自动计算 传输的
  • 2楼网友:怙棘
  • 2021-03-22 14:09
刚好 有个 VB 计算 程序

Function Chr_lrc(Dats As String) As String '*ASCII方式的LRC校验计算
Dim c As Integer
Dim l As Integer
Dim c_data As String
Dim d_lrc As Integer
Dim h_lrc As String

c = 0
l = Len(Dats)
For c = c + 1 To l
c_data = Mid$(Dats, c, 2)
d_lrc = d_lrc + Val("&H" + c_data)
c = c + 1
Next c
If d_lrc > &HFF Then
d_lrc = d_lrc Mod &H100
End If
h_lrc = Hex(&HFF - d_lrc + 1)
If Len(h_lrc) > 2 Then
h_lrc = Mid(h_lrclen(h_lrc) - 1, 2)
End If
Chr_lrc = Right("00" + h_lrc, 2) '*协议规范要求校验和必须是两位,所以用取右侧两位的方式

End Function追问麻烦你计算下,我是关心我计算方法是不是错了,谢谢。追答这个 程序 计算 的 也是 E6追问是两字节两字节相加么?取右侧两位是什么方式?另外你把“”里的:号算上了么?按协议貌似是不算的。另外,低字节加出来是0bH,反补后是05H啊。追答同学,上面不是有 程序嘛
呵呵追问VB没学过,看不懂,况且算法弄清楚,计算器也能算出来。我计算结果对不上,但是又不明白为什么对不上,所以,你要是愿意能不能讲讲E6是怎么计算出来的?追答VB 不难理解 的

很容易上手
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯