字符数组的CRC校验值怎么转换成16进制数据的的CRC校验值?

例如:我要计算modbus一帧的CRC校验字,怎么算出来的校验字命令帧发送后,设备才能响应?

请先 登录 后评论

1 个回答

李炜镪

参考代码如下:

-- 要传输的modbus数据modbus_data
local modbus_data = "\1\3\0\112\0\5" -- "\1\3\0\112\0\5"表示输入的数据相当于C的数组{0x01, 0x03, 0x00, 0x70, 0x00, 0x05}
-- 计算CRC
local modbus_crc_value = crypto.crc16("MODBUS", modbus_data) -- modbus_crc_value = 0x1284

-- 如果对端是标准modbus协议,大端封包
local modbus_crc_data = pack.pack('>H', modbus_crc_value)
-- 如果对端不是标准协议,小端封包
-- local modbus_crc_data = pack.pack('<H', modbus_crc_value)

-- 如果传输通道为串口1,就通过串口1发出modbus数据与crc
uart.write(1, modbus_data .. modbus_crc_data)

请先 登录 后评论
  • 1 关注
  • 0 收藏,3068 浏览
  • 守望 提出于 2018-08-31 12:11

相似问题