Skip to content

NEVSTOP-LAB/CSMScript-Lite

Repository files navigation

CSMScript-Lite

English | 中文

GitHub all releases

CSMScript-Lite 是一款基于 可通信状态机(CSM) 框架的轻量级脚本执行引擎,用于执行灵活的 CSM 测试脚本,实现自动化测试工作流。同时,它也是展示 CSM 框架能力的实践示例。其设计理念类似于 NI TestStand。

此项目包括:

  • CSMScript-Lite Library — 轻量级 CSM 脚本执行引擎,其本身也是一个基于 CSM 实现的模块。
    • Engine:核心执行引擎,负责解析并运行 CSM 脚本,管理测试状态与结果。
    • UI(ExecutionView):用户界面,提供脚本管理、执行控制和结果查看功能。
    • App:示例应用程序,展示如何使用 CSMScript 库执行脚本。
  • 实例工程 — 展示如何将 CSMScript-Lite 与其他 CSM 模块结合,实现脚本驱动的自动化测试。

CSMScriptApp

依赖

功能说明

脚本执行

支持全部 CSM 命令,包括同步消息、异步消息、广播订阅等。完整语法请参考 CSM 框架文档

返回值捕获

通过 => 变量名 语法,将指令的返回值保存到脚本临时变量空间中,供后续指令使用:

message1 >> arguments -@ module1 => returnValueVar
message2 >> ${returnValueVar} -@ module2

Note

CSM - Run Script.vi 中同样支持此语法,行为完全一致。

扩充指令

CSMScript 内置了一套超出标准 CSM 命令集的扩充指令,语法与 CSM 指令相同:指令 >> 参数,指令名称大小写不敏感。

类别 指令 说明
跳转 GOTO 跳转到指定的 <anchor>
自动错误处理 AUTO_ERROR_HANDLE_ENABLE 开启或关闭自动错误处理
自动错误锚点 AUTO_ERROR_HANDLE_ANCHOR 设置错误跳转锚点(默认:<cleanup>
等待 WAITSleep 等待指定时长,支持在一个表达式中混合使用 minsms
等待(秒) WAIT(s)Sleep(s) 等待指定秒数,参数为浮点类型
等待(毫秒) WAIT(ms)Sleep(ms) 等待指定毫秒数,参数为整数类型

示例:

message1 >> arguments -@ csm
wait >> 1min 20s 500ms  // 等待 1 分 20 秒 500 毫秒

message1 >> arguments -@ csm
wait(ms) >> 100          // 等待 100 毫秒

message1 >> arguments -@ csm
wait(s) >> 1.5           // 等待 1.5 秒

锚点与跳转

脚本中可定义命名锚点,并通过错误跳转或显式 GOTO 跳转到指定锚点继续执行。

  • 锚点定义<anchor_name>,例如 <setup><main><error_handler><cleanup>,大小写不敏感。
  • 条件跳转?? goto >> <anchor_name>,在前一条指令出错时跳转到指定锚点。省略条件表达式等同于"任意错误时跳转"。

AUTO_ERROR_HANDLE_ANCHOR 指令设置默认的错误跳转锚点(默认为 <cleanup>)。 AUTO_ERROR_HANDLE_ENABLE 指令开启自动错误处理,任何指令执行失败时,自动跳转到预设锚点。

示例:

// 开启自动错误处理
AUTO_ERROR_HANDLE_ENABLE >> TRUE
// 将默认错误锚点改为 error_handler
AUTO_ERROR_HANDLE_ANCHOR >> error_handler

<setup>  // ----- setup anchor ----

// 初始化失败不需要执行 stop,因此显式指定跳转到 cleanup
initialize >> daq1 -@ ai ?? goto >> <cleanup>

<main>  // ----- main anchor ----

// 之后的所有指令,执行失败时将跳转到 error_handler
configure >> Onboard Clock;10,-10,RSE -@ ai
start -@ ai
acquire >> Channel:ch0;Num:1000 -@ ai

<error_handler>  // ----- error handler anchor ----
stop -@ ai

<cleanup>  // ----- cleanup anchor ----
close -@ ai

Note

自动错误处理默认关闭,需通过 AUTO_ERROR_HANDLE_ENABLE >> TRUE 显式开启。未开启时,指令执行出错后将继续执行下一条指令。

Note

锚点最常见的用途是划分脚本执行阶段,类似于 NI TestStand 序列中的 <setup><main><cleanup> 等阶段。

Note

锚点名称中的 <> 符号可省略,GOTO >> cleanupGOTO >> <cleanup> 效果相同。

About

CSMScript Lite版本

Topics

Resources

License

Stars

Watchers

Forks

Contributors