Engine(CSM) 是 CSMScript-Lite 的核心脚本执行引擎模块,负责解析并运行 .csmscript 脚本文件,管理测试流程状态与结果。
引擎采用多线程架构,支持脚本中的同步/异步 CSM 消息、广播订阅、锚点跳转与自动错误处理,并在每个关键执行节点通过广播通知 UI 模块。
| 属性 | 值 |
|---|---|
| LabVIEW 版本 | ≥ 2020 |
| 支持的操作系统 | Windows |
| 支持 RT | ❌ 不支持 |
| 支持 64-bit | ✅ 支持 |
| 所属模块组 | CSMScript-Engine(Lite).lvlib |
| 依赖 | 类型 |
|---|---|
| Communicable-State-Machine | 必须 |
| CSM-API-String-Arguments-Support | 必须 |
| CSM-MassData-Parameter-Support | 必须 |
| CSM-INI-Static-Variable-Support | 必须 |
以下是外部调用者可以发送给本模块的消息。
加载指定的 .csmscript 脚本。加载完成后会广播 SequenceLoaded Event。
- 参数:
API String|MassData|HexStr—String:脚本文件的内容 - 响应:N/A
卸载当前已加载的脚本序列,释放相关内部资源。卸载完成后会广播 SequenceUnloaded Event。
- 参数:N/A
- 响应:N/A
以单次遍历模式执行已加载的脚本序列。执行期间依次广播 SequenceStarted Event、StepStart Event、StepComplete Event 及 SequenceCompleted Event。
- 参数:N/A
- 响应:N/A
立即终止正在执行的脚本序列。
- 参数:N/A
- 响应:N/A
| 类型 | 说明 |
|---|---|
HexStr |
将 LabVIEW Variant 序列化为十六进制字符串,内置支持 |
SafeStr |
将特殊字符编码为 %[HEXCODE],内置支持 |
ErrStr |
将错误信息编码为字符串,内置支持 |
APIString |
支持嵌套键值对的纯文本字符串,需要 CSM API String Arguments Support 插件 |
MassData |
内存映射缓冲区,传递 Start:N,Size:M,需要 CSM MassData Parameter Support 插件 |
| 用户自定义 | 由模块自行解析的字符串,无需额外插件,但是要说明具体的解析规则和格式 |
注意:接口文档中对
String类型数据统一使用APIString标注(不直接写SafeStr),因为SafeStr正是APIString针对String类型的内部实现。
以下是本模块发出的消息,用于通知订阅者内部状态变化。
默认广播类型:Status
当 TS: Load Sequence 成功加载脚本文件后发出。
- 参数:
API String|MassData|HexStr—String:脚本文件的内容
默认广播类型:Status
当 TS: Unload Sequence 成功卸载序列后发出。
- 参数:N/A
默认广播类型:Status
当脚本序列开始执行时发出。
- 参数:N/A
默认广播类型:Status
当脚本中某一步骤开始执行时发出。
- 参数:
API String— Cluster(Def-Thread Data.ctl):当前步骤的线程数据- index - Numeric: 步骤在序列中的索引位置
- Arguments - String: 步骤参数字符串(原始文本)
- Error - Error Cluster: 当前步骤的错误信息
默认广播类型:Status
当脚本中某一步骤执行完成时发出。
- 参数:
API String—Def-StepComplete Event Data.ctl:步骤完成的状态数据- index - Numeric: 步骤在序列中的索引位置
- Response - String: 结果字符串
- Error - Error Cluster: 当前步骤的错误信息
默认广播类型:Status
当脚本序列全部执行完毕时发出。
- 参数:N/A
默认广播类型:Status
当引擎发生未处理的错误时发出(标准 CSM 错误广播)。
- 参数:
ErrStr—Error Cluster:错误信息
Important
- 必须先调用
TS: Load Sequence成功加载脚本后,才能调用TS: SinglePass。 - 使用
TS: Terminate可以在执行过程中强制终止序列,但不会等待当前正在执行的 CSM 消息返回。
// 加载脚本文件
TS: Load Sequence >> C:\scripts\test.csmscript -@ Engine
// 订阅加载完成事件后执行
SequenceLoaded Event@Engine >> TS: SinglePass@Engine -><register>
// 执行完毕后卸载
SequenceCompleted Event@Engine >> TS: Unload Sequence@Engine -><register>
// 将 Engine 的步骤完成事件路由到 UI 模块处理
StepComplete Event@Engine >> TS: Step Complete Handler@ExecutionView -><register>
StepStart Event@Engine >> TS: Step Start Handler@ExecutionView -><register>