国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

LabVIEW和TestStand中調(diào)用Python編程

2020-08-06 15:01劉規(guī)劃
計算機時代 2020年7期
關鍵詞:調(diào)用

劉規(guī)劃

摘要:為了采用Python編程來完成計算機測試測量任務,對LabVIEW和TestStand編程環(huán)境中調(diào)用Python編程的工具和方法進行了研究。介紹了在LabVlEW中通過LabPython模塊、Python集成工具包、Python生成的動態(tài)鏈接庫和LabVIEW2018內(nèi)置函數(shù)節(jié)點調(diào)用Python腳本的方法,以及在TestStand中通過調(diào)用Python生成的動態(tài)鏈接庫、由LabVIEW封裝Python模塊生成的VI和通過TestStand附加軟件工具調(diào)用Python腳本的方法。結合Python代碼實列,分析了在程序調(diào)用中的關鍵配置信息及步驟,給出在LabVIEW中和TestStand中調(diào)用Python的數(shù)據(jù)類型對應關系,推薦了相應的調(diào)用Python代碼的方式。

關鍵詞:LabVIEW;TestStand;Python;調(diào)用;動態(tài)鏈接庫

中圖分類號:TP311.1 文獻標識碼:A 文章編號:1006-8228(2020)07-54-05

0引言

Python是一種解釋型、面向?qū)ο蟆討B(tài)數(shù)據(jù)類型的高級計算機程序設計語言。近幾年隨著人工智能應用的火熱,Python語言在大數(shù)據(jù)、圖像識別、深度學習等方面得到了廣泛的應用。而在計算機測試測量領域,則更多地使用TeststaJld結合LabvIEW編程,實現(xiàn)通信、數(shù)據(jù)采集、信息交互等功能。鑒于Python的易用、免費、具有豐富的庫資源以及在數(shù)據(jù)處理和協(xié)議分析方面的優(yōu)勢,使用TeststaJld和LabvIEw調(diào)用Python模塊快速實現(xiàn)自動化測試,會越來越多地應用到實際的測試項目中,這也是近年來使用圖形化編程工具的用戶群呼聲最高的熱點技術之一。因此,研究并發(fā)掘LabVlEW和TeststaJld中各種調(diào)用Python編程的工具和方法,找到更佳、更便捷的調(diào)用方法,對于自動化測試腳本程序編寫,具有很好的實用價值。

1LabVlEW中調(diào)用Pvthon模塊

LabvIEW是由美國國家儀器(NI)公司研制開發(fā)的一種圖形化程序開發(fā)環(huán)境,是開發(fā)計算機測量與控制軟件的理想選擇。LabVIEW調(diào)用Python模塊通常有四種方法,每種調(diào)用方法在使用前都需要先安裝Pymon開發(fā)環(huán)境并配置環(huán)境變量。

1.1通過LabPython模塊調(diào)用

LabPymon是免費的OpenG工具庫中的子模塊,它是一個執(zhí)行Python腳本的LabVIEW工具,內(nèi)含一套調(diào)用Python腳本的函數(shù)節(jié)點。使用LabPython模塊來將Python程序引入LabVlEW中,可以使用市面上現(xiàn)有Python工具庫,方便LabVlEW編程。

通過VIPM可以安裝OpenG工具庫,安裝后LabPython函數(shù)選板會集成到User.1ib庫中,用戶可以在View→FunctionPalette→User Libraries→LabPython位置找到它,并可使用LabPython函數(shù)選板中列出的常用函數(shù)節(jié)點。實際使用LabPython工具庫調(diào)用Python腳本編寫應用程序時,LabPython功能并不專業(yè)且僅支持LabVIEW2009以前版本和Python2.x版本,故本文不推薦使用也不過多探討。

1.2通過Python集成工具包調(diào)用

PythonIntegration Toolkit for LabVlEW是由En-thought公司開發(fā)的商業(yè)軟件,它為Python和LabVlEW提供了一個新的無縫聯(lián)接的方式。使用該工具包可以在Python和LabVIEW程序間實現(xiàn)快速的雙向通信,通過集成工具包中的工具節(jié)點可從LabV~W中直接調(diào)用Python函數(shù)或方法,加載Python腳本到內(nèi)存中。開發(fā)者可并行運行Python和LabVIEW,為調(diào)用的函數(shù)傳遞參數(shù),并從Python解釋器中得到響應。

集成工具包函數(shù)選板中包含了調(diào)用Python腳本的函數(shù)節(jié)點,常用的函數(shù)節(jié)點包括New Session,Pack,GetValue,Set Value,Call,Unpack,CloseSession等。使用LabPython中的函數(shù)編寫調(diào)用Python模塊的方法和LabVlEW常規(guī)編程方法一致。調(diào)用Python腳本創(chuàng)建應用程序時首先使用NewSession.vi函數(shù)節(jié)點創(chuàng)建引用Python模塊的會話,然后用Pack.vi函數(shù)節(jié)點傳遞參數(shù)數(shù)據(jù)給Python腳本,接著用Call.vi指定調(diào)用的Python函數(shù)或方法的名稱并執(zhí)行調(diào)用,再從Python解釋器中取回執(zhí)行結果,最后關閉會話。編寫調(diào)用Python腳本的應用程序如圖l。

該工具包是收費的商業(yè)軟件,兼容Python2.x和Python3.x版本,調(diào)用Python腳本比較便捷,其功能比LabPython強大。但Enthought集成工具包產(chǎn)品由Enthought公司提供支持,NI并不直接提供技術支持/服務。由于是商業(yè)收費軟件且價格不菲,LabVIEW/Python集成工具包并不常用。

1.3通過Python生成動態(tài)鏈接庫調(diào)用

動態(tài)鏈接庫(DLL)是軟件開發(fā)中一種非常重要的跨語言協(xié)作方式。把Python語言寫成的腳本編譯成DLL,能夠提供給諸如c++、c#、LabVIEW等編程語言調(diào)用,這能夠在很大程度上提高軟件的開發(fā)效率。但是,雖然Python可以調(diào)用其他語言生成的動態(tài)庫,Python作為一種腳本語言,本身是不能直接編譯生成動態(tài)庫的。為了生成動態(tài)庫,可以借助Cython,將Python腳本變成c語言文件并創(chuàng)建DLL。具體如何使用Cython把Python程序創(chuàng)建生成為DLL的過程,可以參考Cython官網(wǎng)相關資料,本文不展開闡述。

LabVIEW語言是一種圖形化編程語言,結合DLL這種跨語言的編程協(xié)作,可以大大彌補它固有的不足,比如一些復雜算法處理。LabVIEW中調(diào)用由Python創(chuàng)建生成的DLL的方法和調(diào)用其他編程語言生成的DLL的方法并無本質(zhì)區(qū)別??梢允褂肔abVlEW函數(shù)選板中Functions→Connectivity→Libraries&Executables下的Call Library Function Node函數(shù)節(jié)點。把CallLibrary Function Node函數(shù)節(jié)點放置到LabVlEW框圖編程區(qū)域,雙擊打開節(jié)點,在彈出的窗口中配置調(diào)用庫函數(shù)節(jié)點,如圖2所示。

以調(diào)用目標函數(shù)Test()為例,Test()函數(shù)功能是實現(xiàn)取模運算并返回結果,函數(shù)原型見下面Python代碼:def Test(a,b):

Mod-Value=a%b

return Mod——Value

首先在圖2的函數(shù)選項卡中配置庫文件和庫函數(shù),在Libraucname or path中選擇需要調(diào)用的SharedLib.DLL文件,在Funcfionname下拉框中選擇需要調(diào)用的目標函數(shù)Test()。由于是使用Cython把Python腳本生成為DLL,而Cython底層就是由c語言實現(xiàn),所以在Callingconvention調(diào)用規(guī)范中仍選用c。然后在參數(shù)配置選項卡中分別為各個參數(shù)指定數(shù)據(jù)類型,并選擇參數(shù)傳遞方式為傳值或傳參嘲。退出Call Library Function窗口后,為輸入?yún)?shù)賦值,運行LabVIEW程序,即可執(zhí)行Python編寫的腳本函數(shù)。

需要特別指出的是,對于使用ActiveX/COM技術類型的DLL,需要先使用resvr32.exe命令注冊,然后才可以調(diào)用DLL并使用其內(nèi)部的函數(shù)。

1.4通過LabVlEW2018內(nèi)置Python節(jié)點函數(shù)調(diào)用

自LabVlEW2018版開始,新版LabVlEW提供了三個可以調(diào)用Python腳本模塊的接口函數(shù),位于函數(shù)選板Functions→Connectivity→Python位置。開發(fā)者擁有LabVIEW2018許可證后,這三個接口函數(shù)是默認免費提供的。由于是NI官方提供的LabVlEW中調(diào)用Python接口方式,其幫助文件和開發(fā)范例程序都比較完善。這是本文推薦的一種直接調(diào)用Python模塊的較好方式。

LabVIEW2018中提供的調(diào)用Python的相關函數(shù)有三個,分別是:①Open Python Session,用于打開Python引用,為后續(xù)的操作程序創(chuàng)建Python會話;②Python Node,用于調(diào)用Python腳本模塊,并指定所調(diào)用的Python模塊的函數(shù);③Close Python Session,用于關閉Python會話,以免內(nèi)存泄漏。

LabVIEW2018中使用這三個函數(shù)調(diào)用Python腳本需要Python3.6或Python2.7開發(fā)環(huán)境,Python版本號需要在調(diào)用Python模塊時正確配置。另外,Python和LabVIEW的數(shù)據(jù)類型的匹配有嚴格對應關系,如表l所示。在LabVIEW2019版中新增加了對NumPy庫的Array數(shù)據(jù)類型的支持。

基于Python3.6版本編寫一個計算斐波那契數(shù)列的函數(shù),保存為UTF-8格式并命名為FibSeq.PY,源代碼如下。

以LabVIEW2018內(nèi)置的Python節(jié)點調(diào)用FibSeq.PY內(nèi)的Fib(n)函數(shù)為例,先使用OpenPythonSession節(jié)點打開一個會話,并配置腳本解析環(huán)境為Python3.6版本,確保輸入的Python版本號數(shù)據(jù)類型為字符串;然后采用PythonNode函數(shù)節(jié)點調(diào)用指定路徑下的Python模塊,并輸入函數(shù)名Fib和參數(shù)值n,同時輸出函數(shù)返回值;最后用ClosePythonSession關閉會話。LabVIEW編寫的框圖程序如圖3所示。

2Testsland中調(diào)用Python模塊

TestStand是一款測試管理軟件,用于開發(fā)、執(zhí)行和部署計算機測試系統(tǒng)軟件。TestStand中調(diào)用Python模塊通常有3種方法。與在LabVIEW中調(diào)用Python模塊類似,需要先安裝Python開發(fā)環(huán)境并配置環(huán)境變量。

2.1TestStand直接調(diào)由Python生成的DLL

前文提到,可以借助Cython將Python腳本變成c語言文件并生成動態(tài)鏈接庫。同樣,也可以通過這種方式在TestStand中調(diào)用由Python腳本生成的DLL。

由于代碼模塊是DLL,在TestStand的插入面板中,模塊適配器類型選擇為C/C++DLL。在Module選項卡內(nèi)選定需調(diào)用的DLL路徑后,F(xiàn)unction下拉列表中會自動枚舉出該DLL所有的函數(shù)名稱,選擇DLL中的函數(shù)名,然后該函數(shù)對應的輸入輸出參數(shù)就列出在參數(shù)列表內(nèi),選中一個參數(shù),可以在右側(cè)參數(shù)屬性配置區(qū)域為該參數(shù)配置相應的屬性,如參數(shù)類型,參數(shù)傳遞方式等。如圖4所示。最后為DLL內(nèi)函數(shù)的輸入輸出參數(shù)配置對應TestStand內(nèi)設定的變量名,并且在Limit選項卡中設定測試結果的判定條件。

這種調(diào)用方式占用資源少,代碼執(zhí)行效率也很高,適用于采用Python語言實現(xiàn)復雜算法函數(shù)的調(diào)用。

2.2TestStand調(diào)用由LabVIEW封裝Python模塊創(chuàng)建的VI

TestStand調(diào)用由LabVIEW創(chuàng)建的vI來編寫測試序列是開發(fā)者常用的方式,也是對NI自動化測試測量軟件生態(tài)環(huán)境的充分應用。如前文所述,既然LabVIEW中有多種方式可以調(diào)用Python腳本模塊,那么TestStand中調(diào)用由LabVIEW封裝Python模塊后創(chuàng)建的Ⅵ,就成為另外一種TestStand結合Python語言編程的途徑。

首先,在TestStand的序列編輯器中,通過工具條中的選擇適配器下拉列表來選擇模塊適配器為LabVIEW。模塊適配器的作用在于能夠讓TestStand正確識別并執(zhí)行LabVIEW代碼模塊,它在TestStand引擎和LabVIEW代碼模塊之間提供了一條通道,TestStand可以傳遞參數(shù)給LabVIEW代碼模塊,并從LabVIEW代碼模塊獲取數(shù)據(jù)。確定模塊適配器后,在步驟類型中選擇需要的測試步驟類型插入到序列程序中,并在步驟設置窗格中完善輸入輸出參數(shù)的數(shù)據(jù)傳遞配置。這樣即可在TestStand中加載LabVIEW封裝Python模塊的vI。

2.3通過PythonStep Types for TestStand軟件工具調(diào)用

NI于2018年8月發(fā)布了一個TestStand的附加軟件工具包Python Step Types for TestStand V1.0,支持TestStand2014/2016/2017。它是一組有NI官方開發(fā)的自定義步驟類型,可用于在TestStand程序序列中指定并執(zhí)行Python腳本。通過Python Step Types forTestStand工具庫中的Python步驟類型,可以調(diào)用Python模塊函數(shù)、類成員或靜態(tài)函數(shù)。Python StepTypes for TestStandVl.0支持的Python開發(fā)環(huán)境是Python3.6或Python2.7,需要在調(diào)用Python模塊時對Python版本號正確配置。

開發(fā)者可以在Python中實現(xiàn)特定的處理計算功能,并使用參數(shù)變量在步驟之間傳遞數(shù)據(jù)。為負責傳遞數(shù)據(jù)的輸入輸出參數(shù)配置屬性時,選擇TestStand和Python之間相匹配的數(shù)據(jù)類型。表2是TestStand和Python之間的數(shù)據(jù)類型匹配關系。

安裝Python Step Types for TestStand VI.0后,TestStand2016插入選板中包含五個自定義步驟類型,分別是Action,String Value Test,Multiple NumericLimit Test,Numeric Limit Test和Pass/Fail Test步驟類型。以Multiple Numeric Limit Test步驟類型為例,用Python3.6編寫一個函數(shù),將多個值以列表形式返回,保存該模塊名為SampleFunction.PY,代碼如下:

然后采用PythonStepType中的Multiple NumericLimit Test步驟類型,調(diào)用SampleFunction.PY模塊內(nèi)samplefunction函數(shù)。打開該步驟類型所提供的ConfigurePythonStep界面,如圖5所示。指定Python解析器版本為3.6并選擇調(diào)用Python模塊的路徑,F(xiàn)unction Name下拉列表區(qū)域?qū)⒆詣用杜e出此Python模塊內(nèi)部包含的函數(shù),然后選擇調(diào)用的函數(shù),則此函數(shù)相應的參數(shù)會出現(xiàn)在參數(shù)列表中,可以為參數(shù)配置匹配的數(shù)據(jù)類型和TestStand變量。

對于函數(shù)返回的列表,若列表中的每個值都需要比較是否符合要求,Multiple Numeric Limit Test步驟類型則可以將列表中的每個數(shù)值和限值進行比較,以決定該步驟的測試結果是否合格。在參數(shù)配置窗口中,函數(shù)返回的列表數(shù)據(jù)類型使用TestStand中數(shù)組類型相匹配。

最后為Python輸入的參數(shù)值指定數(shù)據(jù)源并設置每個數(shù)據(jù)源的上下限值。運行TestStand可執(zhí)行Python腳本內(nèi)的samplefunction函數(shù),并得到返回值?;赑ython Step Types for TestStand工具在TestStand2016中調(diào)用Python腳本的方便快捷,代碼執(zhí)行效率高,推薦使用此方法。另外,在TestStand2019版中,Python適配器已經(jīng)被內(nèi)置在TestStand中,用于提供從TestStand調(diào)用Python代碼模塊的高級功能。由此可以預見,Python語言將在基于TestStand的自動化測試軟件中發(fā)揮更重要的作用。

3結束語

本文詳細闡述了目前LabVIEW和TestStand調(diào)用Python腳本編程的工具和方法,結合Python代碼實例及實際應用經(jīng)驗,指出了在LabVlEW中推薦采用LabVlEW2018內(nèi)置Python節(jié)點函數(shù)調(diào)用Python代碼模塊,而在TestStand中推薦采用PythonStep Typesfor TestStand軟件工具包調(diào)用Python代碼模塊。

當前隨著全球各大公司數(shù)字化轉(zhuǎn)型以及業(yè)務的快速發(fā)展,一個項目從開發(fā)出產(chǎn)品原型到測試驗證完成,要求的時間周期越來越短,除需要軟硬件開發(fā)人員快速地開發(fā)出原型產(chǎn)品外,也要求測試驗證人員快速搭建自動化測試系統(tǒng),并盡快編制測試腳本以完成測試驗證。而Python的簡單易用,現(xiàn)成可用的豐富資源庫等特點,正是這種應用場景所需要的,再結合NI公司豐富的測試工具資源庫,相互配合應用到LabVlEW和TestStand中,將會使測試人員搭建自動化測試系統(tǒng)變得越來越快速便捷,能更快適應當前新形勢下的研發(fā)測試需要。

猜你喜歡
調(diào)用
核電項目物項調(diào)用管理的應用研究
核電廠建設階段物項調(diào)用管理探討
LabWindows/CVI下基于ActiveX技術的Excel調(diào)用
基于系統(tǒng)調(diào)用的惡意軟件檢測技術研究
利用RFC技術實現(xiàn)SAP系統(tǒng)接口通信
C++語言中函數(shù)參數(shù)傳遞方式剖析