核心功能(Core Functions)
Parse State Queue++.vi
解析CSM状态队列,返回将执行的下一个当前状态、参数等信息。
CSM模块间通信类型
CSM模块间的通信分为两类: 消息和广播。
- 消息: 模块间1:1的通信,根据消息处理的方式,又可分为同步调用(
-@)、异步调用(->)、异步不等待返回(->|)等。- 广播: 模块间1:N的通信,广播模块会将广播推送给所有订阅了该广播的模块。根据广播处理的优先级,又可分为信号广播(status)和中断广播(interrupt)。
– 输入控件(Controls) –
- Response Arguments: 来自上一个状态的响应参数。它应该连接到 CSM的移位寄存器,用于传递外部调用的返回值。
- Name (“” to use UUID): CSM模块名称。请参考CSM名称规则。
- State Queue: 整个状态队列被连接到此输入。这应该来自CSM的移位寄存器。
- Previous Error: 来自CSM的错误簇被连接到此输入。如果发生错误并出现在此输入上,则当前状态输出将返回
Error Handler状态。 - Dequeue (1 ms): 检查CSM消息队列的超时设置,默认为1 ms, 不设置为0是为了避免某些错误情况下产生海量的空消息。
- Response Timeout (-2 Use Global Settings): 同步调用的超时时间,默认为-2,使用全局设置。您可以通过CSM - Set TMO of Sync-Reply VI设置全局超时时间。
- Allowed Messages (Empty for All): 允许的消息名称列表,为空表示允许所有消息。
– 输出控件(Indicators) –
- Name Used: 分配给该CSM模块的实际名称。
- Remaining States: 拼接后的所有状态及参数。
- Current State: 将执行的下一个当前状态。
- Arguments: 返回可能在当前状态字符串中使用的任何参数,这些参数位于
>>字符之后。注意: 参数变量不得包含任何不可打印的字符,如换行符或回车符。 - Additional Information: 额外的补充信息。广播触发的状态中,该信息包含广播的名称、参数。
- Source CSM: 如果Current State由外部发送,则这是源CSM模块名称。
Build State String with Arguments++.vi
该VI用于构建CSM消息字符串(包含状态、参数、目标模块、消息类型等信息),以便发送到其他CSM模块。
CSM消息类型
CSM消息分为三类: 同步调用(
-@)、异步调用(->)、异步不等待返回(->|)。
- 同步调用(
-@): 模块会等待目标模块返回结果,才会继续执行后续代码。- 异步调用(
->): 模块会立即继续执行后续代码,而不会等待目标模块返回结果。- 异步不等待返回(
->|): 模块会立即继续执行后续代码,而不会等待目标模块返回结果。与异步调用(->)不同的是,异步不等待返回(->|)不会等待目标模块返回结果,也不会抛出错误。
CSM消息格式解析
[CSM消息字符串(CSM Message)] >> [参数(Arguments)] [消息类型符号(Message Symbol) ->|,->,-@] [目标模块(Target Module)] // [注释(Comments)]
- CSM 消息字符串(CSM Message): CSM的消息,不可包含CSM关键字和换行符。
>>: CSM消息字符串(CSM Message)和参数(Arguments)的分隔符。- 参数(Arguments): CSM消息的参数,不可包含CSM关键字和换行符。
- 消息类型符号(Message Symbol): 消息类型符号,用于标识消息类型,包括同步调用(
-@)、异步调用(->)、异步不等待返回(->|)等。- 目标模块(Target Module): 消息发送的目标模块,如为空,则表示消息会被本模块处理。为空时,消息类型符号也不能存在。
- 注释(Comments): 注释信息,不会被解析。
例如:
发送给本地状态机时,<b>Target Module ("")</b>应设为空
If State = A并且没有参数,那么<b>State with Arguments</b> = A
If State = A , Arguments = B那么 <b>State with Arguments</b> = A >> B
在发送给其他CSM的情况下,假设<b>Target Module ("")</b>的名称为"Target"。
- 同步调用(发送消息后等待返回):
If State = A并且没有参数,那么<b>State with Arguments</b> = A -@target
If State = A , Arguments = B那么 <b>State with Arguments</b> = A >> B -@target
- 异步调用(发送消息后将进入"Async Message Posted"状态,当外部模块处理完毕后,本地模块将收到"Async Response"消息):
If State = A并且没有参数,那么<b>State with Arguments</b> = A ->target
If State = A , Arguments = B那么<b>State with Arguments</b> = A >> B ->target
– 输入控件(Controls) –
- State: 状态或消息名称字符串。
- Arguments (“”): State的参数。
- Target Module (“”): 该消息发送的目标CSM模块名称。
- Type: 消息类型,可选Async、Async Without Reply、Sync。
– 输出控件(Indicators) –
- CSM Message String: 拼接生成的CSM消息字符串。
Build Message with Arguments++.vi
该VI用于构建CSM消息字符串及操作字符串。
消息拼接API
该类型API不会直接发送消息,仅用于拼接消息字符串。需将字符串并入CSM的状态队列后,在Parse State Queue++ VI中发送消息并执行操作。在熟悉CSM规则的情况下,可不必使用此类API,直接在字符串中键入对应的消息字符串或操作字符串。
CSM模块间通信类型
CSM模块间的通信分为两类: 消息和广播。
- 消息: 模块间1:1的通信,根据消息处理的方式,又可分为同步调用(
-@)、异步调用(->)、异步不等待返回(->|)等。- 广播: 模块间1:N的通信,广播模块会将广播推送给所有订阅了该广播的模块。根据广播处理的优先级,又可分为信号广播(status)和中断广播(interrupt)。
Build Message with Arguments(Auto Check).vi
拼接生成CSM消息字符串,消息的类型符号会根据输入的State with Arguments自动检测。
消息拼接API
该类型API不会直接发送消息,仅用于拼接消息字符串。需将字符串并入CSM的状态队列后,在Parse State Queue++ VI中发送消息并执行操作。在熟悉CSM规则的情况下,可不必使用此类API,直接在字符串中键入对应的消息字符串或操作字符串。
CSM消息的目标模块说明
普通模式下,CSM消息的目标模块为指定的模块名称。 系统级模块只是名称上以
.起始,CSM消息的目标模块包含.的名称, 如申请的模块名称为.System,CSM消息的目标模块就是.System。 协作者模式下,CSM消息的目标模块只能是整体模块名称,不能是节点的名称,例如申请的模块名称为Worker#,CSM消息的目标模块就是Worker。 责任链模式下,CSM消息的目标模块只能是整体模块名称,不能是节点的名称。例如申请的模块名称为Chain$1,CSM消息的目标模块就是Chain。
– 输入控件(Controls) –
- State with Arguments: CSM状态字符串,可包含参数和目标模块信息。
- Arguments (“”): 参数信息,State with Arguments中包含的参数将被替换。
- Target Module (“”): 目标模块,为空时将使用State with Arguments中的默认模块。
– 输出控件(Indicators) –
- CSM Message String: 拼接生成的CSM消息字符串。
Build Synchronous Message with Arguments.vi
拼接生成CSM同步消息字符串,消息类型符号为-@,例如:
Message >> Arguments -@ Target
消息拼接API
该类型API不会直接发送消息,仅用于拼接消息字符串。需将字符串并入CSM的状态队列后,在Parse State Queue++ VI中发送消息并执行操作。在熟悉CSM规则的情况下,可不必使用此类API,直接在字符串中键入对应的消息字符串或操作字符串。
同步消息
同步消息是消息的一种。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输出为返回。
- 调用方和被调用方发生的错误,会合并到错误簇输出。
CSM消息的目标模块说明
普通模式下,CSM消息的目标模块为指定的模块名称。 系统级模块只是名称上以
.起始,CSM消息的目标模块包含.的名称, 如申请的模块名称为.System,CSM消息的目标模块就是.System。 协作者模式下,CSM消息的目标模块只能是整体模块名称,不能是节点的名称,例如申请的模块名称为Worker#,CSM消息的目标模块就是Worker。 责任链模式下,CSM消息的目标模块只能是整体模块名称,不能是节点的名称。例如申请的模块名称为Chain$1,CSM消息的目标模块就是Chain。
– 输入控件(Controls) –
- State with Arguments: CSM状态字符串。
- Arguments (“”): 参数信息。State with Arguments中包含的参数会被替换。
- Target Module (“”): 目标模块。为空时,将使用State with Arguments中的默认模块。
– 输出控件(Indicators) –
- CSM Message String: 拼接生成的CSM消息字符串。
Build Asynchronous Message with Arguments.vi
拼接生成CSM异步消息字符串,消息类型符号为->,例如:
Message >> Arguments -> Target
消息拼接API
该类型API不会直接发送消息,仅用于拼接消息字符串。需将字符串并入CSM的状态队列后,在Parse State Queue++ VI中发送消息并执行操作。在熟悉CSM规则的情况下,可不必使用此类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) –
- State with Arguments: CSM状态字符串。
- Arguments (“”): 参数信息。State with Arguments中包含的参数会被替换。
- Target Module (“”): 目标模块。为空时,将使用State with Arguments中的默认模块。
– 输出控件(Indicators) –
- CSM Message String: 拼接生成的CSM消息字符串。
Build No-Reply Asynchronous Message with Arguments.vi
拼接生成CSM异步无返回消息字符串,消息类型符号为->|,例如:
Message >> Arguments ->| Target
消息拼接API
该类型API不会直接发送消息,仅用于拼接消息字符串。需将字符串并入CSM的状态队列后,在Parse State Queue++ VI中发送消息并执行操作。在熟悉CSM规则的情况下,可不必使用此类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) –
- State with Arguments: CSM状态字符串。
- Arguments (“”): 参数信息。State with Arguments中包含的参数会被替换。
- Target Module (“”): 目标模块。为空时,将使用State with Arguments中的默认模块。
– 输出控件(Indicators) –
- CSM Message String: 拼接生成的CSM消息字符串。
Build Status Broadcast Message.vi
拼接普通状态消息字符串,消息格式如下:
Status >> Arguments -><status>
//以下字符串为等效操作,仅为了更容易键入记忆,定义了更多的操作字符。
Status >> Arguments -><broadcast>
Status >> Arguments -><all>
消息拼接API
该类型API不会直接发送消息,仅用于拼接消息字符串。需将字符串并入CSM的状态队列后,在Parse State Queue++ VI中发送消息并执行操作。在熟悉CSM规则的情况下,可不必使用此类API,直接在字符串中键入对应的消息字符串或操作字符串。
– 输入控件(Controls) –
- State with Arguments: CSM普通状态消息字符串。
- Arguments (“”): 参数信息。State with Arguments中包含的参数,会被替换。
– 输出控件(Indicators) –
- CSM Message String: 拼接生成的CSM消息字符串。
Build Interrupt Broadcast Message.vi
拼接中断状态消息,消息格式如下:
Status >> Arguments -><interrupt>
消息拼接API
该类型API不会直接发送消息,仅用于拼接消息字符串。需将字符串并入CSM的状态队列后,在Parse State Queue++ VI中发送消息并执行操作。在熟悉CSM规则的情况下,可不必使用此类API,直接在字符串中键入对应的消息字符串或操作字符串。
– 输入控件(Controls) –
- State with Arguments: CSM中断状态消息字符串。
- Arguments (“”): 参数信息。State with Arguments中包含的参数会被替换。
– 输出控件(Indicators) –
- CSM Message String: 拼接生成的CSM消息字符串。
Build Register Message.vi
拼接注册状态操作消息字符串,消息格式如下:
//[source-state]@[source-module] >> [response-message]@[response-module] -><register>
status @ Source >> API @ Target -><register>
举例: 将下载器模块的下载完毕消息,绑定到播放器模块的开始播放API
//下载器模块的下载完毕消息,绑定到播放器模块的开始播放API
DownloadFinished@Downloader >> StartPlay@Player -><register>
//当播放器模块中执行消息时,Player 可缺省
DownloadFinished@Downloader >> StartPlay -><register>
//当多个模块都有下载完毕消息时,可以使用*表示将所有模块的该消息都绑定到播放器模块的开始播放API
DownloadFinished@* >> StartPlay@Player -><register>
消息拼接API
该类型API不会直接发送消息,仅用于拼接消息字符串。需将字符串并入CSM的状态队列后,在Parse State Queue++ VI中发送消息并执行操作。在熟悉CSM规则的情况下,可不必使用此类API,直接在字符串中键入对应的消息字符串或操作字符串。
CSM订阅
订阅是将广播与绑定的接口(API)关联起来,当广播被触发时,会调用绑定的接口(API)。当然,也可以取消订阅。在CSM中,有以下两种广播:
- 广播(Broadcast): 广播由模块显示的调用广播消息发送,参数需要显示给入。
- 状态(State): CSM模块的任意一个状态,也可以被订阅。被触发的API收到的参数,为CSM状态的Response。
// 注册[CSM广播(CSM Broadcast)]@[源模块(SourceModule)] >> [绑定的接口(API)]@[目标模块(TargetModule)] -><register> // [注释(Comments)]// 取消注册[CSM广播(CSM Broadcast)]@[源模块(SourceModule)] >> [绑定的接口(API)]@[目标模块(TargetModule)] -><unregister> // [注释(Comments)]
- CSM广播: 由源模块定义,参考”CSM 广播格式解析”。
- 源模块: 广播的模块,如果订阅任意模块的广播,源模块可以用
*表示。- 绑定的接口: 由目标模块定义,为目标模块对外的接口。
- 目标模块: 绑定的接口所在的模块。当在CSM模块中表示订阅到本模块,可忽略。同时省略前面的@分隔符。
<register>/<unregister>: 注册/取消订阅的操作类型定义。- 注释(Comments): 注释信息,不会被解析。
CSM订阅位置
CSM订阅所添加的订阅规则,分为内部添加和外部添加两种。
- 外部添加:外部添加的规则为全局规则,不会随着CSM模块的退出而自动删除,需要手动取消订阅。
- 使用
-<register>语句添加的规则,如果指明了API所在的模块名称,则为外部添加。- 使用 API CSM - Register Broadcast VI 添加的规则,均为外部添加。
- 内部添加:CSM模块内部添加的规则,会随着CSM模块的退出而自动删除,无需手动取消订阅。
- 只有使用语句
-<register>添加的规则,且API未指明模块名称时,才为内部添加。例如:
status@sourceModule >> API@TargetModule -><register> // 外部添加status@sourceModule >> API -><register> // 内部添加
CSM广播优先级
从名称上就可以看出,广播是有优先级的。状态广播(State)是一种特殊的广播,默认它的优先级与信号广播(Status)相同。其中中断广播(Interrupt)为高优先级广播,与同步消息均使用高优先级队列进行传递;信号广播(Status)为低优先级广播,与异步消息均使用低优先级队列进行传递。
// 默认的广播为信号广播,例如:ModuleInternalChange >> Arguments -> <broadcast> // 低优先级ModuleInternalChange >> Arguments -> <broadcast> // 低优先级默认的优先级由发送方定义,通过广播格式中的广播类型(Broadcast Type)进行定义。
// 发送方可以定义广播的优先级ModuleInternalChange >> Arguments -> <status> // 低优先级ModuleInternalChange >> Arguments -> <interrupt> // 高优先级默认的订阅不会改变优先级,但可以通过特殊的订阅格式,改变订阅后的广播优先级。
// 默认的订阅不改变优先级ModuleInternalChange@SourceModule >> API@TargetModule -><register>// 将订阅的广播改为普通优先级,无论之前是何优先级ModuleInternalChange@SourceModule >> API@TargetModule -><register as status>// 将订阅的广播改为高优先级,无论之前是何优先级ModuleInternalChange@SourceModule >> API@TargetModule -><register as interrupt>
– 输入控件(Controls) –
- Target CSM: 订阅状态的CSM模块名称。
- Source CSM (* as Default): 发出状态的CSM模块名称。
- Status: 注册的状态。
- API (If “”, Same As “Status”): 订阅状态模块响应的API名称。
- Priority (No Change): 订阅后的广播优先级。
– 输出控件(Indicators) –
- CSM Message String: 拼接生成的CSM消息字符串。
Build Unregister Message.vi
拼接取消注册状态操作消息字符串,消息格式如下:
//[source-state]@[source-module] >> [response-message]@[response-module] -><unregister>
status @ Source >> API @ Target -><unregister>
举例: 取消下载器模块的下载完毕消息,绑定到播放器模块的开始播放API
//下载器模块的下载完毕消息,绑定到播放器模块的开始播放API
DownloadFinished@Downloader >> StartPlay@Player -><unregister>
//当播放器模块中执行消息时,Player 可缺省
DownloadFinished@Downloader >> StartPlay -><unregister>
- 协作者模式(Worker Mode)下:模块的内部订阅规则,只会在全部节点退出后才会自动取消订阅。
- 责任链模式(Chain Mode)下:模块的内部订阅规则,节点的内部订阅规则,会随着节点的退出而自动取消订阅。
消息拼接API
该类型API不会直接发送消息,仅用于拼接消息字符串。需将字符串并入CSM的状态队列后,在Parse State Queue++ VI中发送消息并执行操作。在熟悉CSM规则的情况下,可不必使用此类API,直接在字符串中键入对应的消息字符串或操作字符串。
CSM订阅
订阅是将广播与绑定的接口(API)关联起来,当广播被触发时,会调用绑定的接口(API)。当然,也可以取消订阅。在CSM中,有以下两种广播:
- 广播(Broadcast): 广播由模块显示的调用广播消息发送,参数需要显示给入。
- 状态(State): CSM模块的任意一个状态,也可以被订阅。被触发的API收到的参数,为CSM状态的Response。
// 注册[CSM广播(CSM Broadcast)]@[源模块(SourceModule)] >> [绑定的接口(API)]@[目标模块(TargetModule)] -><register> // [注释(Comments)]// 取消注册[CSM广播(CSM Broadcast)]@[源模块(SourceModule)] >> [绑定的接口(API)]@[目标模块(TargetModule)] -><unregister> // [注释(Comments)]
- CSM广播: 由源模块定义,参考”CSM 广播格式解析”。
- 源模块: 广播的模块,如果订阅任意模块的广播,源模块可以用
*表示。- 绑定的接口: 由目标模块定义,为目标模块对外的接口。
- 目标模块: 绑定的接口所在的模块。当在CSM模块中表示订阅到本模块,可忽略。同时省略前面的@分隔符。
<register>/<unregister>: 注册/取消订阅的操作类型定义。- 注释(Comments): 注释信息,不会被解析。
CSM订阅位置
CSM订阅所添加的订阅规则,分为内部添加和外部添加两种。
- 外部添加:外部添加的规则为全局规则,不会随着CSM模块的退出而自动删除,需要手动取消订阅。
- 使用
-<register>语句添加的规则,如果指明了API所在的模块名称,则为外部添加。- 使用 API CSM - Register Broadcast VI 添加的规则,均为外部添加。
- 内部添加:CSM模块内部添加的规则,会随着CSM模块的退出而自动删除,无需手动取消订阅。
- 只有使用语句
-<register>添加的规则,且API未指明模块名称时,才为内部添加。例如:
status@sourceModule >> API@TargetModule -><register> // 外部添加status@sourceModule >> API -><register> // 内部添加
– 输入控件(Controls) –
- Target CSM: 订阅状态的CSM模块名称。
- Source CSM (* as Default): 发出状态的CSM模块名称。
- Status: 注册的状态。
- API (If “”, Same As “Status”): 取消订阅状态模块响应的API名称。
– 输出控件(Indicators) –
- CSM Message String: 拼接生成的CSM消息字符串。
CSM - Replace Marks in Messages.vi
该VI主要为了能够便捷地编辑多条CSM消息字符串,提供批量替换标记的功能。有4个标记可以替换:
-
标记: 通常表示相同的参数
-
标记: 通常表示相同的目标 - <1> 标记: 表示自定义标记1
- <2> 标记: 表示自定义标记2
例如: 接线端<target>连接了字符串为DAQDevice,States with Replace Token 字符串为:
text
Initialize -@ <target>
Configure -@ <target>
Read -@ <target>
Close -@ <target>
States输出为:
text
Initialize -@ DAQDevice
Configure -@ DAQDevice
Read -@ DAQDevice
Close -@ DAQDevice
消息拼接API
该类型API不会直接发送消息,仅用于拼接消息字符串。需将字符串并入CSM的状态队列后,在Parse State Queue++ VI中发送消息并执行操作。在熟悉CSM规则的情况下,可不必使用此类API,直接在字符串中键入对应的消息字符串或操作字符串。
– 输入控件(Controls) –
- States with Replace Token: 带有替换标记的CSM状态字符串。
- : 标记: 通常表示相同的参数。
</b>: 标记: 通常表示相同的目标。 - <1>: 自定义标记1。
- <2>: 自定义标记2。
– 输出控件(Indicators) –
- States: 替换后的状态字符串。
CSM - Replace Mark with String Array.vi
将单条状态字符串中的标签替换为数组字符串,并合并成描述一组状态的符串。
例如: 对于Draw >> <1> -@ Painter,Tag应该选择<1>
输入数组[Line,Circle,Rectangle],可以得到:
Draw >> Line -@ Painter
Draw >> Circle -@ Painter
Draw >> Rectangle -@ Painter
– 输入控件(Controls) –
- single-line text:单条状态字符串,包含
<1>、<2>、<3>等标签。 - Substitution Mark:要替换的标签,例如
<1>、<2>、<3>等标签。 - replace string:待替换的数组字符串。
– 输出控件(Indicators) –
- States:合并后的状态字符串。
CSM - Broadcast Status Change.vi
向系统广播状态更改,已注册状态的CSM模块将接收此状态更改,例如:
//广播状态更改
Status >> Arguments -><broadcast>
CSM 的状态队列操作API
该类型API不会直接发送消息,只是拼接消息字符串。在Parse State Queue++.vi中发送消息、执行操作。与消息拼接API不同的是,此类API会包含CSM的状态队列字符串输入,相当于在状态队列中插入消息。
– 输入控件(Controls) –
- Status with Arguments: 将被广播的状态及参数,支持多行,每行状态都将被添加
-><broadcast>。 - State Queue: 整个状态队列被连接到此输入。
- Broadcast? (T): 控制是否广播的开关输入。
– 输出控件(Indicators) –
- Remaining States: 拼接后的所有状态及参数。
Add State(s) to Queue By BOOL++.vi
将CSM消息字符串并入CSM消息队列中。提供了TRUE/FALSE两种状态的字符串选项,能够避免使用条件结构,提高代码可读性和编程效率。
CSM 的状态队列操作API
该类型API不会直接发送消息,只是拼接消息字符串。在Parse State Queue++.vi中发送消息、执行操作。与消息拼接API不同的是,此类API会包含CSM的状态队列字符串输入,相当于在状态队列中插入消息。
Add State(s) to Queue By BOOL(Element).vi
将CSM消息字符串并入CSM消息队列中。提供了TRUE/FALSE两种状态的字符串选项,能够避免使用条件结构,提高代码可读性和编程效率。
- Ref: CSM的状态队列操作API
– 输入控件(Controls) –
- State Queue (“”): 整个状态队列被连接到此输入。
- Condition: 选择连接到TRUE终端或FALSE终端的状态字符串的标志。
- High Priority? (F): 如果为TRUE,状态将被插入到State Queue (“”)的前端;如果为FALSE,它被附加到尾部。
- TRUE (“”): Condition为TRUE时插入的状态字符串。
- FALSE (“”): Condition为FALSE时插入的状态字符串。
– 输出控件(Indicators) –
- Remaining States: 拼接后的所有状态及参数。
Add State(s) to Queue By BOOL(Array Left).vi
将CSM消息字符串并入CSM消息队列中。提供了TRUE/FALSE两种状态的字符串选项,能够避免使用条件结构,提高代码可读性和编程效率。
- Ref: CSM的状态队列操作API
– 输入控件(Controls) –
- State Queue (“”): 整个状态队列被连接到此输入。
- Condition: 选择连接到TRUE终端或FALSE终端的状态字符串的标志。
- High Priority? (F): 如果为TRUE,状态将被插入到State Queue (“”)的前端;如果为FALSE,它被附加到尾部。
- TRUE (“”): Condition为TRUE时插入的状态字符串。
- FALSE (“”): Condition为FALSE时插入的状态字符串。
– 输出控件(Indicators) –
- Remaining States: 拼接后的所有状态及参数。
Add State(s) to Queue By BOOL(Array Right).vi
将CSM消息字符串并入CSM消息队列中。提供了TRUE/FALSE两种状态的字符串选项,能够避免使用条件结构,提高代码可读性和编程效率。
CSM 的状态队列操作API
该类型API不会直接发送消息,只是拼接消息字符串。在Parse State Queue++.vi中发送消息、执行操作。与消息拼接API不同的是,此类API会包含CSM的状态队列字符串输入,相当于在状态队列中插入消息。
– 输入控件(Controls) –
- State Queue (“”): 整个状态队列被连接到此输入。
- Condition: 选择连接到TRUE终端或FALSE终端的状态字符串的标志。
- High Priority? (F): 如果为TRUE,状态将被插入到State Queue (“”)的前端;如果为FALSE,它被附加到尾部。
- TRUE (“”): Condition为TRUE时插入的状态字符串。
- FALSE (“”): Condition为FALSE时插入的状态字符串。
– 输出控件(Indicators) –
- Remaining States: 拼接后的所有状态及参数。
Add State(s) to Queue By BOOL(Array All).vi
根据高优先级和Boolean输入,该VI生成TRUE/FALSE与剩余状态的连接状态。其中,High Priority输入决定是否在剩余状态之前或之后连接TRUE或FALSE字符串;TRUE和FALSE输入决定要连接的字符串是TRUE还是FALSE。
CSM 的状态队列操作API
该类型API不会直接发送消息,只是拼接消息字符串。在Parse State Queue++.vi中发送消息、执行操作。与消息拼接API不同的是,此类API会包含CSM的状态队列字符串输入,相当于在状态队列中插入消息。
– 输入控件(Controls) –
- State Queue (“”): 整个状态队列被连接到此输入。
- Condition: 选择连接到TRUE终端或FALSE终端的状态字符串的标志。
- High Priority? (F): 如果为TRUE,状态将被插入到State Queue (“”)的前端;如果为FALSE,它被附加到尾部。
- TRUE (“”): Condition为TRUE时插入的状态字符串。
- FALSE (“”): Condition为FALSE时插入的状态字符串。
– 输出控件(Indicators) –
- Remaining States: 拼接后的所有状态及参数。