v2025.May: 全局日志队列化与嵌套变量

【v2025.May 精简公告】CSM v2025.May 已发布并推送至 VIPM。本期重点:全局日志支持队列操作实现异步消费、INI 插件新增嵌套变量(Nested Variable)特性、默认 DequeueTMO 调整至 1ms 提升调试性能,以及 TCP Router 新增 MassData 支持。

2025 年 6 月的 CSM 更新已经推送到 VIPM。Communicable State Machine Framework - Package List. 如果你觉得 CSM 对你有帮助,请在 GitHub/Gitee 上 star 对应的仓库!也欢迎有经验的 LabVIEW 高手参与到 CSM 的开发中来。

版本亮点

  • 全局日志队列化#448#453~#457):全局事件现支持队列操作,新增专用队列 API 及代码片段,Debug Console 和 CSM File Logger 同步迁移,日志消费更高效稳定。
  • 默认 DequeueTMO 调整为 1ms#459):显著提升 Debug 性能。
  • INI 插件嵌套变量#51#61#62):支持在 INI 配置中定义和引用嵌套变量,简化复杂配置管理。
  • TCP Router 支持 MassData#3):可在 TCP 网络消息中传输大数据块。
  • API String 新增 Refnum/UserDefinedRefnumTag 数据类型支持,扩展参数类型覆盖范围。

按仓库变更

1. Communicable-State-Machine

功能改动(重点)

核心(Core)

  • [update] #459 默认 DequeueTMO 从 0ms 调整为 1ms,显著提升调试性能。感谢 @ZhaoLi-an。

API

  • [update] #450 增强 CSM - List Module 行为,系统级模块可以被包含在内。
  • [update] 在 CSM - Convert Data to HexStr.vi 中添加 <HEXSTR> 前缀标识。
  • [update] 在 CSM Status/Exit Event API 中增加等待 CSM 存活的时间。

全局日志(GlobalLog)

  • [add] #448#453~#457 全局事件现支持队列操作,实现日志的异步消费。
  • [add] #454 新增全局事件队列使用示例代码片段。
  • [update] #455 使用事件来源时间戳代替处理时间戳,提升日志时序准确性。

示例(Example)

  • [add] 新增示例 4. Advance Examples\Global Log Handling Capability,展示全局日志队列化能力。

工具(Tools)

  • [update] Debug Console 新增消息处理速度指示器。
  • [update] #460 Debug Console 迁移使用基于队列的全局日志 API。
  • [update] #456 CSM File Logger 迁移使用基于队列的全局日志 API。

2. CSM-API-String-Arguments-Support

功能改动(重点)

  • [add] 新增 Refnum/UserDefinedRefnumTag 数据类型支持。
  • [update] #85 Map/Set 数据类型将不再报错。感谢 @wulei。
  • [fix] #82 修复无 tag 模式的 Cluster 字符串(如 c:/abcde.txt;True)现在可被正确转换。
  • [fix] #84 修复无 tag 模式的 Cluster 字符串(如 https://github.com/NEVSTOP-LAB)解析成功率提升。

3. CSM-INI-Static-Variable-Support

功能改动(重点)

  • [add] #51#61#62 新增嵌套变量(Nested Variable)支持。
  • [update] 为 CSM - Read Cluster Elements From Key.vimCSM - Read Cluster Elements From Session.vim 添加缓存机制。
  • [update] 更新示例 6. import Config.ini with __include section.vi
  • [fix] #74 修复 CSM - Unload configuration variable file.vi 行为。感谢 @KivenJia。
  • [fix] #76 修复加载到缓存后 __include 节被删除的问题。
  • [fix] #75 修复值中包含 # 时解析失败的问题。

4. CSM-TCP-Router-App

功能改动(重点)

  • [add] #3 支持在 TCP Router 消息中传输 MassData。
  • [fix] #13 REP-REQ TCP.vi 默认使用 TCP 超时配置。

5. 其他仓库

  • CSM-MassData-Parameter-Support:本期无 v2025.May 发布,已忽略。
  • CSM-Continuous-Meausrement-and-Logging:本期无 v2025.May 发布,已忽略。

按功能变更

1. 功能新增

  • 全局日志队列操作 API 及代码片段(#448~#457)。
  • 全局日志处理能力示例(4. Advance Examples\Global Log Handling Capability)。
  • INI 嵌套变量支持(#51#61#62)。
  • API String 支持 Refnum/UserDefinedRefnumTag 数据类型。
  • TCP Router 支持 MassData 传输(#3)。

2. 改进优化

  • 默认 DequeueTMO 由 0ms 调整为 1ms,调试性能大幅提升(#459)。
  • Debug Console 新增消息处理速度指示器,实时监控消息吞吐。
  • Debug Console 与 CSM File Logger 迁移至队列化全局日志 API,消费更稳定。
  • INI Read Cluster Elements 系列 VI 增加缓存,重复读取性能提升。
  • 全局日志时间戳改用事件来源时间,时序更准确(#455)。

3. 问题修复

  • 修复 API String 无 tag 模式 Cluster 字符串解析问题(#82#84)。
  • 修复 INI Unload VI 行为(#74)。
  • 修复 INI __include 节加载后丢失的问题(#76)。
  • 修复 INI 值包含 # 时解析失败(#75)。
  • 修复 TCP Router TCP 超时配置未默认使用的问题(#13)。

破坏性变更

  • 默认 DequeueTMO 从 0ms 改为 1ms(#459)。对于极端实时性要求的场景(需要最小延迟的轮询),请评估此变更的影响,必要时可手动将其重置为 0ms。

升级指引

  1. 直接通过 VIPM 更新即可完成本次升级。
  2. 如果项目对 DequeueTMO 有特殊要求,升级后需验证 1ms 超时是否满足实时性需求。
  3. 建议评估将日志消费迁移到新的队列化全局日志 API,以获得更好的性能与稳定性。

完整变更来源

Release

结尾

欢迎大家使用并提出反馈!如有问题,请在 GitHub 上提交 Issue,或加入社区讨论。