管理接口(Management API)
CSM - Check If Module Exists.vi
检查CSM模块是否存在。当CSM模块运行在协作者模式或责任链模式下,只有当组成模块的所有节点退出后,模块才会被标记为不存在。
– 输入控件(Controls) –
- CSM Name: CSM模块名称。
– 输出控件(Indicators) –
- CSM Name (dup): 输入的CSM模块名称副本。
- Exist?: 返回模块是否存在。
CSM - List Modules.vi
列出所有活动的CSM模块。该VI具有两组选项:
- 范围选项:用于标记是否罗列系统级模块,默认不列出,可选择普通/仅系统级模块/所有模块。
- 是否包含节点选项:针对协作者模式和责任链模式,当包括节点时,将同时列出节点,否则仅列出模块,默认不包含节点。
- Ref: CSM工作模式
– 输入控件(Controls) –
- Scope (Normal): 范围选项,可选择 普通/仅系统级模块/所有模块。
- With Nodes? (F): 是否包含节点,针对协作者模式和责任链模式,当包括节点时,将同时列出节点,否则仅列出模块,默认不包含节点。
– 输出控件(Indicators) –
- Module Names: CSM模块名称列表。
CSM - List Submodules.vi
列出当前分组或模块的所有子模块。Recursive? (T)为TRUE时,将递归列出所有层级的子模块,否则仅列出直接下一级子模块。
举例: 系统存在Level1.Level2A、Level1.Level2A.Node1、Level1.Level2A.Node2、Level1.Level2B.Node1、Level1.Level2B.Node2这5个模块,
- 当<b>Parent Name</b>为"Level1"时:
<b>Recursive? (T)</b>为True时,将递归列出所有层级的子模块,包括Level1.Level2A、Level1.Level2A.Node1、Level1.Level2A.Node2、Level1.Level2B.Node1、Level1.Level2B.Node2
<b>Recursive? (T)</b>为False时,仅列出直接下一级子模块,仅包括Level1.Level2A,注意Level1.Level2B不是一个模块实例,因此并不会被包含在结果中
- Ref: CSM子模块
– 输入控件(Controls) –
- Parent Name: 分组或父节点名称。
- Recursive? (T): 是否递归列出所有层级的子模块,默认为TRUE。
– 输出控件(Indicators) –
- Parent Name (Dup): 输入的分组或父节点名称副本。
- Submodules: 子模块名称列表。
CSM - Module VI Reference.vi
获取输入模块的VI引用。
VI逻辑:
- 该VI通过发送
VI Reference同步消息,查询获取CSM模块的VI引用,因此它具有与发送同步消息VI相类似的输入参数。 - 该VI在后台缓存了本次主程序运行查询过的CSM模块的VI引用,当再次查询相同的模块且查询到的VI引用依然有效时,将直接返回缓存的VI引用,而不是重新发送同步消息查询。
- 如果需要强制重新查询模块的VI引用,可设置Force? (F)为TRUE。
对于特殊运行模式的CSM的行为:
- 协作者模式: 返回处理
VI Reference消息的工作者节点的VI引用。 - 责任链模式: 返回责任链模式的CSM模块的第一个节点的VI引用。
- 系统级模块: 与普通模式CSM相同,返回系统级模块的VI引用。
– 输入控件(Controls) –
- Current Module (“” to Generate an ID): 查询CSM模块的标记,为空时将生成一个唯一的ID。
- CSM Name: CSM模块名称。
- Force? (F): 是否强制重新查询模块的VI引用,默认为 False。
- Response Timeout (-2 Using Global Settings): 同步调用的超时时间,默认为-2,使用全局设置。您可以通过CSM - Set TMO of Sync-Reply VI设置全局超时时间。
– 输出控件(Indicators) –
- CSM Module VIRef: CSM模块的VI引用。
CSM - Set TMO of Sync-Reply.vi
设置CSM程序全局的同步调用超时时间,单位为毫秒。当输入为-2时,将不会修改全局超时时间,返回值为当前全局超时时间;当输入为其他正值时,将修改全局超时时间为该值,返回新的全局超时时间。
CSM同步消息全局超时
- CSM模块间通信,或使用同步消息发送VI时,默认的超时时间为-2,此时将使用全局设置的超时时间
- 全局超时时间可以通过CSM - Set TMO of Sync-Reply VI设置为其他正值,以覆盖全局设置的超时时间
- 全局超时时间仅对同步调用生效,异步调用不受影响
CSM模块/API调用时,默认的超时时间为-2,此时将使用全局设置的超时时间;如果设置为其他正值,则将使用该值作为超时时间。
– 输入控件(Controls) –
- TMO For Sync-Rep (ms) In: 全局超时时间输入,-2表示不修改全局超时时间,其他正值表示修改全局超时时间为该值。
– 输出控件(Indicators) –
- TMO For Sync-Rep (ms) Out: 当前全局超时时间。
CSM - Module Status.vi
获取CSM模块的状态,包括: 工作模式、工作者数量、消息队列中的待处理消息个数。
- Ref: CSM工作模式
– 输入控件(Controls) –
- CSM Name: CSM模块名称。
– 输出控件(Indicators) –
- CSM Name (Dup): 输入的CSM模块名称副本。
- Mode: 返回模块的工作模式。
- #Nodes: 协作者模式或责任链模式下的节点数量。
- #Elements In Queue: CSM消息队列中的待处理消息个数。
CSM - Flush Queue.vi
清空CSM模块后台用于模块间通信的LabVIEW队列。
- Ref: CSM优先级队列设计
– 输入控件(Controls) –
- CSM Name: CSM模块名称。
- Option (Low Priority As Default): 清理的队列。可以选择All、Low Priority、High Priority。默认值为Low Priority。
– 输出控件(Indicators) –
- CSM Name (Dup): 输入CSM模块名称的副本。
- #Flushed: 被清理的消息队列中的元素个数。
Filter JKISM String Queue(CSM - Filter JKISM String Queue.vi)
该VI用于过滤CSM状态队列中的特定状态
CSM 的状态队列操作API
该类型API不会直接发送消息,只是拼接消息字符串。在Parse State Queue++.vi中发送消息、执行操作。与消息拼接API不同的是,此类API会包含CSM的状态队列字符串输入,相当于在状态队列中插入消息。
CSM - Filter Local States.vi
该VI用于过滤CSM状态队列中的本地状态。
CSM 的状态队列操作API
该类型API不会直接发送消息,只是拼接消息字符串。在Parse State Queue++.vi中发送消息、执行操作。与消息拼接API不同的是,此类API会包含CSM的状态队列字符串输入,相当于在状态队列中插入消息。
– 输入控件(Controls) –
- States In: 待过滤的整段状态描述字符串。
– 输出控件(Indicators) –
- States Out: 过滤后的状态描述字符串。
CSM - Filter Messages.vi
该VI用于过滤CSM状态队列中的所有类型的消息。
CSM 的状态队列操作API
该类型API不会直接发送消息,只是拼接消息字符串。在Parse State Queue++.vi中发送消息、执行操作。与消息拼接API不同的是,此类API会包含CSM的状态队列字符串输入,相当于在状态队列中插入消息。
– 输入控件(Controls) –
- States In: 待过滤的整段状态描述字符串。
– 输出控件(Indicators) –
- States Out: 过滤后的状态描述字符串。
CSM - Filter Sync Messages.vi
该VI用于过滤CSM状态队列中的同步消息。
CSM 的状态队列操作API
该类型API不会直接发送消息,只是拼接消息字符串。在Parse State Queue++.vi中发送消息、执行操作。与消息拼接API不同的是,此类API会包含CSM的状态队列字符串输入,相当于在状态队列中插入消息。
– 输入控件(Controls) –
- States In: 待过滤的整段状态描述字符串。
– 输出控件(Indicators) –
- States Out: 过滤后的状态描述字符串。
CSM - Filter Async Messages.vi
该VI用于过滤CSM状态队列中的异步消息。
CSM 的状态队列操作API
该类型API不会直接发送消息,只是拼接消息字符串。在Parse State Queue++.vi中发送消息、执行操作。与消息拼接API不同的是,此类API会包含CSM的状态队列字符串输入,相当于在状态队列中插入消息。
– 输入控件(Controls) –
- States In: 待过滤的整段状态描述字符串。
– 输出控件(Indicators) –
- States Out: 过滤后的状态描述字符串。
CSM - Filter Async without Reply Messages.vi
该VI用于过滤CSM状态队列中的异步无回复消息。
CSM 的状态队列操作API
该类型API不会直接发送消息,只是拼接消息字符串。在Parse State Queue++.vi中发送消息、执行操作。与消息拼接API不同的是,此类API会包含CSM的状态队列字符串输入,相当于在状态队列中插入消息。
– 输入控件(Controls) –
- States In: 待过滤的整段状态描述字符串。
– 输出控件(Indicators) –
- States Out: 过滤后的状态描述字符串。
CSM - Filter Messages to Non-Existing Modules.vi
该VI用于过滤CSM状态队列中发送到不存在模块的消息。这个VI中会使用CSM - List Modules VI获取所有活动的CSM模块,然后过滤掉发送给不存在模块的消息。
CSM 的状态队列操作API
该类型API不会直接发送消息,只是拼接消息字符串。在Parse State Queue++.vi中发送消息、执行操作。与消息拼接API不同的是,此类API会包含CSM的状态队列字符串输入,相当于在状态队列中插入消息。
– 输入控件(Controls) –
- States In: 待过滤的整段状态描述字符串。
– 输出控件(Indicators) –
- States Out: 过滤后的状态描述字符串。
CSM - Filter Broadcasts.vi
该VI用于过滤CSM状态队列中的广播消息。
CSM 的状态队列操作API
该类型API不会直接发送消息,只是拼接消息字符串。在Parse State Queue++.vi中发送消息、执行操作。与消息拼接API不同的是,此类API会包含CSM的状态队列字符串输入,相当于在状态队列中插入消息。
– 输入控件(Controls) –
- States In: 待过滤的整段状态描述字符串。
– 输出控件(Indicators) –
- States Out: 过滤后的状态描述字符串。
CSM - Filter Status Broadcasts.vi
该VI用于过滤CSM状态队列中的状态广播消息。
CSM 的状态队列操作API
该类型API不会直接发送消息,只是拼接消息字符串。在Parse State Queue++.vi中发送消息、执行操作。与消息拼接API不同的是,此类API会包含CSM的状态队列字符串输入,相当于在状态队列中插入消息。
– 输入控件(Controls) –
- States In: 待过滤的整段状态描述字符串。
– 输出控件(Indicators) –
- States Out: 过滤后的状态描述字符串。
CSM - Filter Interrupt Broadcasts.vi
该VI用于过滤CSM状态队列中的中断广播消息。
CSM 的状态队列操作API
该类型API不会直接发送消息,只是拼接消息字符串。在Parse State Queue++.vi中发送消息、执行操作。与消息拼接API不同的是,此类API会包含CSM的状态队列字符串输入,相当于在状态队列中插入消息。
– 输入控件(Controls) –
- States In: 待过滤的整段状态描述字符串。
– 输出控件(Indicators) –
- States Out: 过滤后的状态描述字符串。
CSM - Filter Duplicated Lines.vi
该VI用于过滤CSM状态队列中的重复行。
CSM 的状态队列操作API
该类型API不会直接发送消息,只是拼接消息字符串。在Parse State Queue++.vi中发送消息、执行操作。与消息拼接API不同的是,此类API会包含CSM的状态队列字符串输入,相当于在状态队列中插入消息。
– 输入控件(Controls) –
- Keep First Matched? (T): 是否保留第一个匹配项,默认为TRUE。
- States In: 待过滤的整段状态描述字符串。
- Option: 过滤选项。
– 输出控件(Indicators) –
- States Out: 过滤后的状态描述字符串。