add multi interval feature
This commit is contained in:
parent
b74aef8167
commit
5901caa278
File diff suppressed because it is too large
Load Diff
@ -1,80 +1,103 @@
|
|||||||
import * as Blockly from 'blockly/core';
|
import * as Blockly from "blockly/core";
|
||||||
import { getColour } from '../helpers/colour';
|
import { getColour } from "../helpers/colour";
|
||||||
|
|
||||||
|
var checkFileName = function (filename) {
|
||||||
|
var length = filename.length;
|
||||||
|
if (length > 8) {
|
||||||
|
alert("dateiname sollte kleiner als 8 Zeichen sein");
|
||||||
|
return filename.slice(0, 8);
|
||||||
|
}
|
||||||
|
return filename;
|
||||||
|
};
|
||||||
|
|
||||||
Blockly.Blocks['sensebox_sd_open_file'] = {
|
Blockly.Blocks["sensebox_sd_open_file"] = {
|
||||||
init: function () {
|
init: function () {
|
||||||
this.appendDummyInput()
|
this.appendDummyInput()
|
||||||
.appendField(Blockly.Msg.senseBox_sd_open_file)
|
.appendField(Blockly.Msg.senseBox_sd_open_file)
|
||||||
.setAlign(Blockly.ALIGN_LEFT)
|
.setAlign(Blockly.ALIGN_LEFT)
|
||||||
.appendField(
|
.appendField(
|
||||||
new Blockly.FieldTextInput('Data.txt'),
|
new Blockly.FieldTextInput("Data", checkFileName),
|
||||||
'Filename');
|
"Filename"
|
||||||
this.appendStatementInput('SD')
|
)
|
||||||
.setCheck(null);
|
.appendField(".")
|
||||||
this.setPreviousStatement(true, null);
|
.appendField(
|
||||||
this.setNextStatement(true, null);
|
new Blockly.FieldDropdown([
|
||||||
this.setColour(getColour().sensebox);
|
["txt", "txt"],
|
||||||
this.setTooltip(Blockly.Msg.senseBox_sd_open_file_tooltip);
|
["csv", "csv"],
|
||||||
this.setHelpUrl('https://docs.sensebox.de/hardware/bee-sd/');
|
]),
|
||||||
|
"extension"
|
||||||
|
);
|
||||||
|
this.appendStatementInput("SD").setCheck(null);
|
||||||
|
this.setPreviousStatement(true, null);
|
||||||
|
this.setNextStatement(true, null);
|
||||||
|
this.setColour(getColour().sensebox);
|
||||||
|
this.setTooltip(Blockly.Msg.senseBox_sd_open_file_tooltip);
|
||||||
|
this.setHelpUrl("https://docs.sensebox.de/hardware/bee-sd/");
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
Blockly.Blocks["sensebox_sd_create_file"] = {
|
||||||
|
init: function () {
|
||||||
|
this.appendDummyInput()
|
||||||
|
.appendField(Blockly.Msg.senseBox_sd_create_file)
|
||||||
|
.setAlign(Blockly.ALIGN_LEFT)
|
||||||
|
.appendField(
|
||||||
|
new Blockly.FieldTextInput("Data", checkFileName),
|
||||||
|
"Filename"
|
||||||
|
)
|
||||||
|
.appendField(".")
|
||||||
|
.appendField(
|
||||||
|
new Blockly.FieldDropdown([
|
||||||
|
["txt", "txt"],
|
||||||
|
["csv", "csv"],
|
||||||
|
]),
|
||||||
|
"extension"
|
||||||
|
);
|
||||||
|
this.setPreviousStatement(true, null);
|
||||||
|
this.setNextStatement(true, null);
|
||||||
|
this.setColour(getColour().sensebox);
|
||||||
|
this.setTooltip(Blockly.Msg.senseBox_sd_create_file_tooltip);
|
||||||
|
this.setHelpUrl("https://docs.sensebox.de/hardware/bee-sd/");
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
Blockly.Blocks["sensebox_sd_write_file"] = {
|
||||||
|
init: function () {
|
||||||
|
this.appendDummyInput()
|
||||||
|
.appendField(Blockly.Msg.senseBox_sd_write_file)
|
||||||
|
.setAlign(Blockly.ALIGN_LEFT);
|
||||||
|
this.appendValueInput("DATA").setCheck(null);
|
||||||
|
this.appendDummyInput("CheckboxText")
|
||||||
|
.appendField(Blockly.Msg.senseBox_output_linebreak)
|
||||||
|
.appendField(new Blockly.FieldCheckbox("TRUE"), "linebreak");
|
||||||
|
this.setPreviousStatement(true, null);
|
||||||
|
this.setNextStatement(true, null);
|
||||||
|
this.setColour(getColour().sensebox);
|
||||||
|
this.setTooltip(Blockly.Msg.senseBox_sd_write_file_tooltip);
|
||||||
|
this.setHelpUrl("https://docs.sensebox.de/hardware/bee-sd/");
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* Called whenever anything on the workspace changes.
|
||||||
|
* Add warning if block is not nested inside a the correct loop.
|
||||||
|
* @param {!Blockly.Events.Abstract} e Change event.
|
||||||
|
* @this Blockly.Block
|
||||||
|
*/
|
||||||
|
onchange: function (e) {
|
||||||
|
var legal = false;
|
||||||
|
// Is the block nested in a loop?
|
||||||
|
var block = this;
|
||||||
|
do {
|
||||||
|
if (this.LOOP_TYPES.indexOf(block.type) !== -1) {
|
||||||
|
legal = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
block = block.getSurroundParent();
|
||||||
|
} while (block);
|
||||||
|
if (legal) {
|
||||||
|
this.setWarningText(null);
|
||||||
|
} else {
|
||||||
|
this.setWarningText(Blockly.Msg.CONTROLS_FLOW_STATEMENTS_WARNING);
|
||||||
}
|
}
|
||||||
};
|
},
|
||||||
|
LOOP_TYPES: ["sensebox_sd_open_file"],
|
||||||
Blockly.Blocks['sensebox_sd_create_file'] = {
|
|
||||||
init: function () {
|
|
||||||
this.appendDummyInput()
|
|
||||||
.appendField(Blockly.Msg.senseBox_sd_create_file)
|
|
||||||
.setAlign(Blockly.ALIGN_LEFT)
|
|
||||||
.appendField(Blockly.Msg.senseBox_output_filename)
|
|
||||||
.appendField(
|
|
||||||
new Blockly.FieldTextInput('Data.txt'),
|
|
||||||
'Filename');
|
|
||||||
this.setPreviousStatement(true, null);
|
|
||||||
this.setNextStatement(true, null);
|
|
||||||
this.setColour(getColour().sensebox);
|
|
||||||
this.setTooltip(Blockly.Msg.senseBox_sd_create_file_tooltip);
|
|
||||||
this.setHelpUrl('https://docs.sensebox.de/hardware/bee-sd/');
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
Blockly.Blocks['sensebox_sd_write_file'] = {
|
|
||||||
init: function () {
|
|
||||||
this.appendDummyInput()
|
|
||||||
.appendField(Blockly.Msg.senseBox_sd_write_file)
|
|
||||||
.setAlign(Blockly.ALIGN_LEFT);
|
|
||||||
this.appendValueInput('DATA')
|
|
||||||
.setCheck(null);
|
|
||||||
this.appendDummyInput('CheckboxText')
|
|
||||||
.appendField(Blockly.Msg.senseBox_output_linebreak)
|
|
||||||
.appendField(new Blockly.FieldCheckbox('TRUE'), 'linebreak');
|
|
||||||
this.setPreviousStatement(true, null);
|
|
||||||
this.setNextStatement(true, null);
|
|
||||||
this.setColour(getColour().sensebox);
|
|
||||||
this.setTooltip(Blockly.Msg.senseBox_sd_write_file_tooltip);
|
|
||||||
this.setHelpUrl('https://docs.sensebox.de/hardware/bee-sd/');
|
|
||||||
},
|
|
||||||
/**
|
|
||||||
* Called whenever anything on the workspace changes.
|
|
||||||
* Add warning if block is not nested inside a the correct loop.
|
|
||||||
* @param {!Blockly.Events.Abstract} e Change event.
|
|
||||||
* @this Blockly.Block
|
|
||||||
*/
|
|
||||||
onchange: function (e) {
|
|
||||||
var legal = false;
|
|
||||||
// Is the block nested in a loop?
|
|
||||||
var block = this;
|
|
||||||
do {
|
|
||||||
if (this.LOOP_TYPES.indexOf(block.type) !== -1) {
|
|
||||||
legal = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
block = block.getSurroundParent();
|
|
||||||
} while (block);
|
|
||||||
if (legal) {
|
|
||||||
this.setWarningText(null);
|
|
||||||
} else {
|
|
||||||
this.setWarningText(Blockly.Msg.CONTROLS_FLOW_STATEMENTS_WARNING);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
LOOP_TYPES: ['sensebox_sd_open_file'],
|
|
||||||
};
|
};
|
||||||
|
@ -8,123 +8,118 @@
|
|||||||
* The arduino built in functions syntax can be found in
|
* The arduino built in functions syntax can be found in
|
||||||
* http://arduino.cc/en/Reference/HomePage
|
* http://arduino.cc/en/Reference/HomePage
|
||||||
*/
|
*/
|
||||||
import Blockly from 'blockly';
|
import Blockly from "blockly";
|
||||||
import { getColour } from '../helpers/colour'
|
import { getColour } from "../helpers/colour";
|
||||||
import * as Types from '../helpers/types'
|
import * as Types from "../helpers/types";
|
||||||
|
|
||||||
|
Blockly.Blocks["time_delay"] = {
|
||||||
Blockly.Blocks['time_delay'] = {
|
/**
|
||||||
/**
|
* Delay block definition
|
||||||
* Delay block definition
|
* @this Blockly.Block
|
||||||
* @this Blockly.Block
|
*/
|
||||||
*/
|
init: function () {
|
||||||
init: function () {
|
this.setHelpUrl("http://arduino.cc/en/Reference/Delay");
|
||||||
this.setHelpUrl('http://arduino.cc/en/Reference/Delay');
|
this.setColour(getColour().time);
|
||||||
this.setColour(getColour().time);
|
this.appendValueInput("DELAY_TIME_MILI")
|
||||||
this.appendValueInput('DELAY_TIME_MILI')
|
.setCheck(Types.NUMBER.checkList)
|
||||||
.setCheck(Types.NUMBER.checkList)
|
.appendField(Blockly.Msg.ARD_TIME_DELAY);
|
||||||
.appendField(Blockly.Msg.ARD_TIME_DELAY);
|
this.appendDummyInput().appendField(Blockly.Msg.ARD_TIME_MS);
|
||||||
this.appendDummyInput()
|
this.setInputsInline(true);
|
||||||
.appendField(Blockly.Msg.ARD_TIME_MS);
|
this.setPreviousStatement(true, null);
|
||||||
this.setInputsInline(true);
|
this.setNextStatement(true, null);
|
||||||
this.setPreviousStatement(true, null);
|
this.setTooltip(Blockly.Msg.ARD_TIME_DELAY_TIP);
|
||||||
this.setNextStatement(true, null);
|
},
|
||||||
this.setTooltip(Blockly.Msg.ARD_TIME_DELAY_TIP);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Blockly.Blocks['time_delaymicros'] = {
|
Blockly.Blocks["time_delaymicros"] = {
|
||||||
/**
|
/**
|
||||||
* delayMicroseconds block definition
|
* delayMicroseconds block definition
|
||||||
* @this Blockly.Block
|
* @this Blockly.Block
|
||||||
*/
|
*/
|
||||||
init: function () {
|
init: function () {
|
||||||
this.setHelpUrl('http://arduino.cc/en/Reference/DelayMicroseconds');
|
this.setHelpUrl("http://arduino.cc/en/Reference/DelayMicroseconds");
|
||||||
this.setColour(getColour().time);
|
this.setColour(getColour().time);
|
||||||
this.appendValueInput('DELAY_TIME_MICRO')
|
this.appendValueInput("DELAY_TIME_MICRO")
|
||||||
.setCheck(Types.NUMBER.checkList)
|
.setCheck(Types.NUMBER.checkList)
|
||||||
.appendField(Blockly.Msg.ARD_TIME_DELAY);
|
.appendField(Blockly.Msg.ARD_TIME_DELAY);
|
||||||
this.appendDummyInput()
|
this.appendDummyInput().appendField(Blockly.Msg.ARD_TIME_DELAY_MICROS);
|
||||||
.appendField(Blockly.Msg.ARD_TIME_DELAY_MICROS);
|
this.setInputsInline(true);
|
||||||
this.setInputsInline(true);
|
this.setPreviousStatement(true, null);
|
||||||
this.setPreviousStatement(true, null);
|
this.setNextStatement(true, null);
|
||||||
this.setNextStatement(true, null);
|
this.setTooltip(Blockly.Msg.ARD_TIME_DELAY_MICRO_TIP);
|
||||||
this.setTooltip(Blockly.Msg.ARD_TIME_DELAY_MICRO_TIP);
|
},
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Blockly.Blocks['time_millis'] = {
|
Blockly.Blocks["time_millis"] = {
|
||||||
/**
|
/**
|
||||||
* Elapsed time in milliseconds block definition
|
* Elapsed time in milliseconds block definition
|
||||||
* @this Blockly.Block
|
* @this Blockly.Block
|
||||||
*/
|
*/
|
||||||
init: function () {
|
init: function () {
|
||||||
this.setHelpUrl('http://arduino.cc/en/Reference/Millis');
|
this.setHelpUrl("http://arduino.cc/en/Reference/Millis");
|
||||||
this.setColour(getColour().time);
|
this.setColour(getColour().time);
|
||||||
this.appendDummyInput()
|
this.appendDummyInput().appendField(Blockly.Msg.ARD_TIME_MILLIS);
|
||||||
.appendField(Blockly.Msg.ARD_TIME_MILLIS);
|
this.setOutput(true, Types.LARGE_NUMBER.typeId);
|
||||||
this.setOutput(true, Types.LARGE_NUMBER.typeId);
|
this.setTooltip(Blockly.Msg.ARD_TIME_MILLIS_TIP);
|
||||||
this.setTooltip(Blockly.Msg.ARD_TIME_MILLIS_TIP);
|
},
|
||||||
},
|
/** @return {string} The type of return value for the block, an integer. */
|
||||||
/** @return {string} The type of return value for the block, an integer. */
|
getBlockType: function () {
|
||||||
getBlockType: function () {
|
return Blockly.Types.LARGE_NUMBER;
|
||||||
return Blockly.Types.LARGE_NUMBER;
|
},
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Blockly.Blocks['time_micros'] = {
|
Blockly.Blocks["time_micros"] = {
|
||||||
/**
|
/**
|
||||||
* Elapsed time in microseconds block definition
|
* Elapsed time in microseconds block definition
|
||||||
* @this Blockly.Block
|
* @this Blockly.Block
|
||||||
*/
|
*/
|
||||||
init: function () {
|
init: function () {
|
||||||
this.setHelpUrl('http://arduino.cc/en/Reference/Micros');
|
this.setHelpUrl("http://arduino.cc/en/Reference/Micros");
|
||||||
this.setColour(getColour().time);
|
this.setColour(getColour().time);
|
||||||
this.appendDummyInput()
|
this.appendDummyInput().appendField(Blockly.Msg.ARD_TIME_MICROS);
|
||||||
.appendField(Blockly.Msg.ARD_TIME_MICROS);
|
this.setOutput(true, Types.LARGE_NUMBER.typeId);
|
||||||
this.setOutput(true, Types.LARGE_NUMBER.typeId);
|
this.setTooltip(Blockly.Msg.ARD_TIME_MICROS_TIP);
|
||||||
this.setTooltip(Blockly.Msg.ARD_TIME_MICROS_TIP);
|
},
|
||||||
},
|
/**
|
||||||
/**
|
* Should be a long (32bit), but for for now an int.
|
||||||
* Should be a long (32bit), but for for now an int.
|
* @return {string} The type of return value for the block, an integer.
|
||||||
* @return {string} The type of return value for the block, an integer.
|
*/
|
||||||
*/
|
getBlockType: function () {
|
||||||
getBlockType: function () {
|
return Types.LARGE_NUMBER;
|
||||||
return Types.LARGE_NUMBER;
|
},
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Blockly.Blocks['infinite_loop'] = {
|
Blockly.Blocks["infinite_loop"] = {
|
||||||
/**
|
/**
|
||||||
* Waits forever, end of program.
|
* Waits forever, end of program.
|
||||||
* @this Blockly.Block
|
* @this Blockly.Block
|
||||||
*/
|
*/
|
||||||
init: function () {
|
init: function () {
|
||||||
this.setHelpUrl('');
|
this.setHelpUrl("");
|
||||||
this.setColour(getColour().time);
|
this.setColour(getColour().time);
|
||||||
this.appendDummyInput()
|
this.appendDummyInput().appendField(Blockly.Msg.ARD_TIME_INF);
|
||||||
.appendField(Blockly.Msg.ARD_TIME_INF);
|
this.setInputsInline(true);
|
||||||
this.setInputsInline(true);
|
this.setPreviousStatement(true);
|
||||||
this.setPreviousStatement(true);
|
this.setTooltip(Blockly.Msg.ARD_TIME_INF_TIP);
|
||||||
this.setTooltip(Blockly.Msg.ARD_TIME_INF_TIP);
|
},
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Blockly.Blocks['sensebox_interval_timer'] = {
|
Blockly.Blocks["sensebox_interval_timer"] = {
|
||||||
init: function () {
|
init: function () {
|
||||||
this.setTooltip(Blockly.Msg.senseBox_interval_timer_tip);
|
this.setTooltip(Blockly.Msg.senseBox_interval_timer_tip);
|
||||||
this.setInputsInline(true);
|
this.setInputsInline(true);
|
||||||
this.setHelpUrl('');
|
this.setHelpUrl("");
|
||||||
this.setColour(getColour().time);
|
this.setColour(getColour().time);
|
||||||
this.appendDummyInput()
|
this.appendDummyInput()
|
||||||
.appendField(Blockly.Msg.senseBox_interval_timer);
|
.appendField(Blockly.Msg.senseBox_interval_timer)
|
||||||
this.appendDummyInput()
|
.appendField(new Blockly.FieldTextInput("name"), "name");
|
||||||
.setAlign(Blockly.ALIGN_LEFT)
|
this.appendDummyInput()
|
||||||
.appendField(new Blockly.FieldTextInput("10000"), "interval")
|
.appendField(Blockly.Msg.senseBox_interval_time)
|
||||||
.appendField(Blockly.Msg.senseBox_interval);
|
.setAlign(Blockly.ALIGN_LEFT)
|
||||||
this.appendStatementInput('DO')
|
.appendField(new Blockly.FieldTextInput("10000"), "interval")
|
||||||
.setCheck(null);
|
.appendField(Blockly.Msg.senseBox_interval);
|
||||||
this.setPreviousStatement(true, null);
|
this.appendStatementInput("DO").setCheck(null);
|
||||||
this.setNextStatement(true, null);
|
this.setPreviousStatement(true, null);
|
||||||
}
|
this.setNextStatement(true, null);
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
@ -1,43 +1,43 @@
|
|||||||
import Blockly from 'blockly/core';
|
import Blockly from "blockly/core";
|
||||||
import { getColour } from '../helpers/colour';
|
import { getColour } from "../helpers/colour";
|
||||||
import { getCompatibleTypes } from '../helpers/types'
|
import { getCompatibleTypes } from "../helpers/types";
|
||||||
|
|
||||||
|
Blockly.Blocks["variables_set_dynamic"] = {
|
||||||
|
init: function () {
|
||||||
|
// const type = myVar.type;
|
||||||
|
this.setColour(getColour().variables);
|
||||||
|
this.setPreviousStatement(true, null);
|
||||||
|
this.setNextStatement(true, null);
|
||||||
|
this.appendValueInput("VALUE")
|
||||||
|
.appendField("set", "set")
|
||||||
|
.appendField("", "type")
|
||||||
|
.appendField(new Blockly.FieldVariable("VAR"), "VAR")
|
||||||
|
.appendField("to");
|
||||||
|
},
|
||||||
|
onchange: function (e) {
|
||||||
|
let variableID = this.getFieldValue("VAR");
|
||||||
|
let variable = Blockly.getMainWorkspace()
|
||||||
|
.getVariableMap()
|
||||||
|
.getVariableById(variableID);
|
||||||
|
this.getField("type").setValue(variable.type);
|
||||||
|
this.getInput("VALUE").setCheck(getCompatibleTypes(variable.type));
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
Blockly.Blocks['variables_set_dynamic'] = {
|
Blockly.Blocks["variables_get_dynamic"] = {
|
||||||
init: function () {
|
init: function () {
|
||||||
|
this.setColour(getColour().variables);
|
||||||
// const type = myVar.type;
|
this.appendDummyInput()
|
||||||
this.setColour(getColour().variables);
|
.appendField("", "type")
|
||||||
this.setPreviousStatement(true, null);
|
.appendField(new Blockly.FieldVariable("VAR"), "VAR");
|
||||||
this.setNextStatement(true, null);
|
this.setOutput(true);
|
||||||
this.appendValueInput('VALUE')
|
},
|
||||||
.appendField('set', 'set')
|
onchange: function (e) {
|
||||||
.appendField('', 'type')
|
let variableID = this.getFieldValue("VAR");
|
||||||
.appendField(new Blockly.FieldVariable('VAR'), 'VAR')
|
let variable = Blockly.getMainWorkspace()
|
||||||
.appendField('to');
|
.getVariableMap()
|
||||||
},
|
.getVariableById(variableID);
|
||||||
onchange: function (e) {
|
this.getField("type").setValue(variable.type);
|
||||||
let variableID = this.getFieldValue('VAR');
|
this.setOutput(true, variable.type);
|
||||||
let variable = Blockly.getMainWorkspace().getVariableMap().getVariableById(variableID)
|
},
|
||||||
this.getField('type').setValue(variable.type);
|
};
|
||||||
this.getInput('VALUE').setCheck(getCompatibleTypes(variable.type));
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Blockly.Blocks['variables_get_dynamic'] = {
|
|
||||||
init: function () {
|
|
||||||
this.setColour(getColour().variables);
|
|
||||||
this.appendDummyInput()
|
|
||||||
.appendField('', 'type')
|
|
||||||
.appendField(new Blockly.FieldVariable('VAR'), 'VAR');
|
|
||||||
this.setOutput(true);
|
|
||||||
},
|
|
||||||
onchange: function (e) {
|
|
||||||
let variableID = this.getFieldValue('VAR');
|
|
||||||
let variable = Blockly.getMainWorkspace().getVariableMap().getVariableById(variableID)
|
|
||||||
this.getField('type').setValue(variable.type);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
import Blockly from 'blockly';
|
import Blockly from "blockly";
|
||||||
|
|
||||||
|
|
||||||
/* SD-Card Blocks using the Standard SD Library*/
|
/* SD-Card Blocks using the Standard SD Library*/
|
||||||
/**
|
/**
|
||||||
@ -10,45 +9,49 @@ import Blockly from 'blockly';
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
Blockly.Arduino.sensebox_sd_create_file = function (block) {
|
Blockly.Arduino.sensebox_sd_create_file = function (block) {
|
||||||
var filename = this.getFieldValue('Filename');
|
var filename = this.getFieldValue("Filename");
|
||||||
var res = filename.slice(0, 4);
|
var extension = this.getFieldValue("extension");
|
||||||
Blockly.Arduino.libraries_['library_spi'] = '#include <SPI.h>';
|
var newFileName = filename.concat(".", extension);
|
||||||
Blockly.Arduino.libraries_['library_sd'] = '#include <SD.h>';
|
Blockly.Arduino.libraries_["library_spi"] = "#include <SPI.h>";
|
||||||
Blockly.Arduino.definitions_['define_' + res] = 'File dataFile' + res + ';';
|
Blockly.Arduino.libraries_["library_sd"] = "#include <SD.h>";
|
||||||
Blockly.Arduino.setupCode_['sensebox_sd'] = 'SD.begin(28);';
|
Blockly.Arduino.definitions_["define_" + filename] = `File ${filename};`;
|
||||||
Blockly.Arduino.setupCode_['sensebox_sd' + filename] = 'dataFile' + res + ' = SD.open("' + filename + '", FILE_WRITE);\ndataFile' + res + '.close();\n';
|
Blockly.Arduino.setupCode_["sensebox_sd"] = "SD.begin(28);\n";
|
||||||
var code = '';
|
Blockly.Arduino.setupCode_[
|
||||||
return code;
|
"sensebox_sd" + filename
|
||||||
|
] = `${filename} = SD.open("${newFileName}", FILE_WRITE);\n${filename}.close();\n`;
|
||||||
|
var code = "";
|
||||||
|
return code;
|
||||||
};
|
};
|
||||||
|
|
||||||
Blockly.Arduino.sensebox_sd_open_file = function (block) {
|
Blockly.Arduino.sensebox_sd_open_file = function (block) {
|
||||||
var filename = this.getFieldValue('Filename');
|
var filename = this.getFieldValue("Filename");
|
||||||
var res = filename.slice(0, 4);
|
var extension = this.getFieldValue("extension");
|
||||||
var branch = Blockly.Arduino.statementToCode(block, 'SD');
|
var newFileName = filename.concat(".", extension);
|
||||||
var code = 'dataFile' + res + ' = SD.open("' + filename + '", FILE_WRITE);\n'
|
var branch = Blockly.Arduino.statementToCode(block, "SD");
|
||||||
code += branch;
|
var code = `${filename} = SD.open("${newFileName}", FILE_WRITE);\n`;
|
||||||
code += 'dataFile' + res + '.close();\n'
|
code += branch;
|
||||||
return code;
|
code += `${filename}.close();\n`;
|
||||||
|
return code;
|
||||||
};
|
};
|
||||||
|
|
||||||
Blockly.Arduino.sensebox_sd_write_file = function (block) {
|
Blockly.Arduino.sensebox_sd_write_file = function (block) {
|
||||||
if (this.parentBlock_ != null) {
|
if (this.parentBlock_ != null) {
|
||||||
var filename = this.getSurroundParent().getFieldValue('Filename');
|
var filename = this.getSurroundParent().getFieldValue("Filename");
|
||||||
}
|
}
|
||||||
var res = filename.slice(0, 4);
|
var branch =
|
||||||
var text = Blockly.Arduino.valueToCode(this, 'DATA', Blockly.Arduino.ORDER_ATOMIC) || '"Keine Eingabe"';
|
Blockly.Arduino.valueToCode(this, "DATA", Blockly.Arduino.ORDER_ATOMIC) ||
|
||||||
var linebreak = this.getFieldValue('linebreak');
|
'"Keine Eingabe"';
|
||||||
if (linebreak === "TRUE") {
|
var linebreak = this.getFieldValue("linebreak");
|
||||||
linebreak = "ln";
|
if (linebreak === "TRUE") {
|
||||||
} else {
|
linebreak = "ln";
|
||||||
linebreak = "";
|
} else {
|
||||||
}
|
linebreak = "";
|
||||||
var code = '';
|
}
|
||||||
if (text === "gps.getLongitude()" || text === "gps.getLatitude()") {
|
var code = "";
|
||||||
code = 'dataFile' + res + '.print' + linebreak + '(' + text + ',5);\n'
|
if (branch === "gps.getLongitude()" || branch === "gps.getLatitude()") {
|
||||||
}
|
code = `${filename}.print${linebreak}(${branch},5);\n`;
|
||||||
else {
|
} else {
|
||||||
code = 'dataFile' + res + '.print' + linebreak + '(' + text + ');\n'
|
code = `${filename}.print${linebreak}(${branch});\n`;
|
||||||
}
|
}
|
||||||
return code;
|
return code;
|
||||||
};
|
};
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import Blockly from 'blockly';
|
import Blockly from "blockly";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @license Licensed under the Apache License, Version 2.0 (the "License"):
|
* @license Licensed under the Apache License, Version 2.0 (the "License"):
|
||||||
@ -16,11 +16,15 @@ import Blockly from 'blockly';
|
|||||||
* @param {!Blockly.Block} block Block to generate the code from.
|
* @param {!Blockly.Block} block Block to generate the code from.
|
||||||
* @return {string} Completed code.
|
* @return {string} Completed code.
|
||||||
*/
|
*/
|
||||||
Blockly.Arduino['time_delay'] = function (block) {
|
Blockly.Arduino["time_delay"] = function (block) {
|
||||||
var delayTime = Blockly.Arduino.valueToCode(
|
var delayTime =
|
||||||
block, 'DELAY_TIME_MILI', Blockly.Arduino.ORDER_ATOMIC) || '0';
|
Blockly.Arduino.valueToCode(
|
||||||
var code = 'delay(' + delayTime + ');\n';
|
block,
|
||||||
return code;
|
"DELAY_TIME_MILI",
|
||||||
|
Blockly.Arduino.ORDER_ATOMIC
|
||||||
|
) || "0";
|
||||||
|
var code = "delay(" + delayTime + ");\n";
|
||||||
|
return code;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -29,11 +33,15 @@ Blockly.Arduino['time_delay'] = function (block) {
|
|||||||
* @param {!Blockly.Block} block Block to generate the code from.
|
* @param {!Blockly.Block} block Block to generate the code from.
|
||||||
* @return {string} Completed code.
|
* @return {string} Completed code.
|
||||||
*/
|
*/
|
||||||
Blockly.Arduino['time_delaymicros'] = function (block) {
|
Blockly.Arduino["time_delaymicros"] = function (block) {
|
||||||
var delayTimeMs = Blockly.Arduino.valueToCode(
|
var delayTimeMs =
|
||||||
block, 'DELAY_TIME_MICRO', Blockly.Arduino.ORDER_ATOMIC) || '0';
|
Blockly.Arduino.valueToCode(
|
||||||
var code = 'delayMicroseconds(' + delayTimeMs + ');\n';
|
block,
|
||||||
return code;
|
"DELAY_TIME_MICRO",
|
||||||
|
Blockly.Arduino.ORDER_ATOMIC
|
||||||
|
) || "0";
|
||||||
|
var code = "delayMicroseconds(" + delayTimeMs + ");\n";
|
||||||
|
return code;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -42,9 +50,9 @@ Blockly.Arduino['time_delaymicros'] = function (block) {
|
|||||||
* @param {!Blockly.Block} block Block to generate the code from.
|
* @param {!Blockly.Block} block Block to generate the code from.
|
||||||
* @return {array} Completed code with order of operation.
|
* @return {array} Completed code with order of operation.
|
||||||
*/
|
*/
|
||||||
Blockly.Arduino['time_millis'] = function (block) {
|
Blockly.Arduino["time_millis"] = function (block) {
|
||||||
var code = 'millis()';
|
var code = "millis()";
|
||||||
return [code, Blockly.Arduino.ORDER_ATOMIC];
|
return [code, Blockly.Arduino.ORDER_ATOMIC];
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -53,9 +61,9 @@ Blockly.Arduino['time_millis'] = function (block) {
|
|||||||
* @param {!Blockly.Block} block Block to generate the code from.
|
* @param {!Blockly.Block} block Block to generate the code from.
|
||||||
* @return {array} Completed code with order of operation.
|
* @return {array} Completed code with order of operation.
|
||||||
*/
|
*/
|
||||||
Blockly.Arduino['time_micros'] = function (block) {
|
Blockly.Arduino["time_micros"] = function (block) {
|
||||||
var code = 'micros()';
|
var code = "micros()";
|
||||||
return [code, Blockly.Arduino.ORDER_ATOMIC];
|
return [code, Blockly.Arduino.ORDER_ATOMIC];
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -64,17 +72,22 @@ Blockly.Arduino['time_micros'] = function (block) {
|
|||||||
* @param {!Blockly.Block} block Block to generate the code from.
|
* @param {!Blockly.Block} block Block to generate the code from.
|
||||||
* @return {string} Completed code.
|
* @return {string} Completed code.
|
||||||
*/
|
*/
|
||||||
Blockly.Arduino['infinite_loop'] = function (block) {
|
Blockly.Arduino["infinite_loop"] = function (block) {
|
||||||
return 'while(true);\n';
|
return "while(true);\n";
|
||||||
};
|
};
|
||||||
|
|
||||||
Blockly.Arduino.sensebox_interval_timer = function (block) {
|
Blockly.Arduino.sensebox_interval_timer = function (block) {
|
||||||
var interval = this.getFieldValue('interval');
|
var intervalTime = this.getFieldValue("interval");
|
||||||
Blockly.Arduino.variables_['define_interval_variables'] = 'const long interval = ' + interval + ';\nlong time_start = 0;\nlong time_actual = 0;';
|
var intervalName = this.getFieldValue("name");
|
||||||
var branch = Blockly.Arduino.statementToCode(block, 'DO');
|
Blockly.Arduino.variables_[`define_interval_variables${intervalName}`] = `
|
||||||
var code = 'time_start = millis();\n';
|
const long interval${intervalName} = ${intervalTime};
|
||||||
code += 'if (time_start > time_actual + interval) {\n time_actual = millis();\n'
|
long time_start${intervalName} = 0;
|
||||||
code += branch;
|
long time_actual${intervalName} = 0;`;
|
||||||
code += '}\n'
|
var branch = Blockly.Arduino.statementToCode(block, "DO");
|
||||||
return code;
|
var code = `time_start${intervalName} = millis();\n`;
|
||||||
};
|
code += `
|
||||||
|
if (time_start${intervalName} > time_actual${intervalName} + interval${intervalName}) {\n time_actual${intervalName} = millis();\n`;
|
||||||
|
code += branch;
|
||||||
|
code += "}\n";
|
||||||
|
return code;
|
||||||
|
};
|
||||||
|
@ -1,114 +1,127 @@
|
|||||||
import Blockly from 'blockly';
|
import Blockly from "blockly";
|
||||||
/**
|
/**
|
||||||
* Webserver Blocks by Lucas Steinmann
|
* Webserver Blocks by Lucas Steinmann
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Blockly.Arduino.sensebox_initialize_http_server = function (block) {
|
Blockly.Arduino.sensebox_initialize_http_server = function (block) {
|
||||||
var box_id = this.getFieldValue('Port');
|
var box_id = this.getFieldValue("Port");
|
||||||
Blockly.Arduino.libraries_['library_senseBoxMCU'] = '#include "SenseBoxMCU.h"';
|
Blockly.Arduino.libraries_["library_senseBoxMCU"] =
|
||||||
Blockly.Arduino.codeFunctions_['define_wifi_server'] = 'WiFiServer server(' + box_id + ');';
|
'#include "SenseBoxMCU.h"';
|
||||||
Blockly.Arduino.setupCode_['sensebox_wifi_server_beging'] = 'server.begin();';
|
Blockly.Arduino.codeFunctions_["define_wifi_server"] =
|
||||||
return '';
|
"WiFiServer server(" + box_id + ");";
|
||||||
|
Blockly.Arduino.setupCode_["sensebox_wifi_server_beging"] = "server.begin();";
|
||||||
|
return "";
|
||||||
};
|
};
|
||||||
|
|
||||||
Blockly.Arduino.sensebox_http_on_client_connect = function (block) {
|
Blockly.Arduino.sensebox_http_on_client_connect = function (block) {
|
||||||
var onConnect = Blockly.Arduino.statementToCode(block, 'ON_CONNECT');
|
var onConnect = Blockly.Arduino.statementToCode(block, "ON_CONNECT");
|
||||||
var code = '';
|
var code = "";
|
||||||
code += 'WiFiClient client = server.available();\n';
|
code += "WiFiClient client = server.available();\n";
|
||||||
code += 'if (client && client.available()) {\n';
|
code += "if (client && client.available()) {\n";
|
||||||
code += ' String request_string = listenClient(client);\n';
|
code += " String request_string = listenClient(client);\n";
|
||||||
code += ' Request request;\n';
|
code += " Request request;\n";
|
||||||
code += ' if (parseRequestSafe(request_string, request)) {\n';
|
code += " if (parseRequestSafe(request_string, request)) {\n";
|
||||||
code += onConnect;
|
code += onConnect;
|
||||||
code += ' }\n';
|
code += " }\n";
|
||||||
code += ' delay(1);\n';
|
code += " delay(1);\n";
|
||||||
code += ' client.stop();\n';
|
code += " client.stop();\n";
|
||||||
code += ' delay(1);\n';
|
code += " delay(1);\n";
|
||||||
code += '}\n';
|
code += "}\n";
|
||||||
return code;
|
return code;
|
||||||
};
|
};
|
||||||
|
|
||||||
Blockly.Arduino.sensebox_http_method = function (block) {
|
Blockly.Arduino.sensebox_http_method = function (block) {
|
||||||
var code = "request.method";
|
var code = "request.method";
|
||||||
return [code, Blockly.Arduino.ORDER_ATOMIC];
|
return [code, Blockly.Arduino.ORDER_ATOMIC];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
Blockly.Arduino.sensebox_http_uri = function (block) {
|
Blockly.Arduino.sensebox_http_uri = function (block) {
|
||||||
var code = "request.uri";
|
var code = "request.uri";
|
||||||
return [code, Blockly.Arduino.ORDER_ATOMIC];
|
return [code, Blockly.Arduino.ORDER_ATOMIC];
|
||||||
};
|
};
|
||||||
|
|
||||||
Blockly.Arduino.sensebox_http_protocol_version = function (block) {
|
Blockly.Arduino.sensebox_http_protocol_version = function (block) {
|
||||||
var code = "request.protocol_version";
|
var code = "request.protocol_version";
|
||||||
return [code, Blockly.Arduino.ORDER_ATOMIC];
|
return [code, Blockly.Arduino.ORDER_ATOMIC];
|
||||||
};
|
};
|
||||||
|
|
||||||
Blockly.Arduino.sensebox_http_user_agent = function (block) {
|
Blockly.Arduino.sensebox_http_user_agent = function (block) {
|
||||||
var code = "request.user_agent";
|
var code = "request.user_agent";
|
||||||
return [code, Blockly.Arduino.ORDER_ATOMIC];
|
return [code, Blockly.Arduino.ORDER_ATOMIC];
|
||||||
};
|
};
|
||||||
|
|
||||||
Blockly.Arduino.sensebox_generate_html_doc = function (block) {
|
Blockly.Arduino.sensebox_generate_html_doc = function (block) {
|
||||||
var header = Blockly.Arduino.valueToCode(block, 'HEADER', Blockly.Arduino.ORDER_NONE) || '""';
|
var header =
|
||||||
var body = Blockly.Arduino.valueToCode(block, 'BODY', Blockly.Arduino.ORDER_NONE) || '""';
|
Blockly.Arduino.valueToCode(block, "HEADER", Blockly.Arduino.ORDER_NONE) ||
|
||||||
var code = 'buildHTML(' + header + ', ' + body + ')';
|
'""';
|
||||||
return [code, Blockly.Arduino.ORDER_ATOMIC];
|
var body =
|
||||||
|
Blockly.Arduino.valueToCode(block, "BODY", Blockly.Arduino.ORDER_NONE) ||
|
||||||
|
'""';
|
||||||
|
var code = "buildHTML(" + header + ", " + body + ")";
|
||||||
|
return [code, Blockly.Arduino.ORDER_ATOMIC];
|
||||||
};
|
};
|
||||||
|
|
||||||
Blockly.Arduino.sensebox_generate_http_succesful_response = function (block) {
|
Blockly.Arduino.sensebox_generate_http_succesful_response = function (block) {
|
||||||
var content = Blockly.Arduino.valueToCode(block, 'CONTENT', Blockly.Arduino.ORDER_NONE) || '""';
|
var content =
|
||||||
var code = 'client.println(buildSuccessfulResponse(request, ' + content + '));\n';
|
Blockly.Arduino.valueToCode(block, "CONTENT", Blockly.Arduino.ORDER_NONE) ||
|
||||||
return code;
|
'""';
|
||||||
|
var code =
|
||||||
|
"client.println(buildSuccessfulResponse(request, " + content + "));\n";
|
||||||
|
return code;
|
||||||
};
|
};
|
||||||
|
|
||||||
Blockly.Arduino.sensebox_generate_http_not_found_response = function (block) {
|
Blockly.Arduino.sensebox_generate_http_not_found_response = function (block) {
|
||||||
var code = 'client.println(buildNotFoundResponse(request));\n';
|
var code = "client.println(buildNotFoundResponse(request));\n";
|
||||||
return code;
|
return code;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
Blockly.Arduino.sensebox_ip_address = function (block) {
|
Blockly.Arduino.sensebox_ip_address = function (block) {
|
||||||
var code = "b->getIpAddress()";
|
var code = "b->getIpAddress()";
|
||||||
return [code, Blockly.Arduino.ORDER_ATOMIC];
|
return [code, Blockly.Arduino.ORDER_ATOMIC];
|
||||||
};
|
};
|
||||||
|
|
||||||
Blockly.Arduino.sensebox_general_html_tag = function (block) {
|
Blockly.Arduino.sensebox_general_html_tag = function (block) {
|
||||||
var tag = this.getFieldValue('TAG');
|
var tag = this.getFieldValue("TAG");
|
||||||
var code = 'buildTag("' + tag + '",';
|
var code = 'buildTag("' + tag + '",';
|
||||||
var n = 0;
|
var n = 0;
|
||||||
var branch = Blockly.Arduino.valueToCode(block, 'DO' + n, Blockly.Arduino.ORDER_NONE);
|
var branch = Blockly.Arduino.valueToCode(
|
||||||
if (branch.length > 0) {
|
block,
|
||||||
code += '\n ' + branch;
|
"DO" + n,
|
||||||
} else {
|
Blockly.Arduino.ORDER_NONE
|
||||||
code += '""';
|
);
|
||||||
}
|
if (branch.length > 0) {
|
||||||
for (n = 1; n <= block.additionalChildCount_; n++) {
|
code += "\n " + branch;
|
||||||
branch = Blockly.Arduino.valueToCode(block, 'DO' + n, Blockly.Arduino.ORDER_NONE);
|
} else {
|
||||||
code += ' +' + branch;
|
code += '""';
|
||||||
}
|
}
|
||||||
return [code + ')', Blockly.Arduino.ORDER_ATOMIC];
|
for (n = 1; n <= block.additionalChildCount_; n++) {
|
||||||
|
branch = Blockly.Arduino.valueToCode(
|
||||||
|
block,
|
||||||
|
"DO" + n,
|
||||||
|
Blockly.Arduino.ORDER_NONE
|
||||||
|
);
|
||||||
|
code += " +" + branch;
|
||||||
|
}
|
||||||
|
return [code + ")", Blockly.Arduino.ORDER_ATOMIC];
|
||||||
};
|
};
|
||||||
|
|
||||||
Blockly.Arduino.sensebox_web_readHTML = function (block) {
|
Blockly.Arduino.sensebox_web_readHTML = function (block) {
|
||||||
var filename = this.getFieldValue('FILENAME');
|
var filename = this.getFieldValue("FILENAME");
|
||||||
Blockly.Arduino.libraries_['library_spi'] = '#include <SPI.h>';
|
Blockly.Arduino.libraries_["library_spi"] = "#include <SPI.h>";
|
||||||
Blockly.Arduino.libraries_['library_sd'] = '#include <SD.h>';
|
Blockly.Arduino.libraries_["library_sd"] = "#include <SD.h>";
|
||||||
Blockly.Arduino.codeFunctions_['define_sd' + filename] = 'File webFile;';
|
Blockly.Arduino.codeFunctions_["define_sd" + filename] = "File webFile;";
|
||||||
Blockly.Arduino.setupCode_['sensebox_sd'] = 'SD.begin(28);';
|
Blockly.Arduino.setupCode_["sensebox_sd"] = "SD.begin(28);";
|
||||||
var func = [
|
Blockly.Arduino.codeFunctions_["generateHTML"] = `
|
||||||
'String generateHTML(){',
|
String generateHTML(){
|
||||||
' webFile = SD.open("' + filename + '", FILE_READ);',
|
webFile = SD.open("${filename}", FILE_READ);
|
||||||
' String finalString ="";',
|
String finalString ="";
|
||||||
' while (webFile.available())',
|
while (webFile.available())
|
||||||
' {',
|
{
|
||||||
' finalString+=(char)webFile.read();',
|
finalString+=(char)webFile.read();
|
||||||
' }',
|
}
|
||||||
' return finalString;',
|
return finalString;
|
||||||
'}'];
|
}`;
|
||||||
var functionName = Blockly.Arduino.addFunction(
|
var code = `generateHTML()`;
|
||||||
'generateHTML', func.join('\n'));
|
return [code, Blockly.Arduino.ORDER_ATOMIC];
|
||||||
var code = functionName + '()';
|
};
|
||||||
return [code, Blockly.Arduino.ORDER_ATOMIC];
|
|
||||||
};
|
|
||||||
|
@ -8,103 +8,110 @@
|
|||||||
* types.
|
* types.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/** Single character. */
|
/** Single character. */
|
||||||
export const CHARACTER = {
|
export const CHARACTER = {
|
||||||
typeId: 'Character',
|
typeId: "Character",
|
||||||
typeName: 'char',
|
typeName: "char",
|
||||||
typeMsgName: 'ARD_TYPE_CHAR',
|
typeMsgName: "ARD_TYPE_CHAR",
|
||||||
}
|
};
|
||||||
|
|
||||||
export const BOOLEAN = {
|
export const BOOLEAN = {
|
||||||
typeId: 'Boolean',
|
typeId: "Boolean",
|
||||||
typeName: 'boolean',
|
typeName: "boolean",
|
||||||
typeMsgName: 'ARD_TYPE_BOOL',
|
typeMsgName: "ARD_TYPE_BOOL",
|
||||||
}
|
};
|
||||||
|
|
||||||
/** Text string. */
|
/** Text string. */
|
||||||
export const TEXT = {
|
export const TEXT = {
|
||||||
typeId: 'Text',
|
typeId: "Text",
|
||||||
typeName: 'String',
|
typeName: "String",
|
||||||
typeMsgName: 'ARD_TYPE_TEXT',
|
typeMsgName: "ARD_TYPE_TEXT",
|
||||||
}
|
};
|
||||||
|
|
||||||
/** Short integer number. */
|
/** Short integer number. */
|
||||||
export const SHORT_NUMBER = {
|
export const SHORT_NUMBER = {
|
||||||
typeId: 'Short_Number',
|
typeId: "Short_Number",
|
||||||
typeName: 'int',
|
typeName: "int",
|
||||||
typeMsgName: 'ARD_TYPE_SHORT',
|
typeMsgName: "ARD_TYPE_SHORT",
|
||||||
}
|
};
|
||||||
|
|
||||||
/** Integer number. */
|
/** Integer number. */
|
||||||
export const NUMBER = {
|
export const NUMBER = {
|
||||||
typeId: 'Number',
|
typeId: "Number",
|
||||||
typeName: 'int',
|
typeName: "int",
|
||||||
typeMsgName: 'ARD_TYPE_NUMBER',
|
typeMsgName: "ARD_TYPE_NUMBER",
|
||||||
}
|
};
|
||||||
|
|
||||||
/** Large integer number. */
|
/** Large integer number. */
|
||||||
export const LARGE_NUMBER = {
|
export const LARGE_NUMBER = {
|
||||||
typeId: 'Large Number',
|
typeId: "Large Number",
|
||||||
typeName: 'long',
|
typeName: "long",
|
||||||
typeMsgName: 'ARD_TYPE_LONG',
|
typeMsgName: "ARD_TYPE_LONG",
|
||||||
}
|
};
|
||||||
|
|
||||||
/** Decimal/floating point number. */
|
/** Decimal/floating point number. */
|
||||||
export const DECIMAL = {
|
export const DECIMAL = {
|
||||||
typeId: 'Decimal',
|
typeId: "Decimal",
|
||||||
typeName: 'float',
|
typeName: "float",
|
||||||
typeMsgName: 'ARD_TYPE_DECIMAL',
|
typeMsgName: "ARD_TYPE_DECIMAL",
|
||||||
}
|
};
|
||||||
|
|
||||||
/** Array/List of items. */
|
/** Array/List of items. */
|
||||||
export const ARRAY = {
|
export const ARRAY = {
|
||||||
typeId: 'Array',
|
typeId: "Array",
|
||||||
typeName: 'Array',
|
typeName: "Array",
|
||||||
typeMsgName: 'ARD_TYPE_ARRAY',
|
typeMsgName: "ARD_TYPE_ARRAY",
|
||||||
compatibleTypes: []
|
compatibleTypes: [],
|
||||||
}
|
};
|
||||||
|
|
||||||
/** Null indicate there is no type. */
|
/** Null indicate there is no type. */
|
||||||
export const NULL = {
|
export const NULL = {
|
||||||
typeId: 'Null',
|
typeId: "Null",
|
||||||
typeName: 'void',
|
typeName: "void",
|
||||||
typeMsgName: 'ARD_TYPE_NULL',
|
typeMsgName: "ARD_TYPE_NULL",
|
||||||
}
|
};
|
||||||
|
|
||||||
/** Type not defined, or not yet defined. */
|
/** Type not defined, or not yet defined. */
|
||||||
export const UNDEF = {
|
export const UNDEF = {
|
||||||
typeId: 'Undefined',
|
typeId: "Undefined",
|
||||||
typeName: 'undef',
|
typeName: "undef",
|
||||||
typeMsgName: 'ARD_TYPE_UNDEF',
|
typeMsgName: "ARD_TYPE_UNDEF",
|
||||||
}
|
};
|
||||||
|
|
||||||
/** Set when no child block (meant to define the variable type) is connected. */
|
/** Set when no child block (meant to define the variable type) is connected. */
|
||||||
export const CHILD_BLOCK_MISSING = {
|
export const CHILD_BLOCK_MISSING = {
|
||||||
typeId: 'ChildBlockMissing',
|
typeId: "ChildBlockMissing",
|
||||||
typeMsgName: 'ARD_TYPE_CHILDBLOCKMISSING',
|
typeMsgName: "ARD_TYPE_CHILDBLOCKMISSING",
|
||||||
compatibleTypes: []
|
compatibleTypes: [],
|
||||||
}
|
|
||||||
|
|
||||||
const compatibleTypes = {
|
|
||||||
Array: ['Array'],
|
|
||||||
boolean: ['boolean'],
|
|
||||||
int: ['int', 'long', 'double', 'float'],
|
|
||||||
char: ['char'],
|
|
||||||
String: ['String'],
|
|
||||||
void: ['void'],
|
|
||||||
long: ['int', 'long'],
|
|
||||||
double: ['int', 'long', 'double'],
|
|
||||||
float: ['int', 'long', 'double', 'float'],
|
|
||||||
null: ['null']
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
export const getCompatibleTypes = (type) => {
|
|
||||||
return compatibleTypes[type];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export const VARIABLE_TYPES = [['SHORT_NUMBER', 'char'], ['NUMBER', 'int'], ['DECIMAL', 'long'], ['TEXT', 'String'], ['CHARACTER', 'char'], ['BOOLEAN', 'boolean'], ['NULL', 'void'], ['UNDEF', 'undefined']];
|
const compatibleTypes = {
|
||||||
|
Array: ["Array"],
|
||||||
|
boolean: ["boolean"],
|
||||||
|
int: ["int", "long", "double", "float"],
|
||||||
|
char: ["char"],
|
||||||
|
String: ["String"],
|
||||||
|
void: ["void"],
|
||||||
|
long: ["int", "long"],
|
||||||
|
double: ["int", "long", "double"],
|
||||||
|
float: ["int", "long", "double", "float"],
|
||||||
|
null: ["null"],
|
||||||
|
};
|
||||||
|
|
||||||
|
export const getCompatibleTypes = (type) => {
|
||||||
|
return compatibleTypes[type];
|
||||||
|
};
|
||||||
|
|
||||||
|
export const VARIABLE_TYPES = [
|
||||||
|
["SHORT_NUMBER", "char"],
|
||||||
|
["NUMBER", "int"],
|
||||||
|
["DECIMAL", "long"],
|
||||||
|
["TEXT", "String"],
|
||||||
|
["CHARACTER", "char"],
|
||||||
|
["BOOLEAN", "boolean"],
|
||||||
|
["NULL", "void"],
|
||||||
|
["UNDEF", "undefined"],
|
||||||
|
];
|
||||||
|
|
||||||
// /**
|
// /**
|
||||||
// * Some Types have circular dependencies on their compatibilities, so add them
|
// * Some Types have circular dependencies on their compatibilities, so add them
|
||||||
@ -233,7 +240,3 @@ export const VARIABLE_TYPES = [['SHORT_NUMBER', 'char'], ['NUMBER', 'int'], ['DE
|
|||||||
// }
|
// }
|
||||||
// return Blockly.Types.NULL;
|
// return Blockly.Types.NULL;
|
||||||
// };
|
// };
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,13 +1,16 @@
|
|||||||
export const SD = {
|
export const SD = {
|
||||||
/**
|
/**
|
||||||
* SD-Block
|
* SD-Block
|
||||||
*/
|
*/
|
||||||
senseBox_sd_create_file: "Erstelle Datei auf SD-Karte",
|
senseBox_sd_create_file: "Erstelle Datei auf SD-Karte",
|
||||||
senseBox_sd_write_file: "Schreibe Daten auf SD-Karte",
|
senseBox_sd_write_file: "Schreibe Daten auf SD-Karte",
|
||||||
senseBox_sd_open_file: "Öffne eine Datei auf der SD-Karte",
|
senseBox_sd_open_file: "Öffne Datei auf der SD-Karte",
|
||||||
senseBox_sd_create_file_tooltip: "Erstellt eine Datei auf der Karte. Stecke das SD-Bee auf den Steckplatz **XBEE2**. Die **maximale** Länge des Dateinamen sind **8 Zeichen**. Die Datei sollte zuerst im *Setup()* erstellt werden",
|
senseBox_sd_create_file_tooltip:
|
||||||
senseBox_sd_write_file_tooptip: "Schreibe Daten auf die SD-Karte. Beachte, dass die Datei zuerst geöffnet werden muss.",
|
"Erstellt eine Datei auf der Karte. Stecke das SD-Bee auf den Steckplatz **XBEE2**. Die **maximale** Länge des Dateinamen sind **8 Zeichen**. Die Datei sollte zuerst im *Setup()* erstellt werden",
|
||||||
senseBox_sd_open_file_tooltip: "Öffne die Datei auf der SD-Karte, um Dateien zu speichern. Am Ende der Schleife wird die Datei automatisch wieder geschlossen.",
|
senseBox_sd_write_file_tooptip:
|
||||||
sensebox_sd_filename: "Daten",
|
"Schreibe Daten auf die SD-Karte. Beachte, dass die Datei zuerst geöffnet werden muss.",
|
||||||
senseBox_sd_decimals: "Dezimalen",
|
senseBox_sd_open_file_tooltip:
|
||||||
}
|
"Öffne die Datei auf der SD-Karte, um Dateien zu speichern. Am Ende der Schleife wird die Datei automatisch wieder geschlossen.",
|
||||||
|
sensebox_sd_filename: "Daten",
|
||||||
|
senseBox_sd_decimals: "Dezimalen",
|
||||||
|
};
|
||||||
|
@ -1,20 +1,22 @@
|
|||||||
export const TIME = {
|
export const TIME = {
|
||||||
|
/**
|
||||||
/**
|
* Interval Block
|
||||||
* Interval Block
|
*/
|
||||||
*/
|
senseBox_interval_timer: "Intervall:",
|
||||||
senseBox_interval_timer: "Messintervall",
|
senseBox_interval: "ms",
|
||||||
senseBox_interval: "ms",
|
senseBox_interval_timer_tip: "Intervall",
|
||||||
senseBox_interval_timer_tip: "Intervall",
|
senseBox_interval_time: "Zeit: ",
|
||||||
ARD_TIME_DELAY: "Warte",
|
ARD_TIME_DELAY: "Warte",
|
||||||
ARD_TIME_DELAY_MICROS: "Mikrosekunden",
|
ARD_TIME_DELAY_MICROS: "Mikrosekunden",
|
||||||
ARD_TIME_DELAY_MICRO_TIP: "Warte eine spezifischen Zeit in Microsekunden",
|
ARD_TIME_DELAY_MICRO_TIP: "Warte eine spezifischen Zeit in Microsekunden",
|
||||||
ARD_TIME_DELAY_TIP: "Warte spezifische Zeit in Millisekunden",
|
ARD_TIME_DELAY_TIP: "Warte spezifische Zeit in Millisekunden",
|
||||||
ARD_TIME_INF: "Warte für immer (Beende Programm)",
|
ARD_TIME_INF: "Warte für immer (Beende Programm)",
|
||||||
ARD_TIME_INF_TIP: "Stoppt das Programm.",
|
ARD_TIME_INF_TIP: "Stoppt das Programm.",
|
||||||
ARD_TIME_MICROS: "Bereits vergangen Zeit (Mikrosekunden)",
|
ARD_TIME_MICROS: "Bereits vergangen Zeit (Mikrosekunden)",
|
||||||
ARD_TIME_MICROS_TIP: "Gibt eine Zahl in Microsekunden zurück, die der Zeitdauer des Aktuellen Programms entspricht. Muss als positiven Integer gespeichert werden", // untranslated
|
ARD_TIME_MICROS_TIP:
|
||||||
ARD_TIME_MILLIS: "Bereits vergangen Zeit (Millisekunden)",
|
"Gibt eine Zahl in Microsekunden zurück, die der Zeitdauer des Aktuellen Programms entspricht. Muss als positiven Integer gespeichert werden", // untranslated
|
||||||
ARD_TIME_MILLIS_TIP: "Gibt eine Zahl in Millisekunden zurück, die der Zeitdauer des Aktuellen Programms entspricht. Muss als positiven Integer gespeichert werden", // untranslated
|
ARD_TIME_MILLIS: "Bereits vergangen Zeit (Millisekunden)",
|
||||||
ARD_TIME_MS: "Millisekunden",
|
ARD_TIME_MILLIS_TIP:
|
||||||
}
|
"Gibt eine Zahl in Millisekunden zurück, die der Zeitdauer des Aktuellen Programms entspricht. Muss als positiven Integer gespeichert werden", // untranslated
|
||||||
|
ARD_TIME_MS: "Millisekunden",
|
||||||
|
};
|
||||||
|
@ -1,17 +1,19 @@
|
|||||||
export const TIME = {
|
export const TIME = {
|
||||||
|
senseBox_interval: "ms",
|
||||||
senseBox_interval: "ms",
|
senseBox_interval_timer: "Interval",
|
||||||
senseBox_interval_timer: "Measuring interval",
|
senseBox_interval_timer_tip: "Setup an Interval",
|
||||||
senseBox_interval_timer_tip: "Setup an Intervall",
|
senseBox_interval_time: "time",
|
||||||
ARD_TIME_DELAY: "wait",
|
ARD_TIME_DELAY: "wait",
|
||||||
ARD_TIME_DELAY_MICROS: "microseconds",
|
ARD_TIME_DELAY_MICROS: "microseconds",
|
||||||
ARD_TIME_DELAY_MICRO_TIP: "Wait specific time in microseconds",
|
ARD_TIME_DELAY_MICRO_TIP: "Wait specific time in microseconds",
|
||||||
ARD_TIME_DELAY_TIP: "Wait specific time in milliseconds",
|
ARD_TIME_DELAY_TIP: "Wait specific time in milliseconds",
|
||||||
ARD_TIME_INF: "wait forever (end program)",
|
ARD_TIME_INF: "wait forever (end program)",
|
||||||
ARD_TIME_INF_TIP: "Wait indefinitely, stopping the program.",
|
ARD_TIME_INF_TIP: "Wait indefinitely, stopping the program.",
|
||||||
ARD_TIME_MICROS: "current elapsed Time (microseconds)",
|
ARD_TIME_MICROS: "current elapsed Time (microseconds)",
|
||||||
ARD_TIME_MICROS_TIP: "Returns the number of microseconds since the Arduino board began running the current program. Has to be stored in a positive long integer",
|
ARD_TIME_MICROS_TIP:
|
||||||
ARD_TIME_MILLIS: "current elapsed Time (milliseconds)",
|
"Returns the number of microseconds since the Arduino board began running the current program. Has to be stored in a positive long integer",
|
||||||
ARD_TIME_MILLIS_TIP: "Returns the number of milliseconds since the Arduino board began running the current program. Has to be stored in a positive long integer",
|
ARD_TIME_MILLIS: "current elapsed Time (milliseconds)",
|
||||||
ARD_TIME_MS: "milliseconds",
|
ARD_TIME_MILLIS_TIP:
|
||||||
}
|
"Returns the number of milliseconds since the Arduino board began running the current program. Has to be stored in a positive long integer",
|
||||||
|
ARD_TIME_MS: "milliseconds",
|
||||||
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user