LabVIEW 在事件结构中动态地初始化和关闭 VISA 资源
LabVIEW initializing and closing VISA resources, dynamically, in event structures
我想通过用户前端实时启动不同的资源。这个有多种用途,比如
- 能够利用各种资源,如果您当时手头有的话。这将随后允许各种程序根据所参与的内容 运行。
程序可以 运行 然后处于空闲测量状态以跟踪之后的行为。
用户不必重新初始化与正在工作的设备的连接来启动新程序,并且知道远程时的当前状态。
我以为它看起来像这样:
我遇到的问题是找出可以使用的结构。我目前使用的可能并不理想,而且我在实施过程中遇到了一些问题。我会告诉你我的想法
使用包含 while 循环 来保持程序 运行ning,更改资源和资源上的 运行 子程序。
使用 事件结构 并在 (1) 内设置超时,用于初始化按钮将是理想的,以处理 VISA 资源的初始化或关闭。
使用 enum 移位寄存器 在包含 while 循环 (1) 中创建状态机,以便 UI 具有不同的状态因为它 运行 的子程序或不同的资源组合被转换 on/off.
看起来像这样:
虽然我对一些事情感到困惑:
a) 我可以在较大的程序 while 循环中通过事件结构初始化 VISA 资源吗?
b) 似乎很容易将所有资源名称连接到一些后程序逻辑隧道,但由于每个按钮案例仅初始化一个资源,错误传播隧道将具有空心点。 这个问题进一步发展了吗?
c) 另外,在同一个 case 结构中的闭包和初始化看起来很奇怪...... 我应该把它们分成两个 case 结构,它们只响应它们相应的 true/false 状态?
到运行以后的一个程序,我打算用另一个事件结构来响应按钮点击。在执行之前,我会检查资源是否已启用以及程序是否对 运行 有效。 运行 一个程序会改变机器状态,即。 运行ning 子程序,运行ning 子程序连续、空闲等,基于用户选择。
我想这个块看起来像按钮事件结构中的一个案例结构。每个程序都会有一个案例,如果设置不合适会给出错误信息。
a) 是否存在多个事件结构的问题? 超时将确保每个事件结构都会 运行,但我不能将其作为程序事件结构可能需要在程序中长时间 运行。根据用户与界面的交互进行 UI 更新也很好。
在此先感谢您的帮助和建议!
您需要稍微修改一下您的应用程序,现在是用错误的方法完成的。您的 while 循环将被阻塞,b/c 每次迭代都要求每个事件结构都将捕获一个事件 - 但您不希望 init/deinit 设备每次循环迭代。
你的 while 循环应该只包含一个事件结构。将围绕它传递的所有数据(和案例结构)保存在集群中的移位寄存器中。通过事件结构和案例选择器的所有 cases/pages 将该线与集群连接起来。
您的状态机可以按如下方式实现:while 循环,内部是带有枚举选择器的 case 结构(用于状态机状态)。其中一个状态将是 "Wait for event",其中将放置单个事件结构。每次等待进一步命令时,您的状态机都应进入 "Wait for event" 状态。
例如,选中“JKI State Machine” - 这是开发具有此类架构的应用程序的良好起点。
为了获得更大的灵活性,您可以实施生产者-消费者队列状态机。
总体而言,您可以通过此 link - https://labviewwiki.org/wiki/Design_Patterns_Overview.
找到常见模式列表
我想通过用户前端实时启动不同的资源。这个有多种用途,比如
- 能够利用各种资源,如果您当时手头有的话。这将随后允许各种程序根据所参与的内容 运行。
程序可以 运行 然后处于空闲测量状态以跟踪之后的行为。
用户不必重新初始化与正在工作的设备的连接来启动新程序,并且知道远程时的当前状态。
我以为它看起来像这样:
我遇到的问题是找出可以使用的结构。我目前使用的可能并不理想,而且我在实施过程中遇到了一些问题。我会告诉你我的想法
使用包含 while 循环 来保持程序 运行ning,更改资源和资源上的 运行 子程序。
使用 事件结构 并在 (1) 内设置超时,用于初始化按钮将是理想的,以处理 VISA 资源的初始化或关闭。
使用 enum 移位寄存器 在包含 while 循环 (1) 中创建状态机,以便 UI 具有不同的状态因为它 运行 的子程序或不同的资源组合被转换 on/off.
看起来像这样:
虽然我对一些事情感到困惑:
a) 我可以在较大的程序 while 循环中通过事件结构初始化 VISA 资源吗?
b) 似乎很容易将所有资源名称连接到一些后程序逻辑隧道,但由于每个按钮案例仅初始化一个资源,错误传播隧道将具有空心点。 这个问题进一步发展了吗?
c) 另外,在同一个 case 结构中的闭包和初始化看起来很奇怪...... 我应该把它们分成两个 case 结构,它们只响应它们相应的 true/false 状态?
到运行以后的一个程序,我打算用另一个事件结构来响应按钮点击。在执行之前,我会检查资源是否已启用以及程序是否对 运行 有效。 运行 一个程序会改变机器状态,即。 运行ning 子程序,运行ning 子程序连续、空闲等,基于用户选择。
我想这个块看起来像按钮事件结构中的一个案例结构。每个程序都会有一个案例,如果设置不合适会给出错误信息。
a) 是否存在多个事件结构的问题? 超时将确保每个事件结构都会 运行,但我不能将其作为程序事件结构可能需要在程序中长时间 运行。根据用户与界面的交互进行 UI 更新也很好。
在此先感谢您的帮助和建议!
您需要稍微修改一下您的应用程序,现在是用错误的方法完成的。您的 while 循环将被阻塞,b/c 每次迭代都要求每个事件结构都将捕获一个事件 - 但您不希望 init/deinit 设备每次循环迭代。
你的 while 循环应该只包含一个事件结构。将围绕它传递的所有数据(和案例结构)保存在集群中的移位寄存器中。通过事件结构和案例选择器的所有 cases/pages 将该线与集群连接起来。
您的状态机可以按如下方式实现:while 循环,内部是带有枚举选择器的 case 结构(用于状态机状态)。其中一个状态将是 "Wait for event",其中将放置单个事件结构。每次等待进一步命令时,您的状态机都应进入 "Wait for event" 状态。
例如,选中“JKI State Machine” - 这是开发具有此类架构的应用程序的良好起点。 为了获得更大的灵活性,您可以实施生产者-消费者队列状态机。 总体而言,您可以通过此 link - https://labviewwiki.org/wiki/Design_Patterns_Overview.
找到常见模式列表