软件框架,特别是学习与掌握难度大、复杂性高,且尚处在不断演进变化的LabVIEW操作者框架(Actor Framework),离不开关键的各类范例的研读、模仿转换和工程实用。
NI官方以及开发者社区,为LabVIEW操作者框架(Actor Framework)这个在LabVIEW图形化开发环境中,开发能力最为强大的多任务并发框架,提供了诸多项目快速模板和多种范例例程。
在这里,我将操作者框架的相关例程做一个统一梳理和汇总,方便各位小伙伴们在学习中按图索骥,从而少走弯路和节约时间。
LabVIEW操作者框架(Actor Framework)的范例按其出处来源分为下面几类:随系统所带的范例例程,NI官网社区论坛中的范例,讲解视频配套的范例,技术交流大会演讲范例附件、VIPM(VI Package Manager)中范例模板。
由于操作者框架的范例非常多,单用一篇文章的篇幅是肯定讲解不完的,因此我先按照上面的范例出处分类写一个系列文章,本篇就是范例的第二篇,讲解一下视频范例,其中第一篇系统自带范例还请移步:
LabVIEW操作者框架(Actor Framework)范例集锦之一:系统自带范例
也希望大家多多支持捧场,不要系列文章再烂尾!
由于LabVIEW本身,就是用图形化视觉元素呈现方式进行的编程开发,因此非常适合通过操作视频类的讲解进行快速学习,而对于操作者框架而言,目前最好的教学视频莫过于YouTube上的汤姆.麦奎兰(Tom McQuillan)的LabVIEW Actor Framework 系列讲解视频了,国内B站上也有诸多的学习爱好者进行了搬运共享。
一.该系列视频基本情况介绍:
全部系列视频一共有13集,总时长 04:30:44 ,即将近270分钟,我根据视频内容简单进行了一下学习难度的评级,以便辅助大家自己学习。
1. Recap of Modular Applications in LabVIEW;时长:08:55 ,学习难度:★;
2. Deriving the Actor Core in Actor Framework (The Command Pattern) ;时长:10:49,学习难度:★★★★;
3. Creating Your First Actor - Hello World! 时长:10:40,学习难度:★;
4. User Interface Basics with Actor Core Override ;时长:15:26,学习难度:★;
5. User Events in Actor Framework (+ Chat Window Project Intro);时长:16:46,学习难度:★;
6. Actor System Design and Messaging;时长:18:39,学习难度:★★;
7. How Actor Systems Stop and What Happens When an Error Occurs;时长:03:14,学习难度:★★★;
8. User Interfaces in Actor Framework and User Event Scripting;时长:08:17;学习难度:★★;
9. Abstract Messages in LabVIEW Actor Framework ;时长:13:53,学习难度:★★★★;
10. Top Five Actor Framework Overrides;时长:12:22,学习难度:★★★★;
11. Using Subpanels with the LabVIEW Actor Framework;时长:16:39,学习难度:★★★★★;
12. LabVIEW Maps (feat. Actor Framework) ;时长:11:59,学习难度:★★;
13. Interface Messages in Actor Framework - Never create an Abstract Message again!;时长:10:13,学习难度:★★★;
14. Trying out Actor Framework in LabVIEW NXG 4.0…;时长:53:04,学习难度:不推荐;
15. State of Grace - The State Pattern in LabVIEW;时长:1:00:39,学习难度:★★★★★;
二.该套系列视频具备以下优点:
A.系统性
视频的顺序逻辑安排,以循序渐进的方式提供了优良的系统性,从模块化需求背景问题挑战开始引入操作者框架,详细地演示了框架的迭代演化过程,并从始至终的使用一个完整的聊天室(Chat Room)的范例来演示操作者框架的诸多概念和编程知识点。
B.全面性
概念与知识涵盖范围广的全面性:包含模块化、QMH与AF的演化、树状通信结构、用户界面、抽象消息、命令与MVC设计模式;
开发版本覆盖的全面性:即使用了LabVIEW 2019版本(主要开发版本),也实验了LabVIEW NXG 4.0中的操作者框架的开发功能验证。
C.专业性
视频作者本身经历与能力的专业性:视频作者——汤姆.麦奎兰(Tom McQuillan)有着电子工程的高等教育专业背景,多年LabVIEW工作实战开发经验和会议交流的技术演讲者,以及在NI工作两年的多年培训经验以及多个官方认证能力资格,使其对起源于NI官方的操作者框架具有良好的专业概念理解。
视频制作的匠心专业性:作者汤姆.麦奎兰在此系列视频中精心准备了PPT演示(含动画演示)。
关于更多该系列视频的详细介绍资料可以参考我以前写的一篇知乎专栏文章。
三.关于该套系列视频的范例
视频配套的范例代码作者全部上传到了编程基友乐园Github上的个人项目存储库中,方便大家下载练习。
https://github.com/TomsLabVIEWAdventure?tab=repositories
系列视频一共是有十一个具体范例,但是其例程的顺序颇为混乱,本文重新梳理了一下以便大家按图索骥的顺序进行学习。
(1).第一个范例为对应到视频编号1的用以讲解QMH的并行任务框架的概念范例,并不是一个真正可以运行的范例。
https://github.com/TomsLabVIEWAdventure/Messaging-Theory-for-AF-Series-Video-1
(2).第二范例是在视频"3 .Creating Your First Actor - Hello World!" 中用以讲解的使用操作者框架开发一个最简单的操作者程序。
https://github.com/TomsLabVIEWAdventure/Creating-your-first-actor
(3).第三个范例是针对视频4"User Interface Basics with Actor Core Override "的用户界面开发技术介绍。
https://github.com/TomsLabVIEWAdventure/User-Interface-Basics-with-Actor-Core-Override
(4).范例四至范例七,则分别对应着视频5、6、8和9。
https://github.com/TomsLabVIEWAdventure/Chat-Window-Tutorial-Series
(5).系列视频知识汇总的完整功能的聊天室范例,该范例为系列视频的第八个范例,而前面的范例多是单一功能知识点的讲解演示范例,对应的视频为10“Top Five Actor Framework Overrides”。
https://github.com/TomsLabVIEWAdventure/ChatRoom
(6).该系列最大也是最复杂的带有子面板功能的聊天室范例为范例九,对应的视频则是11“Using Subpanels with the LabVIEW Actor Framework”。
https://github.com/TomsLabVIEWAdventure/SubPanel-Actor-Framework
(7).范例十是为了演示LabVIEW 2019新增加的map数据集,对应的视频编号为12“LabVIEW Maps (feat. Actor Framework) ”。
https://github.com/TomsLabVIEWAdventure/Maps-with-Actor-Framework
(8).LabVIEW 2020的版本在面向对象编程范型中推出了接口,进而用以替代原先的抽象消息类的嵌套操作者向调用操作发送消息的方式,Tom大神也相应的推出的更新版本,即范例十一,对应的视频为编号13“Interface Messages in Actor Framework - Never create an Abstract Message again!”。
https://github.com/TomsLabVIEWAdventure/InterfaceMessagesActorFramework
四.关于该套系列视频的范例的学习指南说明
Tom大神这套大神的操作者框架视频量足,劲大,水平高,不单单是只教授如何操作,而是包括内在原理也讲解的清清楚楚、明明白白的!好多小伙伴都是从该系列视频学习上手,并掌握了操作者框架的编程。
但是该系列视频也有几个特别需要注意的地方:
首先就是前面的学习路线比较平缓,但是在10集时,给大家一个完整的聊天室时,很多小伙伴可能会猝不及防,无法跟上学习的进度。
此外带有动态子面板功能的聊天室和操作者状态模式都是比较高价的操作者框架编程知识点,刚开始接触操作者框架编程的小伙伴,比较难以正确的掌握并合理地应用到实际工作生产当中去。
最后,在实际使用操作者框架进行开发LabVIEW多任务并发任务时,或多或少都会使用到面向对象中的设计模式,我在前一段进行单位的某个项目重新开发时,就历经多个版本的迭代,陆续实现了多个设计模式。而本系列视频对此并没有涉猎太多基础的设计模式,最后反倒是给了一个状态模式。
因此,也希望大家明白该系列视频中的聊天室范例主要目的:还是用于知识点和相关技术的功能展示,而实际开发代码的时候,随系统而带的“反馈式冷凝器”和“咖啡馆范例”更加的契合实际的工程项目,有更高的参考价值。
下一篇范例系列文章我们聊聊关于NI官网社区论坛,以及NIPM中的操作者框架相关范例。还希望大家多多点赞,转发,感谢你的大力支持。