labview 摄像头_LabVIEW面向对象(LVOOP)学习笔记(2)-如何动态选择要执行的类...

接上一篇的学习笔记

掉下巴的麋鹿:LabVIEW面向对象(LVOOP)学习笔记(1)​zhuanlan.zhihu.com

e377f3c2eb8e85fd945a827c193f54d0.png

在前五集的介绍中,油管博主讲解了为什么要引入面向对象编程,如何创建类,如何分派,如何在LabVIEW中继承,子类如何重写基类行为,类之间的数据如何传递的,样式如何自定义更改,还通过手动连线不同的对象后,展示VI动态调用的功能。


油管主第六集中介绍了如何动态选择要执行的类

油管主举了一个例子:simulation子类实现的功能是通过将已保存在本地的图像循环显示,是一个相机的模拟。WebCam子类是实际获取摄像头的实时图像显示。直到软件运行时用户才知道哪些相机可以选择,选择了那种相机,才实现对应相机的功能。

我自己的例子还是以数表父类,34401子类和NI DMM子类为例。参考油管主的例子,添加了实现动态选择要执行类的子VI(DMM Selector.vi和Find Supported Devices.vi)。

34b591c7153057cfc1cb6e2ed9aeaf59.png

1eac00b007bbb51f7c99fac75fc66733.png

程序运行前,可以看到DMM Selector.vi前面板上的选择控件是空白的,这个控件直到运行的时候才会列出来哪些类是可以用的。这个DMM Selector.vi能做的就是让我们在运行时可以在不同的类中进行选择,这个视频里介绍的是如何从文件中加载类。

61bc90c19fa0af77132be1f0cd374543.png

这个视频里介绍的是如何从文件中加载类,油管主还在其他视频里有更详细的介绍。(等找到看完补上)

看DMM Selector.vi的框图,里面的Find Supported Devices.vi用来在一个相对的文件夹中寻找带有.lvclass扩展名的文件,然后可以使用属性节点将这些类的文件名称扔到前面板上,更新前面板控件,接下来的事件结构等待用户单击,“好的”,一旦这发生了,对字符串和路径进行一些格式化,找到我们想要导入内存的.lvclass。这就会返回labview对象类,这也是祖先类,我们的类在labview中。通过Get LV Class Default Value.vi动态创建类对象,包括编辑时未知的类对象。因为在这个例子中,有VI用于重写,所以要选择一个实现。

64a0d9eec8d0b0a2ab3e55266974fd77.png

在Find Supported Devices.vi中,Recursive File List VI 用来列出文件夹或LLB的内容,这里用来实现一个相对的文件夹中寻找带有.lvclass扩展名的文件。Get File Extension VI 用于
返回指定文件的不带句点(.)的文件扩展名。这个Find Supported Devices.vi的输出更新了DMM Selector.vi前面板中选择控件的内容,实现了在运行后让用户直到有哪些可用的类,用户进行选择运行哪一个类。

7317e3af3bcdf988c8ad78cca424d645.png

47a2cfbcf6f57c0e03e3572146bcf473.png

运行Main.vi后,用户在选择控件中进行选择

d6fc4b13444f703e1d9ca8d1b7378267.png

当选择34401时,表现如第五集中介绍的实例化34401类的表现。

e21ce60abdd53828bbf79b60899b4e40.png

当选择NI DMM时,表现如第五集中介绍的实例化NI DMM类的表现。

4b28e4ddf67dda473f2245c21af4206a.png

以上只是面向对象编程能力的一个简单演示。这个例子很好的演示了没有可用的硬件时,可以创建一个模拟类,当有了可用的硬件,可以创建一个硬件类,并且可以在两个类之间选择一次加载。


看完了油管主的这五个小短视频后,让我感觉之前一直在学习LVOOP门口徘徊的阶段一下到了迈入半只脚的阶段,对SOLID的设计原则有了初步的认识,不再是字面的理解。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值