# CSM-Module-Repo-Template **Repository Path**: NEVSTOP-LAB/CSM-Module-Repo-Template ## Basic Information - **Project Name**: CSM-Module-Repo-Template - **Description**: 基于 CSM(可通信状态机) 框架的模块仓库模板 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-29 - **Last Updated**: 2026-05-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CSM-Module-Repo-Template 基于 [CSM(可通信状态机)](https://nevstop-lab.github.io/CSM-Wiki/) 框架的模块仓库模板,用于参考如何编写 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: Start`、`API: LoadConfig`)。 - **模块解耦**:通过广播/订阅机制传递状态,避免在代码中硬编码其他模块名称。 - **错误处理**:实现 `Error Handler` 状态,出错时发出 `Error Occurred` 广播通知外部。 ### 接口约定 | 接口类型 | 说明 | | --- | --- | | **消息接口
API** | 以 `API:` 为前缀的 case 分支,或其他对外公开的非内置 case 分支 | | **广播接口
Broadcast** | 模块内部状态变化时发出的 `Status`(普通)或 `Interrupt`(高优先级)广播 | | **属性接口
Attribute** | 可通过 `CSM - Get/Set Module Attribute.vi` 直接读写;使用 LabVIEW 原生数据类型(`String`、`Boolean`、`DBL` 等),而非 CSM 参数类型 | ### 参数传递 CSM 消息接口只支持字符串参数,复杂数据需编码: | 类型 | 说明 | | --- | --- | | `APIString` | 纯文本字符串,支持键值对;可使用 [API String Arguments](https://github.com/NEVSTOP-LAB/CSM-API-String-Arguments-Support) 插件 | | `HexStr` | 任意 LabVIEW 数据序列化为十六进制字符串 | | `ErrStr` | 将 LabVIEW Error Cluster 编码为字符串 | | `MassData` | 大数组/波形,通过内存映射缓冲区高效传递;需要 [MassData 插件](https://github.com/NEVSTOP-LAB/CSM-MassData-Parameter-Support) | | `${变量名}` | INI 配置变量引用;需要 [CSM INI Static Variable Support](https://github.com/NEVSTOP-LAB/CSM-INI-Static-Variable-Support) | | `用户自定义` | 自定义字符串格式;多数场景下 `APIString` 可满足需求 | > `SafeStr` 是 `APIString` 针对 `String` 类型数据的内部编码实现,接口文档中建议统一写作 `APIString`,不要直接标注为 `SafeStr`。 ### 使用本模板 1. 点击 **"Use this template"** 创建模块仓库,并以模块名命名(如 `CSM-DataLogger`)。 2. 复制 [`module-template.md`](./module-template.md),将其重命名为与模块 VI 同名的文件(如 `DataLogger.md`);每个模块 VI 都应有一份对应的接口文档。 3. 按模板说明替换占位符,填写接口文档。 4. 如需让 AI 助手协助生成或审查接口文档,请参考 [`.github/copilot/skills/csm-module-docs/SKILL.md`](./.github/copilot/skills/csm-module-docs/SKILL.md) 中的结构化规则。 更多详情请参阅 [CSM Wiki](https://nevstop-lab.github.io/CSM-Wiki/)。 ## 许可 本模板采用 Apache License 2.0 发布;版权归属见 [`NOTICE`](./NOTICE)。