将数据从LabView发送到Python并返回

时间:2011-07-06 13:14:25

标签: python labview

如何将数据从LabView发送到Python并获得结果?

10 个答案:

答案 0 :(得分:7)

另一个解决方案是使用智能消息库ZeroMQ,它带有大量绑定,几乎适用于所有主要语言。

对于Python / Labview案例,sourceforge上有一个很好的演示项目:

Python-LabVIEW Communication

客户端~LabVIEW
enter image description here +
服务器端部分(示例)

#-----------------------------------------# INFRASTRUCTURE for communication
context = zmq.Context()                   # I/O-DAEMON CONTEXT
socket  = context.socket(zmq.REP)         # ARCHETYPE for a Smart Messaging 
socket.bind( "tcp://127.0.0.1:5555" )     # PORT ready for LabView to .connect()
#-----------------------------------------# TRANSPORT-CLASS-es {ipc|tcp|+..}

while True:                               # LOOP & WAIT FOR REQ-calls
    #                                     # Wait for request from client
    message = socket.recv()
    print("Received request: %s" % message )

    try:
        r = eval( message )
        print(r )

        socket.send(bytearray(str( r ),
                             'utf-8' ))    # send returned value as bytearry to client
    except NameError:
        socket.send( b"Unknown command" )

    except:
        socket.send( b"Unknown error" )

答案 1 :(得分:3)

LabView允许您使用多种语言编写扩展,目前主要的技术是使用网络连接。避免在labview过程中运行的本地语言工具包。

这里似乎有一个Python Labview toolkit,但它不再有效。

使用套接字服务器和套接字客户端在Labview和python之间进行通信。 (大多数跨平台解决方案,现在您不必在同一台PC上运行python和labview,也不必在同一个进程中运行。)

不幸的是,由于我没有安装labview,目前我的样本已超出我的范围,但我已经完成了从LabView到两种或三种语言的数十种应用程序的基于ole自动化的集成,但那是很多年前的事了。这些天我会使用网络套接字技术。

答案 2 :(得分:2)

我认为最好先了解一下你准备发送和回复的内容。在此期间,请检查以下链接:

Calling Python Code from LabVIEW

Call Perl and Python Scripts from LabVIEW

答案 3 :(得分:1)

我正在使用与Python进程的stdio通信一段时间,最近注意到.Net(http://pythonnet.github.io/)的Python对我有效。

只需在LabVIEW项目中复制.dll,创建.Net构造函数,然后使用LabVIEW .Net,您就可以快速找出如何使用这个库,它基本上为您提供了非托管的Python共享库,包含.Net善。

答案 4 :(得分:1)

使用Python的服务器端

import socket
server = socket.socket(2,1)
server.bind(('localhost',2000))
server.listen(1)

while True :
    (conn,addr) = server.accept()
    command = conn.recv(4)
    print (command)

    if 'INIT' in str(command):
    conn.sendall(b'INIT-DONE')
    elif 'PLAY' in str(command):
    conn.sendall(b'PLAY-DONE')
    elif 'QUIT' in str(command):
    conn.sendall(b'QUIT-DONE')
    break

server.close()

Labview Client Side

答案 5 :(得分:1)

LabVIEW 2018现在提供了一种“本机”解决方案,可以通过“来回发送数据”来从LabVIEW调用Python代码:

  

连接选项板包括新的Python子选项板,可用于从LabVIEW代码中调用Python代码。 Python面板包括以下功能:

     
      
  • 打开Python会话-使用特定版本的Python打开Python会话。
  •   
  • Python节点-直接调用Python函数。
  •   
  • 关闭Python会话-关闭Python会话。

         

    注意:必须安装Python 2.7或3.6才能使用LabVIEW Python函数。   尽管不受支持的版本可能适用于LabVIEW Python函数,但NI建议仅使用受支持的Python版本。

  •   

参考:LabVIEW 2018 Features and Changes

Python节点提供了模块路径,函数名称,输入参数以及返回值的预期数据类型。这些输入和输出支持许多基本数据类型:数字,(多维)数组,字符串,簇;自动转换为相应的数据类型,即将LabVIEW数组转换为Python列表,并聚类为元组(反之亦然,返回值)。

答案 6 :(得分:0)

您可以尝试:https://forums.ni.com/t5/LabVIEW-APIs-Documents/Open-Python-Interface/ta-p/3612981

它是用于LabVIEW的Open Python接口工具包。

答案 7 :(得分:0)

有一个新的Python / LabVIEW连接器,主要由您自己真正构建,称为TestScript。这是一个免费的,源代码发布的Python / LabVIEW连接器,它是完全双向的。您可以从Python脚本中控制LabVIEW,也可以从LabVIEW中调用Python脚本。它附带了几个示例,这些示例说明了如何将数据从LabVIEW发送到Python并取回结果。特别是,“简单脚本示例-Python Side.vi上的添加”展示了TestScript如何完成您所需要的。

享受!

答案 8 :(得分:-1)

这是一个很好的快速解决方案,但有点不雅。只需使用labview和python都可以读/写的文本文件。 Labview将命令写入文本文件,python等待直到读取命令,反之亦然。您可以同时拥有读取文本文件和写入文本文件。然而,这是一个较慢的解决方案,因为它需要时间来读写。

答案 9 :(得分:-1)

Python-LabVIEW-Interface (PyLVi)是一个基于ZeroMQ库的开源项目,用于调用Python函数并将结果读回LabVIEW。

它支持类方法和属性的调用,并且可以处理结构化数据类型(例如Python字典已映射到LabVIEW群集)以及numpy数组。