工具VI(Utility VIs)

状态字符串操作

CSM - Compact Multiple States.vi

将多个状态紧凑成单个字符串以供输入使用。

消息拼接API

该类型API不会直接发送消息,仅用于拼接消息字符串。需将字符串并入CSM的状态队列后,在Parse State Queue++ VI中发送消息并执行操作。在熟悉CSM规则的情况下,可不必使用此类API,直接在字符串中键入对应的消息字符串或操作字符串。

输入控件(Controls)

  • Multiple States: CSM状态字符串数组。

输出控件(Indicators)

  • States: 包含多行CSM状态字符串的字符串。

CSM - Break Down Multiple States String.vi

将包含多行CSM状态字符串的字符串切割成CSM状态字符串数组。

输入控件(Controls)

  • States: 包含多行CSM状态字符串的字符串。

输出控件(Indicators)

  • Multiple States: CSM状态字符串数组。

CSM - Build Exit Messages of CSMs.vi

输入CSM模块名称,拼接生成退出消息(Macro: Exit)。

消息拼接API

该类型API不会直接发送消息,仅用于拼接消息字符串。需将字符串并入CSM的状态队列后,在Parse State Queue++ VI中发送消息并执行操作。在熟悉CSM规则的情况下,可不必使用此类API,直接在字符串中键入对应的消息字符串或操作字符串。

输入控件(Controls)

  • CSMs: CSM模块名称数组。
  • State with Arguments(“Macro: Exit”): 退出消息。

输出控件(Indicators)

  • States: 拼接生成的CSM消息字符串。

CSM - Filter Duplicate Messages By Name.vi

过滤重复的消息,只保留最新的消息。

CSM 的状态队列操作API

该类型API不会直接发送消息,只是拼接消息字符串。在Parse State Queue++.vi中发送消息、执行操作。与消息拼接API不同的是,此类API会包含CSM的状态队列字符串输入,相当于在状态队列中插入消息。

输入控件(Controls)

  • States: 输入的消息字符串。
  • Whole Messages in Check?(T): 是否检查整个消息字符串。如果是FALSE,则只检查消息名称。

输出控件(Indicators)

  • Filtered States: 过滤后的消息字符串。

CSM - Remove Duplicated Following Messages.vi

CSM 的状态队列操作API

该类型API不会直接发送消息,只是拼接消息字符串。在Parse State Queue++.vi中发送消息、执行操作。与消息拼接API不同的是,此类API会包含CSM的状态队列字符串输入,相当于在状态队列中插入消息。

输入控件(Controls)

  • Current State:
  • Remaining States:

输出控件(Indicators)

  • Remaining States Left:
  • Current State: Controls
  • Remaining States Left: Indicators

数据类型字符串描述

CSM Data Type String.vi

获取输入数据对应的数据类型描述字符串,通常用在参数描述中,用于判断参数携带的参数类型。

输入控件(Controls)

  • Data: 输入数据。

输出控件(Indicators)

  • Data Type String: 数据类型描述字符串。

CSM Data Type String to Enum.vi

从数据类型描述字符串中LabVIEW定义的数据类型枚举。

CSM Data Type String to Enum(String).vi

从数据类型描述字符串中LabVIEW定义的数据类型枚举,子类型使用字符串描述。

输入控件(Controls)

  • Data Type String: 输入的数据类型描述字符串。

输出控件(Indicators)

  • Primary Type: 数据类型枚举。
  • Secondary Type String: 如果是复合的数据类型,返回子类型字符串,例如Array数据类型中的元素类型。
  • Array Dim: 如果是数组数据类型,返回数组维度。

CSM Data Type String to Enum(TypeEnum).vi

从数据类型描述字符串中LabVIEW定义的数据类型枚举,并返回Array子类型使用枚举。

输入控件(Controls)

  • Data Type String: 输入的数据类型描述字符串。

输出控件(Indicators)

  • Primary Type: 数据类型枚举。
  • Secondary Type String: Array子类型枚举。
  • Array Dim: 如果是数组数据类型,返回数组维度。

CSM Data Type String to Enum(RefnumEnum).vi

从数据类型描述字符串中LabVIEW定义的数据类型枚举,并返回Refnum子类型使用枚举。

输入控件(Controls)

  • Data Type String: 输入的数据类型描述字符串。

输出控件(Indicators)

  • Primary Type: 数据类型枚举。
  • Secondary Type String: Refnum子类型枚举。
  • Array Dim: 如果是数组数据类型,返回数组维度。

其他工具VI

uuid.vi

根据标准方法生成Universally Unique Identifier (UUID)。 例如:

  • 59703F3AD837
  • 106A470BA5EC
  • 9B781DB313AF

输出控件(Indicators)

  • UUID: 生成的UUID。

String History Cacher.vi

保存当前输入的字符串到缓存,缓存的历史字符串,当超出最大长度限制时,最先进入的缓存字符串将被覆盖。用于调试CSM的历史状态。

输入控件(Controls)

  • String: 待缓存字符串。
  • length: 缓存的历史字符串最大字符串长度。
  • Include Timestamp? (T): 是否在每行开头包含时间戳。
  • Format String: 时间戳的格式。

输出控件(Indicators)

  • String Cache: 缓存的历史字符串。

Random Change Flag.vi

生成一个随机的数值,用于标记状态的变化,CSM中为了提高效率,有些地方的缓存(cache)利用这个标记来判断是否需要更新。

输出控件(Indicators)

  • Random Change Flag: 生成的随机数值。

State Triggered Reason.vi

从Parse State Queue++ VI的输出Additional InformationSource CSM推断出触发当前状态的原因。

结果可能是:

  • LocalCall: 本地调用,非外部触发
  • Message: 外部消息触发
  • Broadcast: 由广播触发

输入控件(Controls)

  • Additional Information: 此状态的额外信息。
  • Source CSM: 源模块信息。

输出控件(Indicators)

  • Additional Information (dup): 输入的额外信息副本。
  • Source CSM (dup): 输入的源模块信息副本。
  • Reason: 触发当前状态的原因。

Format Timestamp.vi

格式化时间戳为指定的字符串格式, 此VI为CSM Global Log中使用。

输入控件(Controls)

  • Timestamp: 时间戳,单位为秒。
  • Format String: 时间戳格式字符串,例如: %<%Y/%m/%d %H:%M:%S%3u>T

输出控件(Indicators)

  • String: 格式化后的时间戳字符串。