前言
Mixly可以看作是介于普通用户与Arduino IDE之间桥梁,通过这个桥梁,即使用户不懂C语言的语法,也可以利用图形化程序编写Arduino程序。Mixly的基本原理是将图形化程序转化成C语言,再利用Arduino IDE上传到硬件中。
根目录下的xml文件定义了图形块的基本信息,比如类别、名称,ID等。block/xxx.js文件定义了每个图形块的样式,比如颜色、文字、图标等。generator/xxx.js文件是将图形块程序转化成C语言的关键部分。language/xxx/en.js(zh-hans.js)等文件是语言文件,en.js是英文语言文件,zh-hans.js是简体中文语言文件,zh-hant.js是繁体中文语言文件。该类文件定义了图形块程序中每一个字段显示的文字内容。
一、软硬件
Mixly 1.1.7
官方指南: Instructions -使用Mixly写自定义库
脚本语言: JavaScript
二、文件结构
1.引入库
2.生成模块
3.主要代码
block/xxx.js
此脚本定义和配置了模块的图形化
Blockly.Blocks.esp8266wifi_begin = {
init: function() {
this.setColour(Blockly.Blocks.esp8266wifi.HUE);
this.appendValueInput("ssid")
.appendField(Blockly.MIXLY_ESP8266WIFI_BEGIN)
.appendField(Blockly.MIXLY_ESP8266WIFI_SSID)
.setCheck(String);
this.appendValueInput("password")
.appendField(Blockly.MIXLY_ESP8266WIFI_PASSWORD)
.setAlign(Blockly.ALIGN_RIGHT)
.setCheck(String);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setInputsInline(true);
}
};
根文件夹中 xml 文件
此脚本为全局路径配置
<category name="ESP8266WiFi" colour="100">
<block type="esp8266wifi_begin">
<value name="ssid">
<shadow type="text">
<field name="TEXT">wifiname</field>
</shadow>
</value>
<value name="password">
<shadow type="text">
<field name="TEXT">12345678</field>
</shadow>
</value>
</block>
</category>
generator 文件夹中 js 脚本
Blockly.Arduino.esp8266wifi_begin = function() {
var ssid = Blockly.Arduino.valueToCode(this, 'ssid',Blockly.Arduino.ORDER_ATOMIC);
var password = Blockly.Arduino.valueToCode(this, 'password', Blockly.Arduino.ORDER_ATOMIC);
Blockly.Arduino.definitions_['define_ESP8266WiFi'] = '#include <ESP8266WiFi.h>';
Blockly.Arduino.definitions_['var_WiFiClient_wificlient'] = 'WiFiClient wificlient;';
var code = "WiFi.begin(" + ssid + "," + password +");\n";
return code;
};