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 的开发中来。
- 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
版本亮点
- 全局日志队列化(#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.vim和CSM - 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
功能改动(重点)
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
UnloadVI 行为(#74)。 - 修复 INI
__include节加载后丢失的问题(#76)。 - 修复 INI 值包含
#时解析失败(#75)。 - 修复 TCP Router TCP 超时配置未默认使用的问题(#13)。
破坏性变更
- 默认
DequeueTMO从 0ms 改为 1ms(#459)。对于极端实时性要求的场景(需要最小延迟的轮询),请评估此变更的影响,必要时可手动将其重置为 0ms。
升级指引
- 直接通过 VIPM 更新即可完成本次升级。
- 如果项目对
DequeueTMO有特殊要求,升级后需验证 1ms 超时是否满足实时性需求。 - 建议评估将日志消费迁移到新的队列化全局日志 API,以获得更好的性能与稳定性。
完整变更来源
Release
- Communicable-State-Machine: https://github.com/NEVSTOP-LAB/Communicable-State-Machine/releases/tag/v2025.May
- CSM-API-String-Arguments-Support: https://github.com/NEVSTOP-LAB/CSM-API-String-Arguments-Support/releases/tag/v2025.May
- CSM-INI-Static-Variable-Support: https://github.com/NEVSTOP-LAB/CSM-INI-Static-Variable-Support/releases/tag/v2025.May
- CSM-TCP-Router-App: https://github.com/NEVSTOP-LAB/CSM-TCP-Router-App/releases/tag/v2025.May
结尾
欢迎大家使用并提出反馈!如有问题,请在 GitHub 上提交 Issue,或加入社区讨论。