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版本,故本文不推荐使用也不过多探讨。
numpy库常用函数        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脚本创建应
用程序时首先使用NewSession.vi函数节点创建引用Python模块的会话,然后用Pack.vi函数节点传递参数数据给Python脚本,接着用Call.vi指定调用的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所示。