v2024.Aug: 模板更新与全局日志过滤

【v2024.Aug 精简公告】CSM v2024.August 已发布并推送至 VIPM。本期是 2024 年功能最密集的一次更新:全局事件过滤系统正式引入(#234)、广播注册 API 重组为更友好的接口、新增”VI Reference”Case 到所有模板(#298)、CSM Watchdog 看门狗机制上线,以及 CSM Helper API 工具集加入框架。

2024 年 8 月的 CSM v2024.August 更新已经推送到 VIPM。如果你觉得 CSM 对你有帮助,请在 GitHub/Gitee 上 star 对应的仓库!也欢迎有经验的 LabVIEW 高手参与到 CSM 的开发中来。

版本亮点

  • 全局事件过滤系统#234):新增全局事件过滤机制,可对全局日志事件进行订阅过滤,只接收关心的事件,大幅降低高频应用中的事件处理开销。
  • 广播注册 API 重组:重新组织所有广播注册相关的 API,更加用户友好,命名和分组逻辑更清晰。
  • “VI Reference” Case 加入所有模板#298):所有 CSM 模板都新增了”VI Reference” Case,为工具和外部程序提供获取 CSM VI 引用的标准接口。
  • CSM Watchdog 看门狗:新增 CSM Watchdog 机制,确保应用退出时所有 CSM 模块都能正确退出,彻底解决模块”僵尸”问题。
  • CSM Helper API:新增 CSM Helper API 工具集,为基于 CSM 构建第三方工具提供统一的接口基础。

按仓库变更

1. Communicable-State-Machine

功能改动(重点)

  • 广播注册 API 重组:将所有广播注册相关 API 重新组织,使其更加直观易用,消除了之前 API 命名混乱的问题。
  • 全局事件过滤系统#234):引入全局事件过滤机制,允许订阅者指定过滤规则,只接收匹配的事件,显著降低高频事件场景下的处理压力。
  • 新增发送/投递消息 API#289):新增两个 API 用于从外部向 CSM 发送或投递消息,方便非 CSM 代码与 CSM 模块交互。
  • CSM - Run Script VI:新增用于一次性执行多个状态的脚本执行 VI。
  • “VI Reference” Case#298):在所有模板中添加标准的”VI Reference” Case,为外部工具提供获取 CSM VI 引用的接口。
  • CSM Helper API:新增一组 CSM Helper API,为构建 CSM 周边工具提供标准接口支持。
  • 修复 VI Reference 工具#300):新增工具用于修复每个 CSM 模块 VI 中的”VI Reference” Case。
  • Show FP/BD 工具按钮:在工具栏新增显示前面板和程序框图的快捷按钮。
  • CSM Watchdog:新增 CSM 看门狗机制,确保应用程序正常退出时,所有 CSM 模块都能收到退出信号并安全终止。
  • 修复状态注册在 CSM 退出后不保留的问题#291):状态注册在 CSM 模块退出后不再自动移除,需要显式调用反注册。
  • 修复独立模式 CSM 无法注册其他模块状态#295):Stand-Alone CSM 模式现在可以正常注册其他模块的状态变更。
  • 修复模块名大小写不敏感#299):CSM 模块名现在大小写不敏感,消除了因大小写不一致导致的模块找不到问题。
  • LoopSupport 改进#290):CSMLS - Append Continious State (CSM) 新增是否追加的可选参数。
  • 移除”More template”菜单:移除了旧的”More template” mnu 菜单入口,改为使用 “File » New…” 中的模板 VI 体系。

文档与图标(简述)

  • 修复了 CSM Logger 线程中的一个边角情况(#293)。

2. CSM-API-String-Arguments-Support

功能改动(重点)

  • “VI Reference” Case:在模板中加入”VI Reference” Case,与核心库保持一致。
  • 错误处理更新#56):更新了模板中的错误处理逻辑,使其更加健壮。

文档与图标(简述)

  • 与核心库版本同步更新。

3. CSM-INI-Static-Variable-Support

功能改动(重点)

  • 全局日志过滤规则读取 API#42):新增 CSM - Read Log Filter Rules from INI Strings,支持从 INI 配置中读取并应用日志过滤规则,与核心库的全局事件过滤系统联动。
  • LabVIEW Config 库新增读取数组键 VIRead Array Key.vi 加入 LabVIEW Config 库,支持从配置文件中读取数组类型的值。
  • 所有 CSM 模块升级”VI Reference”:INI 插件中的所有 CSM 模块均已加入”VI Reference” Case。

文档与图标(简述)

  • 与核心库版本同步更新。

4. CSM-Continuous-Measurement-and-Logging

功能改动(重点)

  • 更新 CSM 框架至最新版本,同步所有改进。
  • 为每个 CSM 模块添加”VI Reference” Case。
  • 新增展示 CSM 文件日志 Addon 使用方法的演示。
  • 新增展示 CSM Watchdog Addon 使用场景的演示。

文档与图标(简述)

  • 与核心库版本同步更新。

5. 其他仓库

  • CSM-MassData-Parameter-Support:本期无该版本发布,已忽略。
  • CSM-TCP-Router:本期无该版本发布,已忽略。

按功能变更

1. 功能新增

  • 全局事件过滤系统(#234)。
  • 新增发送/投递消息 API(#289)。
  • 新增 CSM - Run Script VI
  • 所有模板加入”VI Reference” Case(#298)。
  • CSM Helper API 工具集。
  • Show FP/BD 工具按钮。
  • CSM Watchdog 看门狗机制。
  • 新增修复”VI Reference” Case 工具(#300)。
  • INI 插件新增全局日志过滤规则读取 API(#42)。
  • INI 插件 LabVIEW Config 库新增读取数组键 VI。

2. 改进优化

  • 广播注册 API 全面重组,更加用户友好。
  • 移除旧的”More template”菜单,统一使用 “File » New…” 模板体系。
  • LoopSupport CSMLS - Append Continious State 新增是否追加的可选输入(#290)。
  • API String 模板错误处理改进(#56)。

3. 问题修复

  • 修复状态注册在 CSM 退出后不应被自动移除的问题(#291)。
  • 修复独立 CSM 模块无法注册其他模块状态变更的问题(#295)。
  • 修复 CSM 模块名大小写敏感导致找不到模块的问题(#299)。
  • 修复 CSM Logger 线程边角情况(#293)。

破坏性变更

  • 状态注册生命周期变更#291):状态注册在 CSM 模块退出后不再自动移除,必须显式调用反注册 API。如果代码依赖了”模块退出即自动取消注册”的行为,升级后需要添加显式反注册调用。
  • “More template”菜单移除:旧的 “More template” mnu 菜单入口已被移除,请使用 “File » New…” 来创建模板 VI。
  • 广播注册 API 重组:API 命名和分组有所调整,升级后请检查是否需要更新 API 调用。

升级指引

  1. 通过 VIPM 更新到 v2024.August 版本。
  2. 检查代码中是否依赖状态注册在 CSM 退出后自动清除的行为,必要时添加显式反注册调用。
  3. 使用重组后的广播注册 API 替换旧 API,新 API 更加直观,建议尽快迁移。
  4. 使用”VI Reference”修复工具更新现有 CSM 模块,为工具支持做好准备。
  5. 现有项目中使用”More template”菜单创建 VI 的流程,改为使用 “File » New…” 方式。

完整变更来源

Release

结尾

欢迎大家使用并提出反馈!本次更新在框架可观测性、稳定性和可扩展性方面都有重大提升。CSM Watchdog 和 Helper API 的加入,为构建生产级应用打下了坚实基础。如果你有好的想法,欢迎在 GitHub 提交 Issue 参与讨论!