基本概念

CSM模块 (CSM Module)

CSM 是 Communicable State Machine 的缩写. 在 Wiki 中,CSM 通常也表示基于 CSM 编写的程序模块。

在 LabVIEW 中,从文件形式上看,CSM模块 是一个 vi 文件;从编程角度看,CSM 是一个典型的状态机

状态(State)

代码上对应了 CSM 条件结构中的一个分支,是 CSM 的基本逻辑单元。CSM 内部不同的状态之间基于一定的逻辑实现状态跳转,完成具体的功能。

在 LabVIEW 中,状态是 case 条件结构中的一个分支,相比其它状态机不同的是,CSM 总的 case 条件结构数据类型为字符串,且满足特定的语法规则。

  • 宏状态(Macro)

    一类特殊的状态, 可以解释为多个状态的组合,实现固定状态的组合逻辑。在 CSM 模板中,默认包含用于描述整个启动过程状态变化(“Macro: Initialize”),和退出时的整个状态变化(”Macro: Exit”) 两个宏状态

消息(Message)

消息CSM模块间的通讯方式,主要用于1:1的模块间交互,消息又发送端CSM发出后,收到消息的CSM 将进入同名的状态。例如模块 A 发送了 “API: DoSth” 到模块 B, 模块 B 将进入 “API: DoSth” 状态。

在 LabVIEW 中,消息是一段满足特定的语法规则的字符串,其中包含了消息符号状态响应参数,CSM 的 vi 选版中提供了消息生成 vi,帮助用户更便捷的生成消息字符串。

  • 消息类型(Message Type)

    消息类型是根据消息的处理方式不同对消息进行的分类。目前的消息类型主要分为: 同步消息异步消息。其中,异步消息基于应用场景的不同,又分为有返回的异步消息,无返回的异步消息

  • 消息符号(Message Symbol)

    消息符号是在字符串中表示消息类型的特殊字符。目前的消息符号有 ‘-@’,’->’,’->\|’ 三种,分别代表: 同步消息,有返回的异步消息,无返回的异步消息 三个消息类型

  • 同步消息 (Sync Message)

    同步消息消息的一种。CSM 发出同步消息后,将暂停状态变化,等待被调用方完成消息处理。同步消息通过 -@ 描述。

  • 异步消息 (Async Message)

    异步消息是消息的一种。CSM 发出异步消息后,不等待被调用方完成消息处理,继续进行状态变化。 异步消息也分为两种:

    • 有返回的异步消息:通过 -> 描述。被调用方完成消息处理后,将通知调用方
    • 无返回的异步消息:通过 ->\| 描述,被调用方不会通知调用方

响应(Response)

响应是被调用模块对于消息的返回。

在 LabVIEW 中,响应 就是一个由用户定义的字符串。例如当模块 A 发送了 “API: DoSth” 到模块 B, 模块 B 将进入 “API: DoSth” 状态后,模块 A 希望得到一个来自模块 B 返回字符串 “Reveived” 以确认模块 B 已经收到,此时返回的字符串信息就是响应。 请注意 CSM vi 模板中的状态响应默认均为空字符串。

  • 同步消息会通过 “Response”状态处理响应。
  • 有返回的异步消息会通过 “Async Response”状态处理响应。

广播(Broadcasting)

广播是 CSM 通知外部自身状态变化的特殊消息,用于支撑1:N的模块间交互方式。广播的收发模式采用了订阅机制,即,外部模块需要先注册广播,注册成功后才会接收到被订阅模块的广播消息。

广播的订阅制工作模式上和当前基Pub\Sub模式的各种 MQ 机制类似。目前 CSM 广播消息仅支持 LabVIEW 的同一应用的内部模块交互,尚不支持跨应用和跨机器的模块间交互。

参数(Arguments)

消息响应广播都能携带数据,这些数据被叫做参数

同步调用 (Sync-Call)

一个 CSM模块通过同步消息对另一个模块的调用,叫做同步调用。同步调用的过程

异步调用 (Async-Call)

一个 CSM模块通过异步消息对另一个模块的调用,叫做异步调用。异步调用的过程

results matching ""

    No results matching ""