高级模式

系统级模块 (System-Level Module API)

CSM - Mark As System-Level Module.vi

在输入字符串前添加.,即可将此模块标记为系统级模块,例如输入为UIModule,输出为.UIModule

参考范例: 0. Base Concepts\7. System-Level Module.vi

  • Ref: 名称拼接API
  • Ref: CSM系统级模块

输入控件(Controls)

  • CSM Name: CSM模块名称。

输出控件(Indicators)

  • CSM Name (Marked As System-Level Module): 添加.标记的CSM模块名称。

子模块

Concatenate Submodule Name.vi

拼接生成子模块名。

输入控件(Controls)

  • CSM Name: CSM模块名称。
  • Name: 要拼接的名称。

输出控件(Indicators)

  • Submodule Name: 拼接生成的子模块名。

工作者模式 (Work Mode API)

CSM - Mark As Worker Module.vi

在CSM名称后添加#,以标记此模块为协作者模式模块。

参考范例: 4. Advance Examples\1. Action Workers Example

  • Ref: 名称拼接API
  • Ref: CSM工作者模式(Worker Mode)

输入控件(Controls)

  • CSM Name: CSM模块名称。

输出控件(Indicators)

  • CSM Name (Marked As Worker): 添加#标记的CSM模块名称。

责任链模式 (Chain of Responsibility API) - 待完善

CSM - Mark As Chain Module.vi

拼接责任链模式模块的名称,使用$作为分隔符。注意Order不必连续,但是必须唯一,编号小的节点,将排列在责任链的前面。

参考范例: 4. Advance Examples\2. Chain of Responsibility Example

  • Ref: CSM责任链模式(Chain of Responsibility Mode)
  • Ref: 名称拼接API

输入控件(Controls)

  • CSM Name: CSM模块名称。
  • Order: 责任链模式下的顺序,编号小的节点,将排列在责任链的前面。

输出控件(Indicators)

  • CSM Name (Marked As Chain): 添加$标记的CSM模块名称。

CSM - Resolve Node Module.vi

通过将高级模式的节点名称解析出对应的CSM模块名称。

例如:

  • 工作者模式节点的名称为module#59703F3AD837,得到的结果是module
  • 责任链模式节点的名称为module$1,得到的结果是module

输入控件(Controls)

  • CSM Module Name: CSM模块名称。
  • Node Name: 节点名称。

多循环模式支持(Multi-Loop Support)

CSM - Request CSM to Post Message.vi

申请CSM模块给出异步消息。此API主要用于CSM多循环模式下,其他模块中申请CSM发出消息。

在此场景下,通常也可以使用CSM - Post Message VI,但是它发送的时刻无法确定,而且也不能获得异步消息的返回值。此VI是一个补充。

参考范例4. Advance Examples\5. Multi-Loop Module Example\TCP Server Module(Multi-Loop Support).vi

  • Ref: CSM多循环模式(Multi-Loop Mode)

输入控件(Controls)

  • Module Name: 发送状态的CSM。
  • State: 消息名称。
  • Arguments (“”): 将被广播的状态参数。
  • Without Reply? (F): 是否需要返回。当需要返回时,发出的是异步消息;不需要返回时,发出的是异步无返回消息。
  • Target Module (“” By Default): 目标模块。
  • Immediately? (F): 立即执行选项。立即发送会让此消息在CSM循环中立即被处理,而不是等待CSM循环中现存的消息执行完毕。

CSM - Request CSM to Broadcast Status Change.vi

申请CSM发送广播。此API主要用于CSM多循环模式下,其他模块中申请CSM发出广播,通知其他模块状态改变。

参考范例4. Advance Examples\5. Multi-Loop Module Example\TCP Server Module(Multi-Loop Support).vi

  • Ref: CSM多循环模式(Multi-Loop Mode)

输入控件(Controls)

  • Module Name: 发送状态的CSM。
  • Status: 将被广播的状态。
  • Arguments (“”): 将被广播的状态参数。
  • Broadcast? (T): 控制是否广播的开关输入。
  • Priority (“Status”): 广播的优先级, 默认为”信号广播(Status)”,或”中断广播(Interrupt)”。
  • Immediately? (F): 立即执行选项。立即发送会让此消息在CSM循环中立即被处理,而不是等待CSM循环中现存的消息执行完毕。

CSM - Forward UI Operations to CSM.vi

此VI主要应用于多循环模式下,将并行于CSM循环的UI循环中用户操作产生的时间,转发到CSM循环中处理。CSM DQMH-Style Template VI模板就是这个逻辑。

参考范例Addons - Loop Support\CSMLS - Continuous Loop in CSM Example.vi

  • Ref: CSM多循环模式(Multi-Loop Mode)

输入控件(Controls)

  • State(s) In (“”): 待处理的状态。
  • Name (“” to Use UUID): 模块的名称。
  • High Priority? (T): 立即执行选项。立即发送会让此消息在CSM循环中立即被处理,而不是等待CSM循环中现存的消息执行完毕。

输出控件(Indicators)

  • States Out: 输入始终为空,是为了在模板中保证连线一致性设置的输出端。

CSM - Module Turns Invalid.vi

检查CSM是否已经退出。通常用于和CSM并行的功能循环的跟随CSM循环退出。

CSM高级模式的模块(协作者模式、责任链模式)只有在最后一个节点退出后,才会触发模块退出事件。

输入控件(Controls)

  • CSM Name: CSM模块名称。

输出控件(Indicators)

  • Turn Invalid (Exit)?: CSM模块是否已经退出。