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 的开发中来。

版本亮点

  • 全局事件引用生命周期修复:通过后台线程对齐全局事件引用的生命周期,彻底解决了调用方 VI 提前退出导致事件引用失效的问题(#238)。
  • 异步消息目标失效容错:异步消息发出后,若目标模块在收到响应前已失效,框架不再抛出”target error”,提升了系统健壮性(#242)。
  • 新增两个消息操作工具 VICSM - 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 的错误输入连线问题。

文档与图标(简述)

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)。
  • 新增工具 VICSM - 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 空字符串行为有所调整(空字符串填充原型默认值),可能对依赖旧行为的代码产生影响,建议升级后进行回归测试。

升级指引

  1. 通过 VIPM 搜索 “Communicable State Machine” 并更新到 v2024.Jan 版本。
  2. 如果使用了 API String 插件,请检查代码中是否存在对 Cluster 空字符串输入的依赖,升级后验证行为是否符合预期。
  3. INI 插件升级后,单元素配置场景的 API 行为已修复,无需额外操作。

完整变更来源

Release

结尾

欢迎大家使用并提出反馈!CSM 的成长离不开每一位用户的支持与建议。如果你在使用过程中遇到问题,欢迎在 GitHub 提交 Issue;如果觉得有用,也请帮忙点个 Star!