admin 管理员组

文章数量: 1086019


2024年4月25日发(作者:spring期末试题及答案)

LabVIEW和TestStand中调用Python编程

作者: ***

来源:《计算机时代》2020年第07期

摘要:為了采用Python编程来完成计算机测试测量任务,对LabVIEW和TestStand编程

环境中调用Python编程的工具和方法进行了研究。介绍了在LabVlEW中通过LabPython模

块、Python集成工具包、Python生成的动态链接库和LabVIEW2018内置函数节点调用Python

脚本的方法,以及在TestStand中通过调用Python生成的动态链接库、由LabVIEW封装

Python模块生成的VI和通过TestStand附加软件工具调用Python脚本的方法。结合Python代

码实列,分析了在程序调用中的关键配置信息及步骤,给出在LabVIEW中和TestStand中调用

Python的数据类型对应关系,推荐了相应的调用Python代码的方式。

关键词:LabVIEW;TestStand;Python;调用;动态链接库

中图分类号:TP311.1 文献标识码:A 文章编号:1006-8228(2020)07-54-05

0引言

Python是一种解释型、面向对象、动态数据类型的高级计算机程序设计语言。近几年随着

人工智能应用的火热,Python语言在大数据、图像识别、深度学习等方面得到了广泛的应用。

而在计算机测试测量领域,则更多地使用TeststaJld结合LabvIEW编程,实现通信、数据采

集、信息交互等功能。鉴于Python的易用、免费、具有丰富的库资源以及在数据处理和协议

分析方面的优势,使用TeststaJld和LabvIEw调用Python模块快速实现自动化测试,会越来越

多地应用到实际的测试项目中,这也是近年来使用图形化编程工具的用户群呼声最高的热点技

术之一。因此,研究并发掘LabVlEW和TeststaJld中各种调用Python编程的工具和方法,找

到更佳、更便捷的调用方法,对于自动化测试脚本程序编写,具有很好的实用价值。

1LabVlEW中调用Pvthon模块

LabvIEW是由美国国家仪器(NI)公司研制开发的一种图形化程序开发环境,是开发计

算机测量与控制软件的理想选择。LabVIEW调用Python模块通常有四种方法,每种调用方法

在使用前都需要先安装Pymon开发环境并配置环境变量。

1.1通过LabPython模块调用

LabPymon是免费的OpenG工具库中的子模块,它是一个执行Python脚本的LabVIEW工

具,内含一套调用Python脚本的函数节点。使用LabPython模块来将Python程序引入

LabVlEW中,可以使用市面上现有Python工具库,方便LabVlEW编程。

通过VIPM可以安装OpenG工具库,安装后LabPython函数选板会集成到User.1ib库中,

用户可以在View→FunctionPalette→User Libraries→LabPython位置找到它,并可使用

LabPython函数选板中列出的常用函数节点。实际使用LabPython工具库调用Python脚本编写

应用程序时,LabPython功能并不专业且仅支持LabVIEW2009以前版本和Python2.x版本,故

本文不推荐使用也不过多探讨。

1.2通过Python集成工具包调用

PythonIntegration Toolkit for LabVlEW是由En-thought公司开发的商业软件,它为Python

和LabVlEW提供了一个新的无缝联接的方式。使用该工具包可以在Python和LabVIEW程序

间实现快速的双向通信,通过集成工具包中的工具节点可从LabV~W中直接调用Python函数

或方法,加载Python脚本到内存中。开发者可并行运行Python和LabVIEW,为调用的函数传

递参数,并从Python解释器中得到响应。

集成工具包函数选板中包含了调用Python脚本的函数节点,常用的函数节点包括New

Session,Pack,GetValue,Set Value,Call,Unpack,CloseSession等。使用LabPython中的函

数编写调用Python模块的方法和LabVlEW常规编程方法一致。调用Python脚本创建应用程序

时首先使用函数节点创建引用Python模块的会话,然后用函数节点传递

参数数据给Python脚本,接着用指定调用的Python函数或方法的名称并执行调用,再

从Python解释器中取回执行结果,最后关闭会话。编写调用Python脚本的应用程序如图l。

该工具包是收费的商业软件,兼容Python2.x和Python3.x版本,调用Python脚本比较便

捷,其功能比LabPython强大。但Enthought集成工具包产品由Enthought公司提供支持,NI

并不直接提供技术支持/服务。由于是商业收费软件且价格不菲,LabVIEW/Python集成工具包

并不常用。

1.3通过Python生成动态链接库调用

动态链接库(DLL)是软件开发中一种非常重要的跨语言协作方式。把Python语言写成

的脚本编译成DLL,能够提供给诸如c++、c#、LabVIEW等编程语言调用,这能够在很大程

度上提高软件的开发效率。但是,虽然Python可以调用其他语言生成的动态库,Python作为

一种脚本语言,本身是不能直接编译生成动态库的。为了生成动态库,可以借助Cython,将

Python脚本变成c语言文件并创建DLL。具体如何使用Cython把Python程序创建生成为DLL

的过程,可以参考Cython官网相关资料,本文不展开阐述。

LabVIEW语言是一种图形化编程语言,结合DLL这种跨语言的编程协作,可以大大弥补

它固有的不足,比如一些复杂算法处理。LabVIEW中调用由Python创建生成的DLL的方法和

调用其他编程语言生成的DLL的方法并无本质区别。可以使用LabVlEW函数选板中

Functions→Connectivity→Libraries&Executables下的Call Library Function Node函数节点。把

CallLibrary Function Node函数节点放置到LabVlEW框图编程区域,双击打开节点,在弹出的

窗口中配置调用库函数节点,如图2所示。

以调用目标函数Test()为例,Test()函数功能是实现取模运算并返回结果,函数原型

见下面Python代码:def Test(a,b):

Mod-Value=a%b

return Mod——Value

首先在图2的函数选项卡中配置库文件和库函数,在Libraucname or path中选择需要调用

的文件,在Funcfionname下拉框中选择需要调用的目标函数Test()。由于是

使用Cython把Python脚本生成为DLL,而Cython底层就是由c语言实现,所以在

Callingconvention调用规范中仍选用c。然后在参数配置选项卡中分别为各个参数指定数据类

型,并选择参数传递方式为传值或传参嘲。退出Call Library Function窗口后,为输入参数赋

值,运行LabVIEW程序,即可执行Python编写的脚本函数。

需要特别指出的是,对于使用ActiveX/COM技术类型的DLL,需要先使用命

令注册,然后才可以调用DLL并使用其内部的函数。

1.4通过LabVlEW2018内置Python节点函数调用

自LabVlEW2018版开始,新版LabVlEW提供了三个可以调用Python脚本模块的接口函

数,位于函数选板Functions→Connectivity→Python位置。开发者拥有LabVIEW2018许可证

后,这三个接口函数是默认免费提供的。由于是NI官方提供的LabVlEW中调用Python接口

方式,其帮助文件和开发范例程序都比较完善。这是本文推荐的一种直接调用Python模块的

较好方式。

LabVIEW2018中提供的调用Python的相关函数有三个,分别是:①Open Python

Session,用于打开Python引用,为后续的操作程序创建Python会话;②Python Node,用于调

用Python脚本模块,并指定所调用的Python模块的函数;③Close Python Session,用于关闭

Python会话,以免内存泄漏。

LabVIEW2018中使用这三个函数调用Python脚本需要Python3.6或Python2.7开发环境,

Python版本号需要在调用Python模块时正确配置。另外,Python和LabVIEW的数据类型的匹

配有严格对应关系,如表l所示。在LabVIEW2019版中新增加了对NumPy库的Array数据类

型的支持。

基于Python3.6版本编写一个计算斐波那契数列的函数,保存为UTF-8格式并命名为

,源代码如下。

以LabVIEW2018内置的Python节点调用内的Fib(n)函数为例,先使用

OpenPythonSession节点打开一个会话,并配置脚本解析环境为Python3.6版本,确保输入的

Python版本号数据类型为字符串;然后采用PythonNode函数节点调用指定路径下的Python模

块,并输入函数名Fib和参数值n,同时输出函数返回值;最后用ClosePythonSession关闭会

话。LabVIEW编写的框图程序如图3所示。

2Testsland中调用Python模块

TestStand是一款测试管理软件,用于开发、执行和部署计算机测试系统软件。TestStand

中调用Python模块通常有3种方法。与在LabVIEW中调用Python模块类似,需要先安装

Python开发环境并配置环境变量。

2.1TestStand直接调由Python生成的DLL

前文提到,可以借助Cython将Python脚本变成c语言文件并生成动态链接库。同样,也

可以通过这种方式在TestStand中调用由Python脚本生成的DLL。

由于代码模块是DLL,在TestStand的插入面板中,模块适配器类型选择为C/C++DLL。

在Module选项卡内选定需调用的DLL路径后,Function下拉列表中会自动枚举出该DLL所有

的函数名称,选择DLL中的函数名,然后该函数对应的输入输出参数就列出在参数列表内,

选中一个参数,可以在右侧参数属性配置区域为该参数配置相应的属性,如参数类型,参数传

递方式等。如图4所示。最后为DLL内函数的输入输出参数配置对应TestStand内设定的变量

名,并且在Limit选项卡中设定测试结果的判定条件。

这种调用方式占用资源少,代码执行效率也很高,适用于采用Python语言实现复杂算法

函数的调用。

2.2TestStand调用由LabVIEW封装Python模块创建的VI

TestStand调用由LabVIEW创建的vI来编写测试序列是开发者常用的方式,也是对NI自

动化测试测量软件生态环境的充分应用。如前文所述,既然LabVIEW中有多种方式可以调用

Python脚本模块,那么TestStand中调用由LabVIEW封装Python模块后创建的Ⅵ,就成为另

外一种TestStand结合Python语言编程的途径。

首先,在TestStand的序列编辑器中,通过工具条中的选择适配器下拉列表来选择模块适

配器为LabVIEW。模块适配器的作用在于能够让TestStand正确识别并执行LabVIEW代碼模

块,它在TestStand引擎和LabVIEW代码模块之间提供了一条通道,TestStand可以传递参数

给LabVIEW代码模块,并从LabVIEW代码模块获取数据。确定模块适配器后,在步骤类型

中选择需要的测试步骤类型插入到序列程序中,并在步骤设置窗格中完善输入输出参数的数据

传递配置。这样即可在TestStand中加载LabVIEW封装Python模块的vI。

以调用目标函数Test()为例,Test()函数功能是实现取模运算并返回结果,函数原型

见下面Python代码:def Test(a,b):

Mod-Value=a%b

return Mod——Value

首先在图2的函数选项卡中配置库文件和库函数,在Libraucname or path中选择需要调用

的文件,在Funcfionname下拉框中选择需要调用的目标函数Test()。由于是

使用Cython把Python脚本生成为DLL,而Cython底层就是由c语言实现,所以在

Callingconvention调用规范中仍选用c。然后在参数配置选项卡中分别为各个参数指定数据类

型,并选择参数传递方式为传值或传参嘲。退出Call Library Function窗口后,为输入参数赋

值,运行LabVIEW程序,即可执行Python编写的脚本函数。

需要特别指出的是,对于使用ActiveX/COM技术类型的DLL,需要先使用命

令注册,然后才可以调用DLL并使用其内部的函数。

1.4通过LabVlEW2018内置Python节点函数调用

自LabVlEW2018版开始,新版LabVlEW提供了三个可以调用Python脚本模块的接口函

数,位于函数选板Functions→Connectivity→Python位置。开发者拥有LabVIEW2018许可证

后,这三个接口函数是默认免费提供的。由于是NI官方提供的LabVlEW中调用Python接口

方式,其帮助文件和开发范例程序都比较完善。这是本文推荐的一种直接调用Python模块的

较好方式。

LabVIEW2018中提供的调用Python的相关函数有三个,分别是:①Open Python

Session,用于打開Python引用,为后续的操作程序创建Python会话;②Python Node,用于调

用Python脚本模块,并指定所调用的Python模块的函数;③Close Python Session,用于关闭

Python会话,以免内存泄漏。

LabVIEW2018中使用这三个函数调用Python脚本需要Python3.6或Python2.7开发环境,

Python版本号需要在调用Python模块时正确配置。另外,Python和LabVIEW的数据类型的匹

配有严格对应关系,如表l所示。在LabVIEW2019版中新增加了对NumPy库的Array数据类

型的支持。

基于Python3.6版本编写一个计算斐波那契数列的函数,保存为UTF-8格式并命名为

,源代码如下。

以LabVIEW2018内置的Python节点调用内的Fib(n)函数为例,先使用

OpenPythonSession节点打开一个会话,并配置脚本解析环境为Python3.6版本,确保输入的

Python版本号数据类型为字符串;然后采用PythonNode函数节点调用指定路径下的Python模

块,并输入函数名Fib和参数值n,同时输出函数返回值;最后用ClosePythonSession关闭会

话。LabVIEW编写的框图程序如图3所示。

2Testsland中调用Python模块

TestStand是一款测试管理软件,用于开发、执行和部署计算机测试系统软件。TestStand

中调用Python模块通常有3种方法。与在LabVIEW中调用Python模块类似,需要先安装

Python开发环境并配置环境变量。

2.1TestStand直接调由Python生成的DLL

前文提到,可以借助Cython将Python脚本变成c语言文件并生成动态链接库。同样,也

可以通过这种方式在TestStand中调用由Python脚本生成的DLL。

由于代码模块是DLL,在TestStand的插入面板中,模块适配器类型选择为C/C++DLL。

在Module选项卡内选定需调用的DLL路径后,Function下拉列表中会自动枚举出该DLL所有

的函数名称,选择DLL中的函数名,然后该函数对应的输入输出参数就列出在参数列表内,

选中一个参数,可以在右侧参数属性配置区域为该参数配置相应的属性,如参数类型,参数传

递方式等。如图4所示。最后为DLL内函数的输入输出参数配置对应TestStand内设定的变量

名,并且在Limit选项卡中设定测试结果的判定条件。

这种调用方式占用资源少,代码执行效率也很高,适用于采用Python语言实现复杂算法

函数的调用。

2.2TestStand调用由LabVIEW封装Python模块创建的VI

TestStand调用由LabVIEW创建的vI来编写测试序列是开发者常用的方式,也是对NI自

动化测试测量软件生态环境的充分应用。如前文所述,既然LabVIEW中有多种方式可以调用

Python脚本模块,那么TestStand中调用由LabVIEW封装Python模块后创建的Ⅵ,就成为另

外一种TestStand结合Python语言编程的途径。

首先,在TestStand的序列编辑器中,通过工具条中的选择适配器下拉列表来选择模块适

配器为LabVIEW。模块适配器的作用在于能够让TestStand正确识别并执行LabVIEW代码模

块,它在TestStand引擎和LabVIEW代码模块之间提供了一条通道,TestStand可以传递参数

给LabVIEW代码模块,并从LabVIEW代码模块获取数据。确定模块适配器后,在步骤类型

中选择需要的测试步骤类型插入到序列程序中,并在步骤设置窗格中完善输入输出参数的数据

传递配置。这样即可在TestStand中加载LabVIEW封装Python模块的vI。


本文标签: 调用 函数 模块 脚本 参数