v2025.July: 状态注册为Status
【v2025.July 精简公告】CSM v2025.July 已发布并推送至 VIPM。本期最重要的特性:CSM 框架正式支持将状态注册为 Status,模块可将自身状态以 Status 形式广播,其他模块通过订阅即可响应状态变化,实现低耦合的模块间联动。
2025 年 7 月的 CSM 更新已经推送到 VIPM。Communicable State Machine Framework - Package List. 如果你觉得 CSM 对你有帮助,请在 GitHub/Gitee 上 star 对应的仓库!也欢迎有经验的 LabVIEW 高手参与到 CSM 的开发中来。
- GitHub: https://github.com/NEVSTOP-LAB
- gitee: https://gitee.com/NEVSTOP-LAB
- vipm: Communicable State Machine Framework - Package List
- VIPM 打包好的 Release Package(VIPC) 合集(包含全部 Addon + Examples,可以离线安装): https://pan.baidu.com/s/10fsnFmJpn-P_HLbpH9IFLg 提取码: CSMF
版本亮点
- 重大新特性:状态注册为 Status(#236、#475、#481、#482、#487、#490、#491):CSM 框架现支持将状态注册为 Status,其他模块可通过订阅机制响应状态变化,实现低耦合的模块间观察者模式。
Macro: Initialize完成后才处理外部消息(#488):避免初始化未完成时就收到外部消息导致的竞态问题,提升启动可靠性。CSM - List Submodules.vi新增递归选项(#485),支持深层子模块枚举。- API String 修复嵌套 Cluster 类型的遍历顺序问题(#86)。
- TCP Router 维护更新,全局日志监控迁移至队列 API。
按仓库变更
1. Communicable-State-Machine
功能改动(重点)
核心(Core)
- [important] #236、#475、#481、#482、#487、#490、#491 CSM 框架正式支持将状态注册为 Status。模块可注册指定状态,当该状态被执行时,其他已订阅该 Status 的模块会自动收到通知并触发对应回调,实现模块间低耦合联动。
- [important] #488
Macro: Initialize执行完成后,CSM 才开始处理外部消息,确保模块完全初始化后再对外服务。
API
- [update] #485
CSM - List Submodules.vi新增”递归”选项,可枚举所有层级的子模块。
CSM Loop Support
- [fix] #479 修复异步消息在 loop 停止前无法获取响应的问题。
2. CSM-API-String-Arguments-Support
功能改动(重点)
- [fix] #86 修复嵌套 Cluster 类型的遍历顺序:从深度优先(depth-first)改为广度优先(breadth-first),确保 Cluster 元素顺序正确。
3. CSM-TCP-Router-App
功能改动(重点)
- [update] 将全局日志监控迁移至队列 API。
- [fix] 修复
TCP Safe Read.vi中的一处 bug。
4. 其他仓库
- CSM-INI-Static-Variable-Support:本期无
v2025.July发布,已忽略。 - CSM-MassData-Parameter-Support:本期无
v2025.July发布,已忽略。 - CSM-Continuous-Meausrement-and-Logging:本期无
v2025.July发布,已忽略。
按功能变更
1. 功能新增
2. 改进优化
- CSM 模块完成
Macro: Initialize后才接收外部消息,启动时序更安全(#488)。 - TCP Router 全局日志监控迁移至队列 API,与核心保持一致。
3. 问题修复
- 修复 CSMLS 异步消息在 loop 未停止时无法获取响应(#479)。
- 修复 API String 嵌套 Cluster 深度优先遍历顺序错误(#86)。
- 修复 TCP Router
TCP Safe Read.vi中的 bug。
破坏性变更
Macro: Initialize行为变更(#488):现在 CSM 模块在Macro: Initialize完全完成之前不处理外部消息。如果项目中存在依赖”在其他模块初始化期间即可发消息”的逻辑,升级后请重新审查这些时序假设。- 其余本期无破坏性变更。
升级指引
- 直接通过 VIPM 更新即可完成本次升级。
- 重点回归多模块协同启动场景,确认
Macro: Initialize时序变更(#488)不影响现有逻辑。 - 新的”状态注册为 Status”特性可显著简化模块间监听/订阅场景的代码,建议在新功能开发中优先采用。
完整变更来源
Release
- Communicable-State-Machine: https://github.com/NEVSTOP-LAB/Communicable-State-Machine/releases/tag/v2025.July
- CSM-API-String-Arguments-Support: https://github.com/NEVSTOP-LAB/CSM-API-String-Arguments-Support/releases/tag/v2025.July
- CSM-TCP-Router-App: https://github.com/NEVSTOP-LAB/CSM-TCP-Router-App/releases/tag/v2025.July
结尾
欢迎大家使用并提出反馈!如有问题,请在 GitHub 上提交 Issue,或加入社区讨论。