NEVSTOP-LAB/CSM-Module-Repo-Template · 来源: GitHub · ⭐ 0

基于 CSM(可通信状态机) 框架的模块仓库模板

主题:labview-csm


CSM-Module-Repo-Template

基于 CSM(可通信状态机) 框架的模块仓库模板,用于参考如何编写 CSM 模块接口文档并完成模块开发。

This repository is a template for CSM (Communicable State Machine) LabVIEW modules. It provides a reusable module interface documentation template and AI-oriented authoring rules.

创建 CSM 模块

设计要点

  • 单一职责:一个模块只负责一件事(如采集、存储、通信)。
  • 接口清晰:用 API: 前缀标识对外接口,名称语义化(如 API: StartAPI: LoadConfig)。
  • 模块解耦:通过广播/订阅机制传递状态,避免在代码中硬编码其他模块名称。
  • 错误处理:实现 Error Handler 状态,出错时发出 Error Occurred 广播通知外部。

接口约定

接口类型说明
消息接口
API
API: 为前缀的 case 分支,或其他对外公开的非内置 case 分支
广播接口
Broadcast
模块内部状态变化时发出的 Status(普通)或 Interrupt(高优先级)广播
属性接口
Attribute
可通过 CSM - Get/Set Module Attribute.vi 直接读写;使用 LabVIEW 原生数据类型(StringBooleanDBL 等),而非 CSM 参数类型

参数传递

CSM 消息接口只支持字符串参数,复杂数据需编码:

类型说明
APIString纯文本字符串,支持键值对;可使用 API String Arguments 插件
HexStr任意 LabVIEW 数据序列化为十六进制字符串
ErrStr将 LabVIEW Error Cluster 编码为字符串
MassData大数组/波形,通过内存映射缓冲区高效传递;需要 MassData 插件
${变量名}INI 配置变量引用;需要 CSM INI Static Variable Support
用户自定义自定义字符串格式;多数场景下 APIString 可满足需求

SafeStrAPIString 针对 String 类型数据的内部编码实现,接口文档中建议统一写作 APIString,不要直接标注为 SafeStr

使用本模板

  1. 点击 “Use this template” 创建模块仓库,并以模块名命名(如 CSM-DataLogger)。
  2. 复制 module-template.md,将其重命名为与模块 VI 同名的文件(如 DataLogger.md);每个模块 VI 都应有一份对应的接口文档。
  3. 按模板说明替换占位符,填写接口文档。
  4. 如需让 AI 助手协助生成或审查接口文档,请参考 .github/copilot/skills/csm-module-docs/SKILL.md 中的结构化规则。

更多详情请参阅 CSM Wiki

许可

本模板采用 Apache License 2.0 发布;版权归属见 NOTICE