Skip to content

Lua 自定义协议 ​

遇到私有协议不用肉眼数字节:写一个 Lua 脚本实现 poll() / decode() 契约,QDebugTool 负责收发调度、超时重试、参数表映射与波形绑定。脚本运行在沙箱内(限额保护),写崩了也不会拖垮软件。

脚本编辑器

协议脚本契约 ​

钩子作用
poll()按轮询周期定时调用,返回要下发的报文
decode解析接收流,输出到寄存器区 / 通道区

参数表行的地址类型:4x = 脚本输出寄存器区,3x = 脚本输出流通道区——脚本解出的数据直接进参数表、进波形、进组态,和 Modbus 行没有任何区别。

新建连接的「自定义协议」页可选脚本、设轮询周期与超时重试;「导入…」把库外 .lua 复制进脚本库。

脚本编辑器 ​

  • 语法高亮、行号、标题栏脏标记 ●
  • 查找/替换/跳转 Ctrl+F / Ctrl+H / Ctrl+G,代码补全 Ctrl+Space
  • 右侧工具箱内置 API 文档:hex 编解码、CRC、SHA-256 等宿主 API,点击查看/插入
  • 测试面板:直接调用脚本的 poll() / decode() 看返回,离线调试协议逻辑
  • 外部修改检测:脚本被其他编辑器改动时自动重载或弹冲突条,提示运行中的设备需重连生效

脚本库两级结构 ​

级别路径作用域
项目级<项目目录>/scripts/随工程走,拷走工程即带走
全局%APPDATA%/IndustrialDebugTool/IndustrialDebugToolQml/scripts/本机所有工程可用

同名时项目级优先。.proj 工程内嵌脚本内容快照,跨机器打开缺文件时按快照自动还原。

删除注意

项目树删除脚本会同时删除磁盘上的 .lua 文件,不可恢复,请先行备份。

组态脚本(事件总线) ​

脚本首行加 @type:hmi 即为组态脚本,工程中最多指定一个「组态主脚本」(项目树右键 → 设为组态主脚本),作为 HMI 事件宿主。支持事件:onStart/onStop、元件 press/release/valueChanged、screenOpen/screenClose、varChanged、三种定时器。主脚本属性对话框提供总开关 / 订阅清单 / 变量订阅 / 诊断 / REPL 求值。

快速体验 ​

打开 examples/modbus脚本互测.proj:用 Lua 手写的 Modbus 主从协议走 TCP 回环互测,脚本注释完整,是自定义协议的最佳入门模板。