有什么方法可以开发Python GUI来控制LabVIEW VI?

时间:2019-04-04 14:33:58

标签: python software-design labview

我正在为测试平台设置一个基于Python3构建的软件,目前这些平台使用National Instruments cRIO硬件和其他NI硬件。系统在Windows计算机上运行。

要控制这些硬件,我们需要基于LabVIEW构建的VI和子VI。我知道LabVIEW带有自己的用户界面,但是我仍然想用python开发我的GUI,因为将来并不是所有的钻机都将使用NI硬件或LabVIEW。将来可能会有MATLAB插件。

我看过在线教程,可以在LabVIEW VI中使用python函数,但是对于我来说,可以使用LabVIEW VI并在Python上构建GUI的参考点是什么?

谢谢您的帮助。

2 个答案:

答案 0 :(得分:2)

最灵活的体系结构是根据需要进行的通信类型使用TCP / IP,UDP和Web服务的某种组合。 这也使您可以灵活地在cRIO(或其他设备)和主机PC之间移动I / O代码的不同部分,因为无论您是要与其他设备还是在同一台计算机上进行通信,相同的协议都将起作用。

NI CompactRIO Developers' Guide的第4章很好地介绍了这些选项,但总结如下:

  • 用于消息,命令或流数据的TCP / IP,不会丢失任何数据
  • UDP用于广播更新,其中低延迟比100%完整性更为重要
  • 用于访问当前值(标签)的Web服务-我想说它们也适用于短消息或命令。

在LabVIEW中有所有这些示例,一旦您了解了基础知识,就应该能够轻松实现通信的相应Python端-类似地,用MATLAB或其他替代LabVIEW代码的方法未来(如果确实需要)。

请记住,在过去的几年中,您可以使用LabVIEW在Web服务上做很多改变,因此,如果您在线查看任何示例,请检查它们是否具有最新功能。

或者,我本人没有经验,但是您可能想研究ZeroMQ,它具有适用于PythonLabVIEW和许多其他语言的绑定。

答案 1 :(得分:2)

我同意最好的选择是直接实现基于TCP / IP的通信,但是如果您想简化一些事情(特别是如果您的通信采用“以下是运行VI的指令集, VI,然后给我结果”),您可能想看看

尤其是,Wiresmith工具使用TCP / IP连接到您指定的VI(或exe),然后可以使用简单的VI将消息写回到控制台。

我最近一直在将它与SCons(基于Python的构建系统)一起使用,并且发现它非常有用,但是它可能比完整的测试系统简单得多。