Loops LabVIEW在事件结构中动态初始化和关闭VISA资源

Loops LabVIEW在事件结构中动态初始化和关闭VISA资源,loops,labview,Loops,Labview,我想通过用户前端启动不同的资源。这有多种用途,例如 能够利用各种资源,如果您当时手头有这些资源的话。这将根据参与的内容,最终允许运行各种程序 程序可以运行,然后处于空闲测量状态,以跟踪随后的行为 用户无需重新初始化与设备工作部件的连接即可启动新程序,如果远程,则用户知道当前状态 我在想它会是这样的: 我面临的问题是弄清楚什么样的结构可以使用。我目前使用的可能并不理想,而且我的实现存在一些问题。我会告诉你我在想什么 使用包含的while循环保持程序运行,更改资源并在资源上运行子程序 使用事件

我想通过用户前端启动不同的资源。这有多种用途,例如

  • 能够利用各种资源,如果您当时手头有这些资源的话。这将根据参与的内容,最终允许运行各种程序
  • 程序可以运行,然后处于空闲测量状态,以跟踪随后的行为

  • 用户无需重新初始化与设备工作部件的连接即可启动新程序,如果远程,则用户知道当前状态

我在想它会是这样的:

我面临的问题是弄清楚什么样的结构可以使用。我目前使用的可能并不理想,而且我的实现存在一些问题。我会告诉你我在想什么

  • 使用包含的while循环保持程序运行,更改资源并在资源上运行子程序

  • 使用事件结构并在(1)内设置超时,因为初始化按钮最适合处理VISA资源的初始化或关闭

  • 使用枚举移位寄存器在包含的while循环(1)中创建状态机,使UI在运行子程序或打开/关闭不同资源组合时具有不同的状态

  • 它看起来像这样:

    但我对一些事情感到困惑:

  • a) 我可以通过更大的程序while loop中的事件结构初始化VISA资源吗?

    b) 似乎很容易将所有的资源名称连接到一些后程序逻辑,但是错误传播通道将有空心点,因为每个按钮盒只初始化一个资源这是否有问题?

    c) 同样,在同一个case结构中的闭包和初始化看起来像trippy一样我是否应该将它们分为两种大小写结构,它们只响应它们对应的真/假状态?

  • 为了稍后运行程序,我将使用另一个事件结构来响应按钮单击。在执行之前,我会检查资源是否已启用,以及程序是否可以有效运行。运行程序会根据用户选择改变机器状态,即运行子程序、连续运行子程序、空闲等

    我认为这一块看起来像按钮事件结构中的一个case结构。每个程序都有一个案例,如果设置不合适,会给出一条错误消息

    a) 是否存在多个事件结构的问题?超时将确保每个事件结构都能运行,但我不能这样做,因为程序事件结构可能需要在程序运行期间长时间运行。根据用户与界面的交互进行UI更新也很好


  • 提前感谢您的帮助和建议

    您需要稍微修改一下应用程序,现在它是用错误的方法完成的。您的while循环将被阻止,b/c在每次迭代中它将要求每个事件结构捕获一个事件-但您不希望在每次循环迭代中初始化/取消初始化设备

    while循环应该只包含一个事件结构。将其周围传递的所有数据(以及大小写结构)保留在集群中的移位寄存器中。通过事件结构的所有案例/页面和案例选择器将该连接与集群连接

    您的状态机可以实现如下:while循环,内部是带有枚举选择器的case结构(用于状态机状态)。其中一个状态将是“等待事件”,其中将放置单个事件结构。当您的状态机等待进一步的命令时,它每次都应该进入“等待事件”状态

    例如,选中“”-这是使用这种体系结构开发应用程序的良好起点。 为了具有更大的灵活性,可以实现生产者-消费者排队状态机。
    总的来说,您可以通过此链接找到的常见模式列表-。

    您需要稍微修改一下应用程序,现在它是用错误的方法完成的。您的while循环将被阻止,b/c在每次迭代中它将要求每个事件结构捕获一个事件-但您不希望在每次循环迭代中初始化/取消初始化设备

    while循环应该只包含一个事件结构。将其周围传递的所有数据(以及大小写结构)保留在集群中的移位寄存器中。通过事件结构的所有案例/页面和案例选择器将该连接与集群连接

    您的状态机可以实现如下:while循环,内部是带有枚举选择器的case结构(用于状态机状态)。其中一个状态将是“等待事件”,其中将放置单个事件结构。当您的状态机等待进一步的命令时,它每次都应该进入“等待事件”状态

    例如,选中“”-这是使用这种体系结构开发应用程序的良好起点。 为了具有更大的灵活性,可以实现生产者-消费者排队状态机。
    总的来说,您可以通过这个链接找到的常见模式列表-。

    我没有太多使用集群,但它是打包变量和解包以通过每个循环迭代的聪明方法!对结构的良好描述。谢谢为什么我不能在我的事件结构中添加短暂的超时来停止阻塞?我误解了超时的条件,认为它会中断代码的执行。在我看来,所有的事件结构都可以有很短的超时来迭代?我也将签出您指定的资源。是的,超时将中断它-但您在屏幕上没有它