Files
2024-07-19 10:16:00 +08:00

453 lines
15 KiB
JavaScript

import * as Blockly from 'blockly/core';
const COMMUNICATE_HUE = 140;
export const communicate_ir_recv = {
init: function () {
this.setColour(COMMUNICATE_HUE);
this.appendValueInput('PIN')
.appendField(Blockly.Msg.MIXLY_IR_RECEIVE);
this.appendDummyInput()
.appendField("获取编码");
this.setOutput(true);
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.MIXLY_ESP32_I2C_SCAN);
}
};
export const communicate_i2c_init = {
init: function () {
this.setColour(COMMUNICATE_HUE);
this.appendValueInput('SUB')
.appendField("I2C " + Blockly.Msg.MIXLY_SETUP)
.setCheck("var");
this.appendValueInput("TX", Number)
.appendField("SCL#")
.setCheck(Number)
.setAlign(Blockly.inputs.Align.RIGHT);
this.appendValueInput("RX", Number)
.appendField("SDA#")
.setCheck(Number)
.setAlign(Blockly.inputs.Align.RIGHT);
this.appendDummyInput()
.appendField("通道")
.appendField(new Blockly.FieldDropdown([['0', 'I2C0'], ['1', 'I2C1'], ['2', 'I2C2']]), 'mode');
this.appendValueInput('freq')
.setCheck(Number)
.appendField(Blockly.Msg.MIXLY_FREQUENCY)
.setAlign(Blockly.inputs.Align.RIGHT);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.MIXLY_ESP32_I2C_INIT);
}
};
//--------新增-------------------------------------------------------
export const communicate_i2s_init = {
init: function () {
this.setColour(COMMUNICATE_HUE);
this.appendValueInput('SUB')
.setCheck("var")
.appendField("I2S 初始化");
this.appendDummyInput()
.appendField("设备")
.appendField(new Blockly.FieldDropdown([['麦克风', 'mic'], ['扬声器', 'spk']]), 'mode');
this.appendValueInput("BCK", Number)
.appendField("BCK#")
.setCheck(Number)
.setAlign(Blockly.inputs.Align.RIGHT);
this.appendValueInput("WS", Number)
.appendField("WS#")
.setCheck(Number)
.setAlign(Blockly.inputs.Align.RIGHT);
this.appendValueInput("DAT", Number)
.appendField("DAT#")
.setCheck(Number)
.setAlign(Blockly.inputs.Align.RIGHT);
this.appendValueInput('sample')
.appendField("采样率")
.setCheck(Number)
.setAlign(Blockly.inputs.Align.RIGHT);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.MIXLY_ESP32_I2C_INIT);
}
};
// 以下被禁用
export const communicate_i2c_read = {
init: function () {
this.setColour(COMMUNICATE_HUE);
this.appendValueInput('VAR')
.appendField("I2C")
.setCheck("var");
this.appendValueInput('address')
.setCheck(Number)
.appendField(Blockly.Msg.MIXLY_ESP32_RNUMBER);
this.appendValueInput('data')
.setCheck(Number)
.appendField(Blockly.Msg.LANG_MATH_BYTE);
this.setOutput(true);
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_I2C_READ);
}
}
export const communicate_i2c_write = {
init: function () {
this.setColour(COMMUNICATE_HUE);
this.appendValueInput('VAR')
.appendField("I2C")
.setCheck("var");
this.appendValueInput('address')
.setCheck(Number)
.appendField(Blockly.Msg.MIXLY_ESP32_WNUMBER);
this.appendValueInput('data')
.setCheck(Number)
.appendField(Blockly.Msg.MIXLY_MICROBIT_JS_I2C_VALUE);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.MIXLY_MICROBIT_JS_I2C_WRITE);
}
}
export const communicate_i2c_scan = {
init: function () {
this.setColour(COMMUNICATE_HUE);
this.appendValueInput('VAR')
.setCheck("var")
.appendField(Blockly.Msg.MIXLY_ESP32_I2C_SCAN1);
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_ESP32_I2C_SCAN2);
this.setOutput(true);
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.MIXLY_ESP32_I2C_SCAN);
}
}
export const communicate_spi_init = {
init: function () {
this.setColour(COMMUNICATE_HUE);
this.appendValueInput('VAR')
.setCheck('var')
.appendField(Blockly.Msg.MIXLY_ESP32_SPI_INIT);
this.appendValueInput('freq')
.setCheck(Number)
.appendField(Blockly.Msg.MIXLY_SERIAL_BEGIN);
this.appendValueInput('polarity')
.setCheck(Number)
.appendField('polarity');
this.appendValueInput('phase')
.setCheck(Number)
.appendField('phase');
this.appendValueInput('sck')
.setCheck(Number)
.appendField('SCK');
this.appendValueInput('mosi')
.setCheck(Number)
.appendField('MOSI');
this.appendValueInput('miso')
.setCheck(Number)
.appendField('MISO');
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip(Blockly.Msg.MIXLY_ESP32_SPI_INIT_TOOLTIP);
}
};
export const communicate_spi_set = {
init: function () {
this.setColour(COMMUNICATE_HUE);
this.appendValueInput('VAR')
.setCheck('var')
.appendField(Blockly.Msg.MIXLY_SETTING + " SPI")
this.appendValueInput('data')
.setCheck(Number)
.appendField(Blockly.Msg.MIXLY_SERIAL_BEGIN);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.MIXLY_ESP32_SPI_SET);
}
};
export const communicate_spi_buffer = {
init: function () {
this.setColour(COMMUNICATE_HUE);
this.appendValueInput('VAR')
.setCheck('var')
.appendField(Blockly.Msg.MIXLY_ESP32_SET + 'SPI');
this.appendValueInput('data')
.setCheck(Number)
.appendField(Blockly.Msg.MIXLY_ESP32_SPI_BUFFER);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.MIXLY_ESP32_SPI_BUFFER_SET);
}
};
export const communicate_spi_read = {
init: function () {
this.setColour(COMMUNICATE_HUE);
this.appendValueInput('VAR')
.setCheck('var')
.appendField('SPI');
this.appendValueInput('data')
.setCheck(Number)
.appendField(Blockly.Msg.MIXLY_SERIAL_READ);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER2 + Blockly.Msg.LANG_MATH_BYTE)
this.setOutput(true);
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.MIXLY_ESP32_SPI_READ);
}
}
export const communicate_spi_read_output = {
init: function () {
this.setColour(COMMUNICATE_HUE);
this.appendValueInput('VAR')
.setCheck('var')
.appendField('SPI');
this.appendValueInput('data')
.setCheck(Number)
.appendField(Blockly.Msg.MIXLY_SERIAL_READ);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER2 + Blockly.Msg.LANG_MATH_BYTE + ',' + Blockly.Msg.MIXLY_ESP32_SPI_OUTPUT);
this.appendValueInput('val')
.setCheck(Number);
this.setOutput(true);
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.MIXLY_ESP32_SPI_READ_OUTPUT);
}
}
export const communicate_spi_readinto = {
init: function () {
this.setColour(COMMUNICATE_HUE);
this.appendValueInput('VAR')
.setCheck('var')
.appendField('SPI');
this.appendValueInput('data')
.setCheck('var')
.appendField(Blockly.Msg.MIXLY_SERIAL_READ + Blockly.Msg.MIXLY_ESP32_SPI_BUFFER);
this.setOutput(true);
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.MIXLY_ESP32_SPI_READINTO);
}
}
export const communicate_spi_readinto_output = {
init: function () {
this.setColour(COMMUNICATE_HUE);
this.appendValueInput('VAR')
.setCheck('var')
.appendField('SPI');
this.appendValueInput('data')
.setCheck('var')
.appendField(Blockly.Msg.MIXLY_SERIAL_READ + Blockly.Msg.MIXLY_ESP32_SPI_BUFFER);
this.appendValueInput('val')
.setCheck(Number)
.appendField(',' + Blockly.Msg.MIXLY_ESP32_SPI_OUTPUT);
this.setOutput(true);
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.MIXLY_ESP32_SPI_READINTO_OUTPUT);
}
}
export const communicate_spi_write = {
init: function () {
this.setColour(COMMUNICATE_HUE);
this.appendValueInput('VAR')
.setCheck('var')
.appendField('SPI');
this.appendValueInput('data')
.setCheck(String)
.appendField(Blockly.Msg.MIXLY_ESP32_WRITE);
this.setOutput(true, Number);
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.MIXLY_ESP32_SPI_WRITE);
}
};
export const communicate_spi_write_readinto = {
init: function () {
this.setColour(COMMUNICATE_HUE);
this.appendValueInput('VAR')
.setCheck('var')
.appendField('SPI');
this.appendValueInput('data')
.setCheck(String)
.appendField(Blockly.Msg.MIXLY_ESP32_WRITE)
// .appendField(new Blockly.FieldDropdown([
// [Blockly.Msg.LANG_MATH_BYTE, "byte"],
// [Blockly.Msg.MIXLY_ESP32_SPI_BUFFER, "buffer"]
// ]), "op");
this.appendValueInput('val')
.setCheck('var')
.appendField(',' + Blockly.Msg.MIXLY_ESP32_BUFFER_READ);
this.setOutput(true);
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.MIXLY_ESP32_SPI_WRITE_READINTO);
}
};
export const communicate_i2c_master_read = {
init: function () {
this.setColour(COMMUNICATE_HUE);
this.appendValueInput('VAR')
.setCheck("var")
.appendField("I2C");
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_ESP32_READ);
this.setOutput(true, Number);
}
};
export const communicate_i2c_available = {
init: function () {
this.setColour(COMMUNICATE_HUE);
this.appendValueInput('VAR')
.setCheck("var")
.appendField(Blockly.Msg.MIXLY_ESP32_READ + "I2C");
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_ESP32_SUCCESS);
this.setOutput(true, Boolean);
this.setTooltip(Blockly.Msg.MIXLY_ESP32_I2C_AVAILABLE);
}
};
export const i2c_slave_onreceive = {
init: function () {
this.setColour(COMMUNICATE_HUE);
this.appendValueInput("PIN", Number)
.appendField(Blockly.Msg.MIXLY_I2C_SLAVE_ONRECEIVE)
.setCheck(Number);
this.appendStatementInput('DO')
.appendField(Blockly.Msg.MIXLY_DO);
this.setPreviousStatement(true);
this.setNextStatement(true);
}
};
export const communicate_ow_init = {
init: function () {
this.setColour(COMMUNICATE_HUE);
this.appendValueInput('VAR')
.setCheck('var')
.appendField('OneWire');
this.appendValueInput('BUS')
.setCheck(Number)
.appendField(Blockly.Msg.MIXLY_SETUP + ' ' + Blockly.Msg.MIXLY_PIN);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.MIXLY_ESP32_OW_INIT);
}
};
export const communicate_ow_scan = {
init: function () {
this.setColour(COMMUNICATE_HUE);
this.appendValueInput('VAR')
.setCheck('var')
.appendField('OneWire');
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_ESP32_ONEWIRE_SCAN);
this.setOutput(true, 'List');
this.setTooltip(Blockly.Msg.MIXLY_ESP32_OW_SCAN);
}
};
export const communicate_ow_read = {
init: function () {
this.setColour(COMMUNICATE_HUE);
this.appendValueInput('VAR')
.setCheck('var')
.appendField('OneWire');
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_ESP32_ONEWIRE_READ);
this.setOutput(true);
this.setTooltip(Blockly.Msg.MIXLY_ESP32_OW_READ);
}
};
export const communicate_ow_write = {
init: function () {
this.setColour(COMMUNICATE_HUE);
this.appendValueInput('VAR')
.setCheck('var')
.appendField('OneWire');
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_ESP32_WRITE)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.LANG_MATH_STRING, "write"],
[Blockly.Msg.LANG_MATH_BYTE, "writebyte"]
]), "op");
this.appendValueInput('byte')
.setCheck([Number, String]);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.MIXLY_ESP32_OW_WRITE);
}
};
export const communicate_ow_select = {
init: function () {
this.setColour(COMMUNICATE_HUE);
this.appendValueInput('VAR')
.setCheck('var')
.appendField(Blockly.Msg.MIXLY_ESP32_ONEWIRE_SELECT)
this.appendValueInput('byte')
.setCheck(String)
.appendField("ROM");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.MIXLY_ESP32_OW_SELECT);
}
};
export const communicate_ow_reset = {
init: function () {
this.setColour(COMMUNICATE_HUE);
this.appendValueInput('VAR')
.setCheck('var')
.appendField(Blockly.Msg.MIXLY_ESP32_ONEWIRE_RESET);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setOutput(false);
this.setTooltip(Blockly.Msg.MIXLY_ESP32_OW_RESET);
}
};
export const i2c_init = communicate_i2c_init;
export const i2c_read = communicate_i2c_read;
export const i2c_write = communicate_i2c_write;
export const i2c_scan = communicate_i2c_scan;
export const spi_init = communicate_spi_init;
export const spi_set = communicate_spi_set;
export const spi_buffer = communicate_spi_buffer;
export const spi_read = communicate_spi_read;
export const spi_read_output = communicate_spi_read_output;
export const spi_readinto = communicate_spi_readinto;
export const spi_readinto_output = communicate_spi_readinto_output;
export const spi_write = communicate_spi_write;
export const spi_write_readinto = communicate_spi_write_readinto;
export const i2c_master_reader2 = communicate_i2c_master_read;
export const i2c_available = communicate_i2c_available;