继上一篇章 EsDA MPC-ZC1 入门(一)——软件安装,本章节以最简单的 LED控制例程来介绍 AWFlow 应用流图的基本开发过程。
整个教程通过5个步骤,演示了节点添加、配置、连线等基本开发过程,实现了LED点亮, 闪烁, 流水灯等功能。
Step.1搜索LED节点
可通过搜索框,快速定位到 LED 节点。
每一个节点都有对应的帮助文档,详细介绍了节点的属性、输入参数、输出数据、行为特性和对应例程。
1. LED节点属性
- 名称(Name):节点名称,可用于索引查找本节点;
- 显示名称(Display Name):用于画布上显示的名称,仅做显示;
- 设备名称(Device Name):用于索引硬件 LED 设备,通常由目标板提供枚举选项;
- 初始状态(Initial State):LED 初始状态,on(亮)或 off(灭)。
2. LED输入参数
- payload(负载数据):指示 LED 的状态参数,0(灭),1(亮),2(反转);
- timer(闪烁周期):当本参数存在时,LED 进入闪烁模式,并按照参数值,周期性闪烁;
- device_name(设备名称):通常用于多 LED 控制时,匹配指定 LED 设备;
- fast_blink(闪烁次数):当使能 timer 功能,此参数可用于设置闪烁参数。
所有节点的输入参数皆由上级节点输出提供,通常为 msg 对象携带的对应属性参数。
3. LED输出数据LED 为 sink 类型节点,不对外输出。
相关的节点类型介绍可参考《AWFlow节点开发指南》
https://awstudio.zlg.cn/pro/docs/awstudio_docs/AWFlow_Node_Develop_Guide/
Step.2添加LED节点
将 LED 节点推拽至画布上,完成节点添加。
双击画布上的 LED 节点,打开节点配置界面。
此处选择 led_red 设备,对应板载的红色LED,并将初始状态配置为 on,然后点击完成。
属性说明可以参考 LED 节点属性章节。
Step.3 下载流图
点击请选择目标板,选中目标板通信接口(AWFlow Designer 后台会自动检测符合AWFlow 通信标准的通信接口)。
点击下载流图按钮。
下载完成。
此时可以看到板子的红色LED已经亮起,这是因为我们配置了LED的初始状态为on,所以当LED节点被加载时,会点亮对应的LED。
虽然LED已经成功点亮,但是仅使用 LED 节点并不能实现复杂的状态控制功能,我们需要进一步添加其他节点来实现复杂业务。
Step.4添加业务
大多数带有业务的数据流,都会根据系统中的一些事件来做出响应的,一般以一个 pump 类型的节点作为起始点,通过此节点接收系统事件来触发数据流执行,这里我们以 1秒反转一次LED状态作为业务。我们需要添加一个 timer 节点,利用 timer 节点产生的周期事件来触发数据流执行,同时推动一个 fscript 脚本节点来向 LED 节点输入反转的命令。
关于timer、fscript节点的介绍可参考《AWFlow节点使用手册》
https://awstudio.zlg.cn/pro/docs/AWFlow/
添加timer节点
添加fscript节点
编辑fscript节点
如图片所示:
- 添加 timer、fscript 节点,并进行连线;
编辑 fscript 节点脚本。
msg.payload = 2
- 可参考LED 输入参数
timer节点默认以 1 秒为周期,触发数据流运行,向fscript传递定时计数值,此处fscript节点并未使用timer的计数值,仅利用其周期事件来向LED节点发送反转命令。
下载流图
重复Step.3 下载流图的步骤,下载最新流图,可以看到板载红色LED整以1秒的周期进行反转。
Step.5扩展业务
为了更加深入的了解业务的开发过程,这里通过流水灯业务进一步扩大业务规模。
1. 添加新数据流
按照之前添加节点的方式,新增额外2路LED控制数据流,如下图所示:
可选中画布中的 fscript 和 led 节点通过 ctrl+c 复制,ctrl+v 粘贴来快速添加节点。
2. 配置LED节点
3路 LED 配置如下图所示:
3. 配置业务节点
3路 fscript 节点配置如下图所示:
前面我们了解到 timer 节点会周期性向下一节点推送一个定时器计数值(msg.payload),我们可利用这个计数值来索引不同的LED。
if (msg.payload /1000 %3 == 0) {
output.payload = 1} else {
output.payload = 0
总共有3路LED,那么我们通过msg.payload /1000 % 3计算来获得3个索引条件。
timer 节点计数精度为1毫秒,默认计数周期为1秒,除以 1000 获得秒计数值。
代码 | 点亮LED |
msg.payload /1000 %3 == 0 | 红色 |
msg.payload /1000 %3 == 1 | 蓝色 |
msg.payload /1000 %3 == 2 | 绿色 |
由于timer节点的输出数据(msg),需要被推送到多路数据流上,所以为了不影响其他数据流的使用,这里我们选择output作为输出数据。
关于output、msg对象的详细描述,可参考《AWFlow节点开发指南》
https://awstudio.zlg.cn/pro/docs/awstudio_docs/AWFlow_Node_Develop_Guide/
最终流图如下所示:4. 下载流图重复Step.3 下载流图的步骤,下载最新流图,可以看到板载LED整以1秒的周期进行切换显示。
-
led
+关注
关注
242文章
23277浏览量
660831
发布评论请先 登录
相关推荐
评论