用lua来验证modbus协议中的ascii传输模式中的1363协议数据是否正确
2017-12-11 13:28
417 查看
local str = "";
--通过命令行传参
for i, v in pairs(arg) do
if i > 0 then
str = str .. " " .. v
end
end
--剔除传入命令的空格
str = string.sub(str, 2, -1)
--提取需要验证的字符串
local checkstr = string.sub(str, 4, string.len(str) - 14);
--提取设备实际返回的验证的字符串
local resultstr = string.sub(str, (string.len(str) - 13), -4);
--提取数据并相加
local a = 0;
for w in string.gfind(checkstr, "%S+") do
w = tonumber('0x' .. w)
a = a + w
end
b = 65536 - a
--实际数据产生的验证码,如果有字符,实际应该是大写的'A'-'Z',我没有做转换
local c = string.format("%04x", b)
print("由数据产生的验证码:" .. c)
local aa = ""
for w in string.gfind(resultstr, "%S+") do
w = "0x" .. w
a = tonumber(w)
aa = aa .. string.char(a)
w = nil
end
--设备返回的验证码
print("设备返回的验证码:" .. aa)
--[[
使用方法是 lua + 程序名 + 7E 32 31 30 31 36 30 30 30 43 30 30 34 30 31 30 30 46 43 44 45 0D
其中输入给lua的参数必须有一个空格,否则解析出错
由数据产生的验证码:fcde
设备返回的验证码:FCDE
这里的fcde应该转化为FCDE,我并没有进行转化
--]]
--通过命令行传参
for i, v in pairs(arg) do
if i > 0 then
str = str .. " " .. v
end
end
--剔除传入命令的空格
str = string.sub(str, 2, -1)
--提取需要验证的字符串
local checkstr = string.sub(str, 4, string.len(str) - 14);
--提取设备实际返回的验证的字符串
local resultstr = string.sub(str, (string.len(str) - 13), -4);
--提取数据并相加
local a = 0;
for w in string.gfind(checkstr, "%S+") do
w = tonumber('0x' .. w)
a = a + w
end
b = 65536 - a
--实际数据产生的验证码,如果有字符,实际应该是大写的'A'-'Z',我没有做转换
local c = string.format("%04x", b)
print("由数据产生的验证码:" .. c)
local aa = ""
for w in string.gfind(resultstr, "%S+") do
w = "0x" .. w
a = tonumber(w)
aa = aa .. string.char(a)
w = nil
end
--设备返回的验证码
print("设备返回的验证码:" .. aa)
--[[
使用方法是 lua + 程序名 + 7E 32 31 30 31 36 30 30 30 43 30 30 34 30 31 30 30 46 43 44 45 0D
其中输入给lua的参数必须有一个空格,否则解析出错
由数据产生的验证码:fcde
设备返回的验证码:FCDE
这里的fcde应该转化为FCDE,我并没有进行转化
--]]
相关文章推荐
- 用lua生成modbus协议中的ascii模式的1363格式(适合爱默生公司的ups或者空调之类的协议命令)
- 【转】使用TCP协议连续传输大量数据时,是否会丢包,应如何避免?
- lua 验证邮箱格式是否正确
- 【转】使用TCP协议连续传输大量数据时,是否会丢包,应如何避免?
- 使用TCP协议连续传输大量数据时,是否会丢包,应如何避免?
- JSON数据验证是否正确
- 使用TCP协议连续传输大量数据时,是否会丢包,应如何避免?
- 使用TCP协议连续传输大量数据时,是否会丢包,应如何避免
- FTP 之 ASCII & BINARY 数据传输模式
- 【转】使用TCP协议连续传输大量数据时,是否会丢包,应如何避免?
- FTP的传输有两种方式:ASCII传输模式和二进制数据传输模式
- WCF分布式安全开发实践(2):传输安全模式之基本身份验证(Windows账户密码):Transport_Basic_WSHttpBinding
- JS验证邮箱格式是否正确的代码
- 获取银行卡所属银行,验证银行卡号是否正确
- 验证手机号是否正确的正则表达式
- FTP中Binary二进制与ASCII传输模式的区别
- 回发或回调参数无效。在配置中使用 或在页面中使用 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientSc
- 【android安全】之使用ssl验证保护网络数据传输安全。
- 第5章分布式系统模式 Data Transfer Object(数据传输对象)
- [转]一个 SQL 同时验证帐号是否存在、密码是否正确