5

如何将数据从 LabView 发送到 Python 并返回结果?

4

9 回答 9

8

另一种解决方案是使用智能消息传递库ZeroMQ,它带有很多绑定,几乎适用于所有主要语言。

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

Python-LabVIEW通信

客户端~LabVIEW +服务器端部分(示例)
在此处输入图像描述

#-----------------------------------------# 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" )
于 2016-09-26T08:40:39.810 回答
4

LabView 允许您使用多种语言编写扩展程序,如今的主要技术是使用网络连接。避免使用在 labview 进程本身内部运行的本地语言工具包。

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

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

不幸的是,由于我没有安装 labview,目前我无法提供一个示例,但我已经完成了从 LabView 到两种或三种语言的数十个应用程序的基于自动化的集成,但那是很多年前的事了。这些天我会使用网络套接字技术。

于 2011-07-06T13:51:13.477 回答
3

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 特性和变化

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

于 2018-08-07T21:14:29.033 回答
1

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

只需将 .dll 复制到您的 LabVIEW 项目中,创建 .Net 构造函数,然后使用 LabVIEW .Net,您就可以快速了解如何使用该库,它基本上为您提供了非托管 Python 共享库,并带有 .Net 的优点。

于 2011-10-02T05:57:52.947 回答
1

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

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

于 2019-11-02T10:34:42.727 回答
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客户端

于 2017-09-24T06:54:11.953 回答
1

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

享受!

于 2018-08-07T17:16:48.967 回答
0

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

它是一个用于 LabVIEW 的开放 Python 接口工具包。

于 2017-04-13T15:46:46.790 回答
-2

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

于 2015-03-18T20:46:29.070 回答