繼上一篇章 EsDA MPC-ZC1 入門(一)—— 軟件安裝 ,本章節(jié)以最簡單的 LED控制 例程來介紹 AWFlow 應用流圖的基本開發(fā)過程。
整個教程通過5個步驟,演示了節(jié)點添加、配置、連線等基本開發(fā)過程,實現(xiàn)了LED點亮, 閃爍, 流水燈等功能。
Step.1 搜索 LED 節(jié)點
可通過搜索框,快速定位到 LED 節(jié)點。
每一個節(jié)點都有對應的幫助文檔,詳細介紹了節(jié)點的屬性、輸入參數(shù)、輸出數(shù)據(jù)、行為特性和對應例程。
1. LED 節(jié)點屬性
名稱(Name):節(jié)點名稱,可用于索引查找本節(jié)點;
顯示名稱(Display Name):用于畫布上顯示的名稱,僅做顯示;
設備名稱(Device Name):用于索引硬件 LED 設備,通常由目標板提供枚舉選項;
初始狀態(tài)(Initial State):LED 初始狀態(tài),on(亮) 或 off(滅)。
2. LED 輸入?yún)?shù)
payload(負載數(shù)據(jù)):指示 LED 的狀態(tài)參數(shù),0(滅),1(亮),2(反轉);
timer(閃爍周期):當本參數(shù)存在時,LED 進入閃爍模式,并按照參數(shù)值,周期性閃爍;
device_name(設備名稱):通常用于多 LED 控制時,匹配指定 LED 設備;
fast_blink(閃爍次數(shù)):當使能 timer 功能,此參數(shù)可用于設置閃爍參數(shù)。
所有節(jié)點的輸入?yún)?shù)皆由上級節(jié)點輸出提供,通常為 msg 對象攜帶的對應屬性參數(shù)。
3. LED 輸出數(shù)據(jù)LED 為 sink 類型節(jié)點,不對外輸出。
Step.2 添加 LED 節(jié)點
將 LED 節(jié)點推拽至畫布上,完成節(jié)點添加。
雙擊畫布上的 LED 節(jié)點,打開節(jié)點配置界面。
此處選擇 led_red 設備,對應板載的紅色LED,并將初始狀態(tài)配置為 on,然后點擊完成。
屬性說明可以參考 LED 節(jié)點屬性 章節(jié)。
Step.3 下載流圖
點擊 請選擇目標板,選中目標板通信接口(AWFlow Designer 后臺會自動檢測符合AWFlow 通信標準的通信接口)。
點擊下載流圖按鈕。
下載完成。
此時可以看到板子的 紅色LED 已經(jīng)亮起,這是因為我們配置了 LED 的初始狀態(tài)為 on,所以當 LED 節(jié)點被加載時,會點亮對應的LED。
雖然LED已經(jīng)成功點亮,但是僅使用 LED 節(jié)點并不能實現(xiàn)復雜的狀態(tài)控制功能,我們需要進一步添加其他節(jié)點來實現(xiàn)復雜業(yè)務。
Step.4 添加業(yè)務
大多數(shù)帶有業(yè)務的數(shù)據(jù)流,都會根據(jù)系統(tǒng)中的一些事件來做出響應的,一般以一個 pump 類型的節(jié)點作為起始點,通過此節(jié)點接收系統(tǒng)事件來觸發(fā)數(shù)據(jù)流執(zhí)行,這里我們以 1秒 反轉一次LED狀態(tài) 作為業(yè)務。我們需要添加一個 timer 節(jié)點,利用 timer 節(jié)點產(chǎn)生的周期事件來觸發(fā)數(shù)據(jù)流執(zhí)行,同時推動一個 fscript 腳本節(jié)點來向 LED 節(jié)點輸入反轉的命令。
添加 timer 節(jié)點
添加 fscript 節(jié)點
編輯 fscript 節(jié)點
如圖片所示:
添加 timer、fscript 節(jié)點,并進行連線;
編輯 fscript 節(jié)點腳本。
msg.payload = 2
可參考 LED 輸入?yún)?shù)
timer 節(jié)點默認以 1 秒為周期,觸發(fā)數(shù)據(jù)流運行,向 fscript 傳遞定時計數(shù)值,此處 fscript 節(jié)點并未使用 timer 的計數(shù)值,僅利用其周期事件來向 LED 節(jié)點發(fā)送反轉命令。
下載流圖
重復 Step.3 下載流圖 的步驟,下載最新流圖,可以看到板載紅色LED整以1秒的周期進行反轉。
Step.5 擴展業(yè)務
為了更加深入的了解業(yè)務的開發(fā)過程,這里通過流水燈業(yè)務進一步擴大業(yè)務規(guī)模。
1. 添加新數(shù)據(jù)流
按照之前添加節(jié)點的方式,新增額外2路LED控制數(shù)據(jù)流,如下圖所示:
可選中畫布中的 fscript 和 led 節(jié)點通過 ctrl+c 復制,ctrl+v 粘貼來快速添加節(jié)點。
2. 配置LED節(jié)點
3路 LED 配置如下圖所示:
3. 配置業(yè)務節(jié)點
3路 fscript 節(jié)點配置如下圖所示:
前面我們了解到 timer 節(jié)點會周期性向下一節(jié)點推送一個定時器計數(shù)值(msg.payload),我們可利用這個計數(shù)值來索引不同的LED。
if (msg.payload /1000 %3 == 0) { output.payload = 1} else { output.payload = 0
總共有3路LED,那么我們通過 msg.payload /1000 % 3 計算來獲得3個索引條件。
timer 節(jié)點計數(shù)精度為1毫秒,默認計數(shù)周期為1秒,除以 1000 獲得秒計數(shù)值。
代碼點亮LED
msg.payload /1000 %3 == 0紅色
msg.payload /1000 %3 == 1藍色
msg.payload /1000 %3 == 2綠色
由于 timer 節(jié)點的輸出數(shù)據(jù)(msg),需要被推送到多路數(shù)據(jù)流上,所以為了不影響其他數(shù)據(jù)流的使用,這里我們選擇 output 作為輸出數(shù)據(jù)。
最終流圖如下所示:
4. 下載流圖重復Step.3 下載流圖 的步驟,下載最新流圖,可以看到板載LED整以1秒的周期進行切換顯示。
審核編輯:湯梓紅
評論