v2024.Jan: 全局事件与工具改进
【v2024.Jan 精简公告】CSM v2024.Jan 已发布并推送至 VIPM。本期重点改进了全局事件引用的生命周期管理,新增多个实用工具 VI,并在 API String 插件中扩充了复数与特殊浮点值支持。同时,CSM 官方 Wiki 网站正式上线!
2024 年 1 月的 CSM v2024.Jan 更新已经推送到 VIPM。如果你觉得 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
版本亮点
- 全局事件引用生命周期修复:通过后台线程对齐全局事件引用的生命周期,彻底解决了调用方 VI 提前退出导致事件引用失效的问题(#238)。
- 异步消息目标失效容错:异步消息发出后,若目标模块在收到响应前已失效,框架不再抛出”target error”,提升了系统健壮性(#242)。
- 新增两个消息操作工具 VI:
CSM - Remove Duplicated Following Messages.vi去除队列中的重复消息,CSM - Replace Substitution Marks in Messages.vi方便构建多行状态字符串。 - CSM Wiki 网站正式上线:官方文档站 https://nevstop-lab.github.io/CSM-Wiki/ 开放访问。
- API String 插件扩充复数与特殊浮点值:新增 SGLComplex/DBLComplex 数据类型,支持
e,-e,pi,-pi,inf,+inf,-inf,NaN等特殊浮点字面量(#18、#21)。
按仓库变更
1. Communicable-State-Machine
功能改动(重点)
- 异步消息容错(#242):对于异步消息,若目标模块在响应返回之前已变为无效,框架不再向调用方抛出”target error”,避免不必要的错误传播。
- 全局事件引用生命周期对齐(#238):将全局事件引用的生命周期绑定到后台线程,而非调用方 VI,从根本上解决了事件引用过早释放的问题。
- 全局日志记录模块创建/销毁事件(#240):全局日志系统现在会自动记录”Module Created”和”Module Destroyed”事件,方便调试模块生命周期。
- 新增
CSM - Remove Duplicated Following Messages.vi:可从消息队列中移除重复的后续消息,在高频消息场景下有效减少冗余处理。 - 新增
CSM - Replace Substitution Marks in Messages.vi:帮助开发者更方便地构建包含多行状态的字符串。 - 错误清理改进:在处理新的远程消息之前自动清除上一条消息的错误,避免错误信息被误传到后续处理流程。
- 修复次要问题(#237):修复了一处小型运行错误。
- 修复
CSM - Convert HexStr to Data.vi错误输入:修复了该工具 VI 的错误输入连线问题。
文档与图标(简述)
- CSM Wiki 网站正式上线,提供完整的中文文档支持:https://nevstop-lab.github.io/CSM-Wiki/
2. CSM-API-String-Arguments-Support
功能改动(重点)
- 新增复数数据类型(#18):支持 SGLComplex 和 DBLComplex 两种复数类型的 API String 编解码。
- 特殊浮点值支持(#21):现在可以在 API String 中使用
e,-e,pi,-pi,inf,+inf,-inf,NaN等特殊值。 - Cluster 类型改进(#23):对于 cluster,若未指定标签名,字符串将被转换到第一个元素;空字符串现在会转换为输入原型值(适用于 SGL/DBL/Integer/Path/Complex/Array/Cluster 等类型);Timestamp 类型的空字符串转换为当前时间;当数据名称在 cluster 原型中未定义时,抛出错误(#25)。
- 新增工具 VI:
CSM - Convert HexStr to Data.vim,支持十六进制字符串到数据的转换。
文档与图标(简述)
- 与核心库版本同步更新。
3. CSM-INI-Static-Variable-Support
功能改动(重点)
- 新增
CSM - Configuration File Path.vi:可查询当前配置文件路径,方便运行时定位配置文件位置。 - 修复单元素破坏 API 的问题(#16):修复了只有一个元素时部分 API 失效的 bug。
- 次要修复(#17):修复了其他已知的小问题。
文档与图标(简述)
- 使用随机变化标志(Random Change Flag)改进内部实现。
4. CSM-Continuous-Measurement-and-Logging
功能改动(重点)
- 使用 CSM 辅助 VI 简化内部代码,减少重复逻辑。
文档与图标(简述)
- 更新了依赖版本,与 CSM Core 及各插件保持同步。
5. 其他仓库
- CSM-MassData-Parameter-Support:本期无该版本发布,已忽略。
- CSM-TCP-Router:本期无该版本发布,已忽略。
按功能变更
1. 功能新增
- 新增
CSM - Remove Duplicated Following Messages.vi,用于去除消息队列中的重复后续消息。 - 新增
CSM - Replace Substitution Marks in Messages.vi,辅助构建多行状态字符串。 - 新增
CSM - Configuration File Path.vi(INI 插件),可在运行时查询配置文件路径。 - 新增
CSM - Convert HexStr to Data.vim(API String 插件),支持十六进制字符串解码。 - API String 插件新增 SGLComplex/DBLComplex 复数数据类型(#18)。
- 全局日志系统新增”Module Created”和”Module Destroyed”日志条目(#240)。
- CSM Wiki 官方文档网站上线。
2. 改进优化
- 全局事件引用生命周期改为由后台线程管理,与调用方 VI 解耦(#238)。
- API String 插件:特殊浮点值(
e,-e,pi,-pi,inf,+inf,-inf,NaN)支持(#21)。 - API String 插件:Cluster 无标签时默认填入第一个元素,空字符串转换为原型默认值(#23)。
- Timestamp 类型的空字符串转换为当前时间。
- INI 插件:使用 Random Change Flag 改进内部变更检测逻辑。
- 异步消息在目标失效时不再抛出错误(#242)。
3. 问题修复
- 修复新远程消息到来前未清除上一条消息错误的问题,避免错误信息误传。
- 修复
CSM - Convert HexStr to Data.vi的错误输入连线问题。 - 修复次要问题(#237)。
- API String 插件:cluster 原型中未定义的数据名现在正确抛出错误(#25)。
- INI 插件:修复单元素场景下 API 失效的问题(#16)、次要修复(#17)。
破坏性变更
本期无破坏性变更。API String 插件对 Cluster 空字符串行为有所调整(空字符串填充原型默认值),可能对依赖旧行为的代码产生影响,建议升级后进行回归测试。
升级指引
- 通过 VIPM 搜索 “Communicable State Machine” 并更新到 v2024.Jan 版本。
- 如果使用了 API String 插件,请检查代码中是否存在对 Cluster 空字符串输入的依赖,升级后验证行为是否符合预期。
- INI 插件升级后,单元素配置场景的 API 行为已修复,无需额外操作。
完整变更来源
Release
- Communicable-State-Machine: https://github.com/NEVSTOP-LAB/Communicable-State-Machine/releases/tag/v2024.Jan
- CSM-API-String-Arguments-Support: https://github.com/NEVSTOP-LAB/CSM-API-String-Arguments-Support/releases/tag/v2024.Jan
- CSM-INI-Static-Variable-Support: https://github.com/NEVSTOP-LAB/CSM-INI-Static-Variable-Support/releases/tag/v2024.Jan
- CSM-Continuous-Measurement-and-Logging: https://github.com/NEVSTOP-LAB/CSM-Continuous-Measurement-and-Logging/releases/tag/v2024.Jan
结尾
欢迎大家使用并提出反馈!CSM 的成长离不开每一位用户的支持与建议。如果你在使用过程中遇到问题,欢迎在 GitHub 提交 Issue;如果觉得有用,也请帮忙点个 Star!