自动化¶
重复劳动可以写成脚本:批量编辑、导出、对比,甚至简单的 HTTP 请求。
命令面板¶
Ctrl+K —— 应用中的每个命令都出现在一个可搜索的列表里,输入命令名的一部分
即可。即使不熟悉菜单,这也是找到某项功能最快的方式。
Lua 引擎¶
应用内嵌 Lua 5.4,并通过 sol2 把 C++ API 绑定给脚本。用
Datalog ▸ 运行 Lua 脚本 执行。
可用能力¶
- 读取工程属性,
- 读写字节、地址换算,
- 标定图搜索、查找替换、导入导出,
- 添加注释、相似性搜索,
- HTTP 请求,
- 打开对话框、调用界面。
安全限制¶
脚本在工作线程中运行,只能通过受控调用返回界面。引擎禁用了:
os.execute、os.exit、io.popen、package.loadlib、dofile、loadfile、loados.remove、os.rename、os.tmpname(限于已批准的路径)
首次运行新脚本需要确认,信任决定按脚本的 SHA-256 指纹保存。
示例¶
-- 列出名称中包含 "KRKTE" 的标定图
local maps = searchMaps("KRKTE")
for _, m in ipairs(maps) do
Log(m.name .. " @ " .. m.address)
end
已知空白¶
Lua checksum DSL、projectImportCsvJson、projectMail、部分 WinOLS 专有的
权限与车辆数据操作,以及加密的 .luax 加载均未实现。
Datalog¶
Datalog ▸ 打开 log 可打开 CSV 记录,在通道树中选择信号并查看时间序列曲线。
Datalog ▸ 对比 log 可叠加比较两段记录。
批量工作的优先顺序¶
- 外部工具是否已经能做?
- 应用的打包功能是否足够?
- 命令面板能否一步解决?
- 只有这时才写 Lua 脚本。
写脚本之前¶
- 不要把手工劳动重复下去:先打包(见打包)。
- 只为真正重复的多步骤工作写脚本。
- 把脚本纳入版本控制,并注释它涉及的标定图地址。