模块操作接口(Module Operation API)
CSM - Wait for Module to Be Alive.vi
在指定的超时时间内等待CSM模块上线,返回等待时间,超时后返回错误。内部通过1 ms的间隔,周期性使用CSM - Check If Module Exists VI检查模块是否上线。
– 输入控件(Controls) –
- CSM Name: CSM模块名称。
- Wait (5000ms): 等待模块上线的超时时间,默认为5000 ms。
– 输出控件(Indicators) –
- CSM Name (Dup): CSM模块名称。
- Waited (ms): 已等待的时间。
CSM - Wait for All Modules to be Alive.vi
在指定的超时时间内等待一组CSM模块全部上线,返回等待时间,超时后返回错误及未上线的模块名称。内部通过5 ms的间隔,周期性使用CSM - List Module VI检查是否所有模块都已上线。
– 输入控件(Controls) –
- CSM Names: CSM模块名称。
- Wait (5000ms): 等待模块上线的超时时间,默认为5000 ms。
– 输出控件(Indicators) –
- CSMs Left: 超时后还未上线的CSM模块。
- Waited (ms): 已等待的时间。
CSM - Wait for All Modules to Exit.vi
在指定的超时时间内等待一组CSM模块全部下线,返回等待时间,超时后返回错误及未下线的模块名称。通常用于程序退出。
– 输入控件(Controls) –
- CSM Names: CSM 模块名称。
- Wait (5000ms): 等待模块上线的超时时间,默认为5000 ms。
– 输出控件(Indicators) –
- CSMs Left: 超时后还未下线的CSM模块。
- Waited (ms): 已等待的时间。
CSM - Post Message.vi
发送异步消息到指定的CSM模块。由于是异步发送,因此不会等待返回,消息发送后继续执行之后的代码。如果CSM模块不存在,将返回Target Error。
![NOTE] 使用API发送的异步消息均为异步无返回消息,无法获取异步消息的返回参数。
异步消息
异步消息是消息的一种。CSM发出异步消息后,将立即继续执行后续代码,而不会等待被调用方完成消息处理。异步消息分为异步调用(
->)和异步不等待返回(->|),区别只在于异步无返回消息,当被调用方完成操作后,不会将结果返回给调用方。调用方会发生的错误:
- 如果输入的目标模块为
"",会产生NO Target Error。- 如果输入的模块不存在,会产生
Target Error。调用方不会停留等待返回:
- 如果调用方是CSM模块,会在Parse State Queue++ VI发送消息后,进入
Async Message Posted状态。- 如果是API调用,会继续执行后续代码,API只能发送异步无返回异步消息。
返回:
- 如果调用方是CSM模块
- 正常情况下,会进入
Async Response状态处理返回。被调用方发生的错误,此信息仍然是消息的结果,在Async Response状态处理,可以从Additional Information中获取此错误信息。- 如果是调用方发生的错误,会导致CSM状态机进入
Error Handler模块,处理错误。- API只能发送异步无返回异步消息,无返回。
CSM消息的目标模块说明
普通模式下,CSM消息的目标模块为指定的模块名称。 系统级模块只是名称上以
.起始,CSM消息的目标模块包含.的名称, 如申请的模块名称为.System,CSM消息的目标模块就是.System。 协作者模式下,CSM消息的目标模块只能是整体模块名称,不能是节点的名称,例如申请的模块名称为Worker#,CSM消息的目标模块就是Worker。 责任链模式下,CSM消息的目标模块只能是整体模块名称,不能是节点的名称。例如申请的模块名称为Chain$1,CSM消息的目标模块就是Chain。
– 输入控件(Controls) –
- Current Module (“” to Generate an ID): 当前模块名称,当没有输入时,生成一个临时ID,便于调试判断位置。
- State: 消息字符串。
- Arguments (“”): 消息参数。
- Target Module: 目标模块的名称。
CSM - Wait and Post Message.vi
发送异步消息到指定的CSM模块,由于是异步发送,因此不会等待返回,消息发送后继续执行之后的代码。如果CSM模块不存在,将会等待指定的超时时间,仍然超时会返回超时错误。
异步消息
异步消息是消息的一种。CSM发出异步消息后,将立即继续执行后续代码,而不会等待被调用方完成消息处理。异步消息分为异步调用(
->)和异步不等待返回(->|),区别只在于异步无返回消息,当被调用方完成操作后,不会将结果返回给调用方。调用方会发生的错误:
- 如果输入的目标模块为
"",会产生NO Target Error。- 如果输入的模块不存在,会产生
Target Error。调用方不会停留等待返回:
- 如果调用方是CSM模块,会在Parse State Queue++ VI发送消息后,进入
Async Message Posted状态。- 如果是API调用,会继续执行后续代码,API只能发送异步无返回异步消息。
返回:
- 如果调用方是CSM模块
- 正常情况下,会进入
Async Response状态处理返回。被调用方发生的错误,此信息仍然是消息的结果,在Async Response状态处理,可以从Additional Information中获取此错误信息。- 如果是调用方发生的错误,会导致CSM状态机进入
Error Handler模块,处理错误。- API只能发送异步无返回异步消息,无返回。
CSM消息的目标模块说明
普通模式下,CSM消息的目标模块为指定的模块名称。 系统级模块只是名称上以
.起始,CSM消息的目标模块包含.的名称, 如申请的模块名称为.System,CSM消息的目标模块就是.System。 协作者模式下,CSM消息的目标模块只能是整体模块名称,不能是节点的名称,例如申请的模块名称为Worker#,CSM消息的目标模块就是Worker。 责任链模式下,CSM消息的目标模块只能是整体模块名称,不能是节点的名称。例如申请的模块名称为Chain$1,CSM消息的目标模块就是Chain。
– 输入控件(Controls) –
- Current Module (“” to Generate an ID): 当前模块名称,当没有输入时,生成一个临时ID,便于调试判断位置。
- State: 消息字符串。
- Arguments (“”): 消息参数。
- Target Module: 目标模块的名称。
- Wait (5000ms): 等待模块上线的超时时间,默认为5000 ms。
– 输出控件(Indicators) –
- Waited (ms): 已等待的时间。
CSM - Send Message and Wait for Reply.vi
发送同步消息到CSM,等待返回后继续执行之后的代码。
- 超时未获取到返回消息,将返回CSM Timeout Error。
- 目标模块不存在,将返回Target Error。
同步消息
同步消息是消息的一种。CSM发出同步消息后,将暂停状态变化,等待被调用方完成消息处理。同步消息通过
-@描述。 一个JKISM模块通过同步消息对另一个模块的调用,叫做同步调用。调用方会发生的错误:
- 如果输入的目标模块为
"",会产生NO Target Error。- 如果输入的模块不存在,会产生
Target Error。- 如果输入的模块存在,但是在指定的时间内还未完成处理,会产生
Timeout Error。调用方会停留等待返回:
- 如果调用方是CSM模块,会停留在Parse State Queue++ VI中。
- 如果是API调用,会停留在调用VI,例如CSM - Send Message and Wait for Reply VI。
返回:
- 如果调用方是CSM模块
- 正常情况下,会进
Response状态处理返回。- 如果是调用方发生的错误,会导致CSM状态机进入
Error Handler模块,处理错误。- 如果是被调用方发生的错误,此信息仍然是消息的结果,在
Response状态处理,可以从Additional Information中获取。- 如果是API调用
- Response输出为返回。
- 调用方和被调用方发生的错误,会合并到错误簇输出。
- Ref: 全局超时时间设置
CSM消息的目标模块说明
普通模式下,CSM消息的目标模块为指定的模块名称。 系统级模块只是名称上以
.起始,CSM消息的目标模块包含.的名称, 如申请的模块名称为.System,CSM消息的目标模块就是.System。 协作者模式下,CSM消息的目标模块只能是整体模块名称,不能是节点的名称,例如申请的模块名称为Worker#,CSM消息的目标模块就是Worker。 责任链模式下,CSM消息的目标模块只能是整体模块名称,不能是节点的名称。例如申请的模块名称为Chain$1,CSM消息的目标模块就是Chain。
– 输入控件(Controls) –
- Current Module (“” to Generate an ID): 当前模块名称,当没有输入时,生成一个临时ID,便于调试判断位置。
- State: 消息字符串。
- Arguments (“”): 消息参数。
- Target Module: 目标CSM模块名称。
- Response Timeout (-2 Using Global Settings): 等待返回的超时设置,默认5000 ms。
– 输出控件(Indicators) –
- Response: 返回的响应。
- Source CSM: 返回的响应的来源CSM模块名称,在协作者模式或责任链模式下返回节点的名称。
CSM - Wait and Send Message for Reply.vi
发送同步消息到CSM,等待返回后继续执行之后的代码。如果CSM模块不存在,将会等待指定的超时时间。可能出现以下错误:
- 如果模块发送时不存在,等待超时后返回超时错误。
- 可以发送消息,但超时未获取到返回消息,将返回CSM Timeout Error。
同步消息
同步消息是消息的一种。CSM发出同步消息后,将暂停状态变化,等待被调用方完成消息处理。同步消息通过
-@描述。 一个JKISM模块通过同步消息对另一个模块的调用,叫做同步调用。调用方会发生的错误:
- 如果输入的目标模块为
"",会产生NO Target Error。- 如果输入的模块不存在,会产生
Target Error。- 如果输入的模块存在,但是在指定的时间内还未完成处理,会产生
Timeout Error。调用方会停留等待返回:
- 如果调用方是CSM模块,会停留在Parse State Queue++ VI中。
- 如果是API调用,会停留在调用VI,例如CSM - Send Message and Wait for Reply VI。
返回:
- 如果调用方是CSM模块
- 正常情况下,会进
Response状态处理返回。- 如果是调用方发生的错误,会导致CSM状态机进入
Error Handler模块,处理错误。- 如果是被调用方发生的错误,此信息仍然是消息的结果,在
Response状态处理,可以从Additional Information中获取。- 如果是API调用
- Response输出为返回。
- 调用方和被调用方发生的错误,会合并到错误簇输出。
- Ref: 全局超时时间设置
CSM消息的目标模块说明
普通模式下,CSM消息的目标模块为指定的模块名称。 系统级模块只是名称上以
.起始,CSM消息的目标模块包含.的名称, 如申请的模块名称为.System,CSM消息的目标模块就是.System。 协作者模式下,CSM消息的目标模块只能是整体模块名称,不能是节点的名称,例如申请的模块名称为Worker#,CSM消息的目标模块就是Worker。 责任链模式下,CSM消息的目标模块只能是整体模块名称,不能是节点的名称。例如申请的模块名称为Chain$1,CSM消息的目标模块就是Chain。
– 输入控件(Controls) –
- Current Module (“” to Generate an ID): 当前模块名称,当没有输入时,生成一个临时ID,便于调试判断位置。
- State: 消息字符串。
- Arguments (“”): 消息参数。
- Target Module: CSM模块名称。
- Wait (5000ms): 等待模块上线的超时时间,默认为5000 ms。
- Response Timeout (-2 Using Global Settings): 同步调用的超时时间,默认为-2,使用全局设置。你可以通过CSM - Set TMO of Sync-Reply VI设置全局超时时间。
– 输出控件(Indicators) –
- Response: 返回的响应。
- Source CSM: 返回的响应的来源CSM模块名称,在协作者模式或责任链模式下返回节点的名称。
- Waited (ms): 已等待的时间。
CSM - Run Script.vi
一次性的执行多条CSM指令,支持同步消息、异步消息和订阅。
临时变量支持
CSM - Run Script.vi 支持一个额外的补充语法,将返回值保存到指定的临时变量中,供后续指令使用。使用 => 符号将返回值保存到变量中,变量名不区分大小写。在之后的指令中,可以通过 ${变量名} 的语法引用该变量。
示例如下:
API: Random -@ csm => var1
API: Random -@ csm => var2
API: echo >> ${var1} -@ csm
API: echo >> ${var2} -@ csm
API: echo >> ${var1},${var2} -@ csm
额外指令支持
- Wait: 等待指定的毫秒数,语法为
Wait >> 毫秒数,例如Wait: 1000表示等待1000毫秒。
API: Do Something -@ csm
Wait: 1000 // 等待1000毫秒,然后继续执行下一条指令
API: Do Something Else -@ csm
CSM消息的目标模块说明
普通模式下,CSM消息的目标模块为指定的模块名称。 系统级模块只是名称上以
.起始,CSM消息的目标模块包含.的名称, 如申请的模块名称为.System,CSM消息的目标模块就是.System。 协作者模式下,CSM消息的目标模块只能是整体模块名称,不能是节点的名称,例如申请的模块名称为Worker#,CSM消息的目标模块就是Worker。 责任链模式下,CSM消息的目标模块只能是整体模块名称,不能是节点的名称。例如申请的模块名称为Chain$1,CSM消息的目标模块就是Chain。
– 输入控件(Controls) –
- Current Module (“” to Generate an ID): 当前模块名称,当没有输入时,生成一个临时ID,便于调试判断位置。
- CSM Scripts: 待运行的CSM指令。
- Continue If Error? (F): 发生错误时是否继续执行, 默认不继续执行。
- Wait (5000 ms): 等待超时时间,默认为5000 ms。
- Response Timeout (-2 Using Global Settings): 同步调用的超时时间,默认为-2,使用全局设置。你可以通过CSM - Set TMO of Sync-Reply VI设置全局超时时间。
– 输出控件(Indicators) –
- Response: 执行脚本的返回结果。只有同步消息才会携带返回,其他的指令对应列为空字符串。
- Scripts Left: 剩余未执行的脚本。
CSM - Broadcast Event.vi
获取CSM状态更改事件句柄。
– 输入控件(Controls) –
- CSM Module: CSM模块名称。
- Wait (5000 ms): 等待超时时间,默认为5000 ms。
– 输出控件(Indicators) –
- Status Change Event: CSM状态更改事件句柄。
- Waited (ms): 已等待的时间。
CSM - Destroy Broadcast Event.vi
释放CSM状态更改事件句柄。
– 输入控件(Controls) –
- Status Change Event: CSM状态更改事件句柄。
CSM - Module Exit Event.vi
获取CSM模块退出事件句柄,如果模块不存在,将会等待指定的超时时间。超时过后如果模块还不存在,将返回超时错误。
CSM高级模式的模块(协作者模式、责任链模式)只有在最后一个节点退出后,才会触发模块退出事件。
– 输入控件(Controls) –
- Name (“” to Use UUID) In: CSM模块名称。请参考CSM名称规则。
- Wait (5000 ms): 等待超时时间,默认为5000 ms。
– 输出控件(Indicators) –
- CSM Exit Event: CSM模块退出事件句柄。
- Waited (ms): 已等待的时间。
属性(Attribute)
CSM - Set Module Attribute.vi
设置指定模块的属性值。如果属性不存在,将创建一个新的属性,Replaced返回FALSE, 否则返回TRUE。如果CSM模块不存在,将会等待指定的超时时间,超时会返回超时错误。
- Ref: CSM模块属性
参考范例:[CSM-Example]\0. Base Concepts\6. Module Attributes.vi。
– 输入控件(Controls) –
- CSM Name: CSM模块名称。
- Attribute: 属性名称,不能为空字符串。
- Value: 属性数据。
- Wait (5000 ms): 等待超时时间,默认为5000 ms。
– 输出控件(Indicators) –
- CSM Name (Dup): 输入的CSM模块名称副本。
- Replaced: 属性是否被替换。
- Waited (ms): 已等待的时间。
CSM - Get Module Attribute.vi
读取指定模块的属性值。如果属性不存在,将返回默认值,Found返回FALSE, 否则返回TRUE。如果CSM模块不存在,将会等待指定的超时时间,超时会返回超时错误。
- Ref: CSM模块属性
参考范例:[CSM-Example]\0. Base Concepts\6. Module Attributes.vi。
– 输入控件(Controls) –
- CSM Name: CSM模块名称。
- Attribute: 属性名称,不能为空字符串。
- Default Value (Empty Variant): 默认值,当属性不存在时返回。
- Wait (5000 ms): 等待超时时间,默认为 5000ms。
– 输出控件(Indicators) –
- CSM Name (Dup): 输入的CSM模块名称副本。
- Found: 属性是否存在。
- Value: 属性值。
- Waited (ms): 已等待的时间。
CSM - List Module Attributes.vi
列出指定模块的所有属性名称。如果CSM模块不存在,将会等待指定的超时时间,超时会返回超时错误。
- Ref: CSM模块属性
参考范例:[CSM-Example]\0. Base Concepts\6. Module Attributes.vi。
– 输入控件(Controls) –
- CSM Name: CSM模块名称。
- Include Value? (F): 是否包含属性值,默认不包含。
- Wait (5000 ms): 等待超时时间,默认为5000 ms。
– 输出控件(Indicators) –
- CSM Name (Dup): 输入的CSM模块名称副本。
- Attributes: 属性名称列表。
- Values: 属性值列表。
- Waited (ms): 已等待的时间。
CSM - Delete Module Attribute.vi
删除指定模块的属性。如果属性不存在,将返回FALSE, 否则返回TRUE。如果CSM模块不存在,将会等待指定的超时时间,超时会返回超时错误。
- Ref: CSM模块属性
参考范例:[CSM-Example]\0. Base Concepts\6. Module Attributes.vi。
– 输入控件(Controls) –
- CSM Name: CSM模块名称。
- Attribute: 属性名称,不能为空字符串。
- Wait (5000 ms): 等待超时时间,默认为5000 ms。
– 输出控件(Indicators) –
- CSM Name (Dup): 输入的CSM模块名称副本。
- Found: 属性是否存在。
- Waited (ms): 已等待的时间。