基于 CSM 框架更简单、更直观,更优雅的实现连续测量和记录应用的示例。
API | 描述 | 参数 |
---|---|---|
API: Update Settings |
配置API | 数据文件夹的完整路径 (类型: 普通字符串) |
API: Start |
开始记录。在数据文件夹中创建基于时间的文件名的TDMS文件。 | N/A |
API: Log |
将数据记录到TDMS文件中。 | 1D波形数组。 (类型: (Type: MassData参数) |
API: Stop |
停止记录。 | N/A |
示例:(假设模块名称为“Logging”)
API: Update Settings >> c:\_data -> Logging
API: Log >> MassData-Start:89012,Size:1156 -> Logging
API: Start -> Logging
API: Stop -> Logging
API | 描述 | 参数 |
---|---|---|
API: Update Settings |
配置API | Cluster:{HW(String),Signal Type(Enum)} (类型: HexStr) |
API: Update Settings v2.0 |
Config API | HW:(string);Signal Type:(Sine Wave|Square with Noise) (类型: API String) |
API: Start |
开始每200毫秒生成数据。 | N/A |
API: Stop |
Stop data generation. | N/A |
Status | 描述 | 参数 |
---|---|---|
Acquired Waveform | 模拟生成的数据 | 1D波形数组. (类型: MassData参数) |
示例:(假设模块名称为“Acquisition”)
API: Start -> Acquisition
API: Stop -> Acquisition
//使用CSM-API-String-Arguments-Support,通过字符描述'Signal Type',更新模块配置
API: Update Settings v2.0 >> Signal Type:Sine Wave -> Acquisition
API | 描述 | 参数 |
---|---|---|
API: FFT(Peak) |
FFT(peak) 分析方法 | 1D波形数组. (类型: MassData Arguments) |
API: FFT(RMS) |
FFT(RMS) 分析方法 | HW:(string);Signal Type:(Sine Wave | 1D波形数组. (类型: MassData Arguments) |
API: Power Spectrum |
Power Spectrum 分析方法 | 1D波形数组. (类型: MassData Arguments) |
Status | 描述 | 参数 |
---|---|---|
FFT(Peak) | FFT(peak) spectrum Data. | 1D波形数组. (类型: MassData Arguments) |
FFT(RMS) | FFT(RMS) spectrum Data. | 1D波形数组. (类型: MassData Arguments) |
Power Spectrum | Power Spectrum Data. | 1D波形数组. (类型: MassData Arguments) |
可以看出,"Logging Module" 和 "Acquisition Module" 设计完成时,完全不知道彼此的存在。为了创建连续测量和记录应用程序,除了需要一个用户界面模块。还需要调度这两个底层模块协同工作。为了简单,用户界面模块也作为 Controller,承担调度工作。
当需要使用真实硬件进行数据采集时,可以创建另一个 CSM 模块,该模块具有相同的 API 和状态,然后将其替换掉 UI 模块中的 Acquisition Module。这将允许轻松地切换并集成不同的硬件模块,而不必更改 UI 模块的其余部分,因为它们遵循相同的 API 和状态接口。
参考 Workers Continuous Measurement and Logging Example 创建用户界面.
使用 CSM 模板创建块图,将 "Logging Module" 和 "Acquisition Module" 作为子模块放置在VI后面板。
初始化数据和用户界面(UI),从 XML 文件加载配置并将配置发送给子模块。将 'Acquisition' 模块的 'Acquired Waveform' 状态注册到 'UI' 模块的 'UI: Update Waveforms' 状态。当 'Acquired Waveform' 状态发生时,'UI' 将自动切换到 'UI: Update Waveforms' 状态。
停止子模块和用户界面模块本身。
更新用户界面(UI)并触发子模块以启动消息进行工作。将 "Acquisition" 模块的 "Acquired Waveform" 状态注册到 "Logging" 模块的 "API: Log" 状态。当 "Acquired Waveform" 状态发生时,"Logging" 模块将自动执行 "API: Log"。
更新用户界面(UI)并停止子模块。取消注册 "Acquisition" 模块的 "Acquired Waveform" 状态。