--协议格式
local str = "7E 32 31 30 31 36 30 00 00 30 30 30 30 00 00 00 00 0D"
local var = {}
local addr = ""
--通过命令行参数获取CID2的参数
for i, v in pairs(arg) do
if i > 0 then
addr = v
end
end
--把var的字符插入到var这个table中
for w in string.gfind(str, "%S+") do
table.insert(var, w);
end
--往var这个table中的合适位置插入CID2的参数
var[8] = string.format("%02x", string.byte(addr, 1))
var[9] = string.format("%02x", string.byte(addr, 2))
print("---------------------")
local newstr = ""
--校验checksum
local sum = 0
local t_begin = 2
local t_end = 13
for i = t_begin, t_end do
sum = sum + tonumber("0x" .. var[i])
end
local checksum = 65536 - sum
local code = (string.format("%04x", checksum))
--当ascii为'a'-'z'时应该转化为'A'-'Z',在这里没有做错误处理
local a = string.byte(code, 1)
if a >= 97 then
a = a - 32
end
local b = string.byte(code, 2)
if b >= 97 then
b = b - 32
end
local c = string.byte(code, 3)
if c >= 97 then
c = c -32
end
local d = string.byte(code, 4)
if d >= 97 then
d = d - 32
end
--往var这个table合适位置插入校验码
var[14] = string.format("%02x", a)
var[15] = string.format("%02x", b)
var[16] = string.format("%02x", c)
var[17] = string.format("%02x", d)
local str = ""
for k, v in pairs(var) do
str = str .. v .. " "
end
--打印出正确的协议命令
print(str)
local str = "7E 32 31 30 31 36 30 00 00 30 30 30 30 00 00 00 00 0D"
local var = {}
local addr = ""
--通过命令行参数获取CID2的参数
for i, v in pairs(arg) do
if i > 0 then
addr = v
end
end
--把var的字符插入到var这个table中
for w in string.gfind(str, "%S+") do
table.insert(var, w);
end
--往var这个table中的合适位置插入CID2的参数
var[8] = string.format("%02x", string.byte(addr, 1))
var[9] = string.format("%02x", string.byte(addr, 2))
print("---------------------")
local newstr = ""
--校验checksum
local sum = 0
local t_begin = 2
local t_end = 13
for i = t_begin, t_end do
sum = sum + tonumber("0x" .. var[i])
end
local checksum = 65536 - sum
local code = (string.format("%04x", checksum))
--当ascii为'a'-'z'时应该转化为'A'-'Z',在这里没有做错误处理
local a = string.byte(code, 1)
if a >= 97 then
a = a - 32
end
local b = string.byte(code, 2)
if b >= 97 then
b = b - 32
end
local c = string.byte(code, 3)
if c >= 97 then
c = c -32
end
local d = string.byte(code, 4)
if d >= 97 then
d = d - 32
end
--往var这个table合适位置插入校验码
var[14] = string.format("%02x", a)
var[15] = string.format("%02x", b)
var[16] = string.format("%02x", c)
var[17] = string.format("%02x", d)
local str = ""
for k, v in pairs(var) do
str = str .. v .. " "
end
--打印出正确的协议命令
print(str)