快速上手

:question: 如何下载 CSM?

CSM 通过 VIPM Library 的形式发布,您可以通过以下方式下载:

📓 更多信息,请参考页面 下载

:question: 在使用 VIPM 安装时弹出的编译对话框是什么?

CSM 是基于 JKISM 开发的程序框架,JKISM 提供了 JKI State Machine Editor, 用于辅助开发。CSM 安装时,为了保证 JKI State Machine Editor 同时能够支持 CSM, 对 JKI State Machine Editor 部分的 VI 进行了微调。为了保证加载速度,修改完毕后,重新编译了全部 JKI State Machine Editor 的支持 VI。

CSM 安装的编译不会对 JKISM 或 JKI State Machine Editor 功能造成任何影响,也不会对用户代码造成任何影响。

:question: 如何创建 CSM 模块?

CSM 提供了标准模板,在 LabVIEW 中通过模板创建 VI 即可开始使用。创建好的模块包含 CSM 核心解析 VI、消息队列和标准的 Case 结构,可以直接开始编写业务逻辑。

📓 详细步骤,请参考 创建 CSM 模块

:question: 如何退出 CSM 模块?

通常,如果希望退出 CSM 模块,可以通过对 CSM 模块发送 Macro: Exit 消息来实现。

  • 如果是多个模块需要退出,通常我们需要控制退出的顺序,这个时候可以使用同步消息,保证按照给定的顺序退出模块。
  • 如果多个模块需要退出,且不需要控制退出的顺序,可以使用异步消息,这样可以保证退出的效率。
// 假如有两个模块需要退出,分别是 Module A 和 Module B

// 同步退出方式
Macro: Exit -@ Module A
Macro: Exit -@ Module B

// 异步退出方式
Macro: Exit -> Module A
Macro: Exit -> Module B

e.g. 范例:

How-to-Exit-Example

:question: 如何在非 CSM 框架(如 DQMH、Actor Framework)中调用 CSM 模块?

CSM 提供了专用 API 供非 CSM 代码调用 CSM 模块:

  • CSM - Post Message.vi:向 CSM 模块发送异步消息(无返回),适合单向通知。
  • CSM - Send Message and Wait for Reply.vi:向 CSM 模块发送同步消息并等待返回,适合需要获取结果的场景。
  • CSM - Broadcast Event.vi + CSM - Destroy Broadcast Event.vi:获取 CSM 模块的状态更改事件句柄,在标准 LabVIEW 事件结构中直接接收 CSM 广播(Status 和 Interrupt 均支持),使用完毕后释放句柄。

📓 更多信息,请参考 创建 CSM 模块 - 在其他框架中调用 CSM 模块

:question: 为什么使用 CSM User Interface(UI) Module Template 时,模块启动就自动打开了前面板?

CSM User Interface(UI) Module Template 是专为需要展示用户界面的 UI 模块设计的,它在 Macro: Initialize 初始化阶段会自动调用 UI: Initialize 打开前面板。这是该模板的预期行为。

如果你的模块是仪器控制、数据采集等后台模块,应使用无 UI 的 CSM Module Template,它不会打开任何前面板,完全通过消息驱动、在后台静默运行。

推荐的架构是将 UI 逻辑与仪器逻辑分离:

  • 仪器模块:使用 CSM Module Template,专注于硬件通信和数据处理。
  • UI 模块:单独创建一个 CSM User Interface(UI) Module TemplateCSM DQMH-Style Template 模块,通过 CSM 消息与仪器模块通信,负责参数显示和用户输入。

如果确实需要仪器模块偶尔显示前面板(如调试用途),可以使用 CSM Module Template,然后通过自定义消息(如 "UI: Front Panel State >> Open")按需控制前面板显示。

📓 参考链接:Discussion 原帖模板参考文档