在BlocklyDuino(or BlockyDuino-for-LinkIt)\blockly中有兩個資料夾:
Generator 會生成對應 Blocks 的 Arduino code,因此在 BlocklyDuino\blockly\Blocks 資料夾下的檔案或 function,在 Generator 端都要有一個同樣函數名稱的對應。
接下來,簡單講解 Block 的 code 所代表的意義。在Block中,以servo.js的讀取servo狀態為例:
其中的 Blocky.Blocks['function name']
務必要注意兩邊資料夾的名稱要相同,
而您將可以在 init:function() { code.....}
完成您要做的事情。
在 generator 的部分,仍以servo.js的讀取servo狀態為例:
主要Map至Arduino的Function用法: Blockly.Arduino.definitions_['function name']= 'arduino function'
其中要注意的是,
在同一個Block中,function name 的部分要避免相同的名字,否則在Map至Arduino Code中的時候將會產生後宣告的function覆蓋掉前面寫過的相同Function的情形。
關於Blockly.Arduino.ORDER_ATOMIC
,則是會告訴 Blockyduino 現在即將要進到下一個 Block 而不是進到子Block運行。
Example:
Blockly.Arduino.ORDER_ATOMIC
,並開始執行下一個Block的指令。this.setHelpUrl 用於塞入網址,可以在IDE中點HELP即可進入。
this.setColour 塞的是Block的色調
this.setPreviousStatement & this.setNextStatement 決定能不能被插 & 插入Block
appendDummyInput() 告訴程式此處要塞字串
.appendField(new Blockly.FieldImage(Blockly.Blocks.servo.image, 64, 64))
setCheck 確認型別
setAlign 確認邊界
setTooltip 是將blocky\msg資料夾中相關的Block說明訊息映射至Block中供使用者可以在IDE中參閱。
FieldDropdown 下拉式選單
setOutput 變成Data拼圖,類似數據的情形
Blockly.Arduino.statementToCode 對應到this.statementinput.
this.appendValueInput 允許你讓Data Block從右邊插入
this.appendDummyInput 則是沒有讓Data Block從右邊插入的功能,但是可以讓你在下面繼續塞Block內部的字串,也不需要在appendDummyinput()裡面宣告特定的文字,更可以塞一些選項
8.在Command line用sh make.sh
去build,並將offline-editor 拖曳丟入 chrome : extension 完成。
- 注意:假如有換行字元的原因而無法成功build的時候,請改為使用: sh make0.sh