感谢,分享h7 tool 模拟响应代码,添加crc-xmodem
[Lua] 纯文本查看 复制代码 -- 模拟响应通讯协议
function main(void)
uart_cfg(1, 115200, 0, 8, 1) -- 初始化串口
uart_send(1, "start")
local rx_str
local rx_len
local test
-- local bin = "\xAA\x00\x00\x01\x10\x01\x00\x00\x00\xC0\x98"
-- local resetBin = {0xAA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
while (1) do
rx_len, rx_str = uart_recive(1, 512, 100, 8)
if (rx_len > 0) then
local bin = {0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}
local sendBuf = ""
test = string.byte(rx_str, 2)
-- print_hex(rx_str)
if (test == 0) then
print("读取控制器版本号")
bin[4] = 0x01;
bin[5] = 0x10;
bin[6] = 0x01;
crc16(bin)
sendBuf = string.char(table.unpack(bin))
uart_send(1, sendBuf)
elseif (test == 4) then
print("获取校准值")
else
print("未知指令")
print_hex(rx_str)
end
end
end
end
function crc16(value)
local crc = 0
local len = #value
for k, v in pairs(value) do
crc = crc ~ (v << 8)
for j = 1, 8, 1 do
if (crc & 0x8000) ~= 0 then
crc = (crc << 1) ~ 0x1021
else
crc = crc << 1
end
crc = crc & 0xFFFF
end
end
len = len + 1
value[len] = (crc>>8) & 0xFF
len = len + 1
value[len] = crc & 0xFF
end
main()
|