CSM插件机制

CSM提供三种插件接口:Addon 扩展核心能力,Template 提供模块模板,Tools 提供调试工具。

CSM框架
├── Addon:参数扩展、API扩展、功能模块
├── Template:基础模板、UI模板、自定义模板
└── Tools:调试工具、开发工具、监控工具

Addon 接口

Addon是CSM的核心扩展接口,让你能添加新的参数类型、API功能或完整的功能模块。

常用Addon分类

参数扩展类

  • MassData Support:高效传递大数组、波形等大数据
  • API String Arguments Support:用纯文本传多个参数
  • INI-Variable Support:配置文件变量支持

功能模块类

  • WatchDog Addon:自动管理模块退出
  • File Logger Addon:全局日志文件记录
  • Loop Support Addon:循环状态支持
  • Attribute Addon:属性访问增强
  • TCP Router Addon:TCP远程控制和监控

WatchDog Addon

主程序退出后,自动让所有CSM模块都正常退出。原理很简单:监控主程序创建的队列,队列释放了就说明主程序退了,这时给所有模块发送Macro: Exit

使用方法

在主程序启动后调用CSM - Start Watchdog to Ensure All Modules Exit.vi,保持返回的Watchdog Queue引用直到程序结束。程序退出时队列自动释放,WatchDog就会通知所有模块退出。

// 主程序初始化
CSM - Start Watchdog to Ensure All Modules Exit.vi
→ Watchdog Queue(保持引用)

// 程序运行...
// 程序退出,队列释放,所有模块自动收到Exit命令

注意:在主程序启动时尽早调用,不要手动释放Watchdog Queue。

详细说明请参阅:WatchDog自动退出管理

File Logger Addon

把应用的所有日志保存到文本文件,方便事后分析和排错。日志文件是.csmlog格式,普通文本编辑器就能打开。详细说明参见文件日志(File Logger)

文件管理

  • File Size:单文件最大大小(默认10MB)
  • File Num:最多保留文件数(默认2个)
  • 超过限制自动滚动,删除最旧的文件

使用方法

CSM - Start File Logger.vi启动日志记录线程。

主要参数:

  • Log File Path:日志文件路径
  • Timestamp format:时间格式,默认%<%Y/%m/%d %H:%M:%S%3u>T
  • Log Limit:文件大小和数量限制
  • Filter Rules:过滤规则(通过CSM - Convert Filter Rules VI配置)
CSM - Start File Logger.vi
  Log File Path: "C:\Logs\application.csmlog"
  Log Limit: {File Size: 10MB, File Num: 2}
  → Log File, Watchdog Queue

应用场景:故障诊断、性能分析、审计追踪、用户支持。

参考Addons - Logger\CSM Application Running Log Example.vi

Loop Support Addon

在CSM里实现循环操作,同时不阻塞状态机、能响应外部消息。详细说明参见Loop Support(循环状态支持)

Attribute Addon

简化Attribute读写操作的多态VI,自动适应数据类型,不用手动指定类型。

  • CSM Set Module Attribute.vim:多态写入
  • CSM Get Module Attribute.vim:多态读取

用于快速读写模块属性、配置管理、Worker/Chain模式的节点间数据共享。

TCP Router Addon

为 CSM 应用添加 TCP 远程控制能力,将本地程序转变为 TCP 服务器,实现远程访问和控制。详细说明参见TCP Router(TCP远程控制)

核心特性

  • 无侵入集成,无需修改原有代码
  • 支持多客户端同时连接
  • 完整支持 CSM 同步/异步消息、广播订阅
  • 三层指令集:CSM 消息、Router 管理、Client 指令

使用方法

// 在主程序初始化阶段启动 TCP Router
Initialize >> {
    Run Async: TCP-Router  // 使用默认端口
}

应用场景:仪器远程控制、自动化测试、分布式系统集成、远程调试。

参考TCP服务器应用示例

开发自己的Addon

命名与注册

  • Addon VI命名为CSM-Addon-*.viCSM*.vi,放到CSM目录下即可自动注册
  • 也可通过API手动注册(适用于动态加载场景)

开发建议

  • 避免阻塞操作,合理管理资源
  • 使用全局日志记录运行信息,用CSM Debug Console测试API

参考项目

Template 接口

Template让你快速创建标准化的CSM模块,提高开发效率和代码一致性。

模板类型

模板 说明 适用场景
CSM Basic Template 单一CSM循环,无UI交互 后台服务、简单业务逻辑
CSM UI Template 包含事件结构,分离UI循环和CSM循环 用户交互模块
CSM DQMH-Style Template UI循环和CSM循环完全分离,通过消息通讯 大型应用
CSM API String Template 支持API String参数 复杂参数传递

开发自己的模板

模板应保持简洁,不包含业务逻辑,并提供充分的注释指导使用者修改。需要包含标准的初始化和退出流程,遵循CSM命名规范。

更多详情参考CSM模板文档

Tools 接口

Tools是CSM的调试工具接口,所有工具都基于全局日志机制,通过订阅日志获取系统运行信息。

CSM内置了多种工具,包括运行时监控(Running Log Window、State Dashboard、Table Log Window)、开发调试(Debug Console、Interface Browser、Example Browser)和数据查看(MassData Cache Viewer、INI-Variable Viewer)等。详细使用说明参见CSM调试与开发工具

开发自定义工具

自定义工具的核心是订阅全局日志队列并处理日志数据:

// 获取全局日志队列
CSM - Global Log Queue.vi → Global Log Queue

// 循环处理日志
Loop {
    Dequeue Element (Global Log Queue) → Log Data
    Process Log Data
    Update UI
}

// 清理
CSM - Destroy Global Log Queue.vi

开发要点

  • 实现日志过滤,只处理需要的日志,避免影响被监控系统性能
  • 使用队列方式获取日志(比事件高效),批量更新UI