跳转至

自动化

重复劳动可以写成脚本:批量编辑、导出、对比,甚至简单的 HTTP 请求。

命令面板

Ctrl+K —— 应用中的每个命令都出现在一个可搜索的列表里,输入命令名的一部分 即可。即使不熟悉菜单,这也是找到某项功能最快的方式。

Lua 引擎

应用内嵌 Lua 5.4,并通过 sol2 把 C++ API 绑定给脚本。用 Datalog ▸ 运行 Lua 脚本 执行。

可用能力

  • 读取工程属性,
  • 读写字节、地址换算,
  • 标定图搜索、查找替换、导入导出,
  • 添加注释、相似性搜索,
  • HTTP 请求,
  • 打开对话框、调用界面。

安全限制

脚本在工作线程中运行,只能通过受控调用返回界面。引擎禁用了:

  • os.execute、os.exit、io.popen、package.loadlib、dofile、 loadfile、load
  • os.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 可叠加比较两段记录。

批量工作的优先顺序

  1. 外部工具是否已经能做?
  2. 应用的打包功能是否足够?
  3. 命令面板能否一步解决?
  4. 只有这时才写 Lua 脚本。

写脚本之前

  1. 不要把手工劳动重复下去:先打包(见打包)。
  2. 只为真正重复的多步骤工作写脚本。
  3. 把脚本纳入版本控制,并注释它涉及的标定图地址。