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。
版权声明:本文标题:LabVIEW和TestStand中调用Python编程 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1713977551a660211.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论