--协议格式
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)

用lua生成modbus协议中的ascii模式的1363格式(适合爱默生公司的ups或者空调之类的协议命令)相关推荐

  1. C#的HTTP协议中POST与GET的区别

    引言 HTTP协议我想任何IT人士都耳熟能详了,大家都能说出个所以然来.但是如果我问你HTTP协议的请求方法有哪些?POST与GET的差异?GET或POST传送数据量的大小有限制吗?HTTP响应的状态 ...

  2. HTTP协议头部与Keep-Alive模式详解

    HTTP协议头部与Keep-Alive模式详解 HTTP协议头部与Keep-Alive模式详解 - 玩命写博客 - 博客频道 - CSDN.NET HTTP协议头部与Keep-Alive模式详解 20 ...

  3. modbus 协议中,操作数01(读线圈状态)对应的地址是怎么定义的?是位地址还是寄存器地址?

    modbus 协议中,操作数01(读线圈状态)对应的地址是怎么定义的?是位地址还是寄存器地址?  我来答 分享 举报 1个回答 #公告# 关于优质视频活动排行榜提前发放的处理公告 1丝冷风  201 ...

  4. Modbus 的RTU、ASCII、TCP解析

    参考: Modbus 的RTU.ASCII.TCP傻傻搞不清楚?一文最全解读 MODBUS通讯协议完整介绍 1. 背景 早在1971年,Modicon公司首次推出了Modbus协议,Modbus RT ...

  5. modbus rtu 调试软件_一文最全解读Modbus 的RTU、ASCII、TCP

    导 读 ( 小库 ) 多年来没少调试施耐德PLC,因此Modbus-RTU.Modbus-TCP等协议都经常接触,但一直都没有认真总结一下,借这篇文章总结一下. 01 术语解读 1 word =2 b ...

  6. Modbus 的RTU、ASCII、TCP傻傻搞不清楚?一文最全解读

    文章来源:FreeBuf COM 写在面前 大家好,我是小智,智能制造之家号主~ 说到数字化,工业网络,数据通讯是我们永远迈不开的话题~ 前面给大家介绍了工业通讯当中各种各样的协议.接口等: 最全整理 ...

  7. HTTP协议中的Content-Encoding

    HTTP协议中的Content-Encoding 主要内容 1.Content-Encoding是什么     2.内容编码格式gzip和deflate Content-Encoding是什么 Acc ...

  8. 编写一个字节数的rtu C语言校验程序,Modbus通信协议中CRC校验的快速C语言算法

    Modbus通信协议中CRC校验的快速C语言算法 2004年第11期 福 建 电 脑 63 Modbus通信协议中CRC校验的快速C语言算法 孟开元 (西安石油大学计算机学院陕西西安710065) [ ...

  9. IKEv2协议中的EAP-TLS认证处理流程

    以下根据strongswan代码中的testing/tests/ikev2/rw-eap-tls-only/中的测试环境,验证一下IKEv2协议的EAP-TLS认证过程.拓扑结构如下: 拓扑图中使用到 ...

最新文章

  1. Ubuntu14.04上安装TensorRT 2.1操作步骤
  2. 亲爱的,我是一条Linux运维技术学习路径呀。
  3. Angular路由开发的一个实际例子
  4. Linux中断 - GIC代码分析
  5. 特征向量的线性无关性
  6. ting56 下载 有声小说 超禁忌游戏
  7. 爬取新浪微博(一)Scrapy入门教程
  8. Shiro-02-subject与session
  9. 计算机开机最快设置,w7提高开机速度如何操作_win7电脑怎么开机更快
  10. 电力需求侧管理及智能电力监控技术在电子设备制造行业错峰限电中的应用
  11. 什么是PPI,有什么作用?
  12. PMP VS MBA:为什么我劝你别浪费钱读MBA
  13. GAMES101笔记_Lec01_计算机图形学概述 Overview of Computer Graphics
  14. 解决gradle下找不到符号错误
  15. 2021-5月14日-今日收获
  16. 瞎谈干净架构(clean architecture)
  17. 门头沟的《一出好戏》
  18. CodeSys轴控指令使用方法
  19. Go语言占位符的使用
  20. x64dbg 调试 EXCEPTION_ACCESS_VIOLATION C0000005

热门文章

  1. 静态库 DIY ar crv
  2. python体测成绩数据分析_python数据分析实例(三) 运动员数据
  3. LiveGBS国标GB/T28181流媒体平台接入GB28181设备作为下级支持级联到共享到海康大华宇视等第三方国标平台支持对接政务公安内网国标视频平台
  4. 基于 RT-Thread 的智能家居 DIY 教程连载(3)——文件系统灵活用
  5. nginx访问静态文件不下载
  6. access数据库常用操作
  7. docker技术学习
  8. Leetcode2086. 从房屋收集雨水需要的最少水桶数(medium)
  9. GitHub 十个最受欢迎的 React 相关库
  10. C-TPAT认证辅导,CTPAT认证可以减少了CBP检查次数