以编程方式检查 Labview 模块是否在系统上

Programmatically checking if Labview Module is on system

我有两个版本的同一个 Labview 程序 - 一个有摄像头控制,一个没有。这是因为我没有足够的 NI Vision 许可证用于我的所有系统(其中一些系统有摄像头),并且带有视觉 subvis 的程序不会 运行 在非 NI Vision 系统上。

我想将这些版本合并为一个包含相机控件的版本,但如果它所在的系统没有相机,则忽略它们。有没有一种方法可以在 运行 时以编程方式检查系统是否具有 NI-Vision 模块?目前,如果由于错误而没有包含 NI Vision,甚至无法启动主 vi。

正在检测已安装的 NI 软件

您可以在 运行 时使用 系统配置 API Get Installed Software.vi 检测已安装的 NI 软件。

可选择使用 LabVIEW APIs

使您的应用程序支持可选 LabVIEW 模块的下一步是使您的应用程序可选依赖它。

在运行时间,这是由dynamically calling VIs. At build time, this is done by removing regions of the block diagram from compilation with a conditional disable structure完成的。

动态调用 VI

当您将 VI 放置在程序框图上时,您是将该 VI 静态地link连接到您的应用程序中。由于它是静态 linked,应用程序必须能够找到在 load 时间使用的函数和 APIs。

当您动态 link 一个 VI 时,应用程序不知道它将调用什么 VI,直到您的代码告诉它在 运行 时调用什么。通过指定要使用的 VI 的路径和连线板,您可以按需而不是加载时引用和调用它们。 NI 有一个 guided tutorial 介绍了此设计模式的设置和使用。