栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

labview混合编程学习

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

labview混合编程学习

由于开发需要,上位机需要采用labview设计,但是之前研究算法主要靠matlab或者python,因此考虑采用labview混合编程的方式。
目前,界面设计采用Labview,而算法部分采用Matlab或者python,即采用混合编程的方式设计电池检测系统的上位机软件,要求开发的电脑上同时安装以上软件。
目前的开发环境的版本:
LabVIEW 2019 32bit中文版
MatLab R2018b以上版本
python 32bit

软件安装与配置 labview安装

安装32bit的labview2019,按照一般网上教程正常安装即可。不过目前发现labview似乎只能装入c盘,想调整到别的盘比较麻烦,所以有个大c盘很重要。

Matlab安装与配置

Matlab按照一般网上教程正常安装即可。
按住完成后,需要额外安装Mingw编译器组件这里也有很多方法,安装mingv之后,只需配置下环境变量。
如果不想配置环境变量之类的,有个简单的方法:
找到matlab的附加功能按钮

在里面搜索mingw-w64

安装时需要注册账号。
装完后mex -setup确认编译器设置完成。

如果是别的编译器作为默认编译器,可以按照matlab提示切换mingw,当然,也可以用别的c++编译器。

另外,由于本次要生成的是com组件,以win10开发为例,还需要安装windows 10 sdk
去微软的官网下载(地址)
下载后得到一个在线安装包,安装操作执行即可。

python

在网上搜索python3.6的独立安装包,为了兼容性考虑,安装了32bit的版本(后面不带amd64)

然后安装即可。需要注意的是安装位置必须是设置为C:Python3.6


需要注意的是,anaconda的虚拟环境并不能成功与labview配合,所以这里只能安装python的官方版本。以后单独开发时,可以用virtualenv创建虚拟环境,然后在里面开发完后,在转入安装的全局python。

混合编程示例 Matlab混合编程

这里参照学习的是《LabVIEW调用MatLab程序进行混合编程的实用方法》

MatLab生成COM组件

MatLab中新建脚本文件,写入函数。这里简单的写一个求平方的函数作为例子。

点击“应用程序”->“应用程序编译器”。

然后在DEPLOYMENT窗口中,依次点击“NEW”->“Liabrary Compiler Porject”->“Generic COM component”-> 添加需要的.m文件->“Package”。

等待打包完成,MatLab会自动跳转到生成的文件夹,在for_testing文件夹下可看到生成的.dll文件。

LabVIEW中调用COM组件

LabVIEW后面板,函数面板中依次点击“Connectivity”->“ActiveX”,将“自动打开”和“调用节点”函数拖入后面板。

在“自动打开”函数上右击,浏览到MatLab生成的.dll文件。



已自动定位到类库,选择库中的对象,确定。

连接调用节点的引线,调用节点的方法中选择需要的函数(本例中是test函数)。

给函数的输入变量和输出变量赋值,可以看到变量的名称与我们在MatLab中建立的函数的变量名称完全一致,但多了一个变量nargout,这个变量是指输出变量的数量,一般为1就好。
前面板输入参数,运行

Python混合编程 python编写

python的编写按照常规编写即可。使用任意编辑器,按照python语法构建一个函数,这里以一个加法函数为例。

调用python

2018版本开始,labview自带了python接口。


首先是“打开Python会话”控件,设置python版本

然后是连接“Python节点”控件,设置文件路径和选择函数名

同时设置函数返回类型

同理设置ass函数的节点配置,最后连接“关闭Python会话”
完成后的连接:

回到前面板,点击白色按钮可以运行,此时会报错,因为没有选择python文件路径。

设置选择后运行

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/738265.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号