123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215 |
- /**
- * @license Licensed under the Apache License, Version 2.0 (the "License"):
- * http://www.apache.org/licenses/LICENSE-2.0
- */
- /**
- * @fileoverview Blocks for the Arduino serial communication functions.
- * The Arduino built in functions syntax can be found at:
- * http://arduino.cc/en/Reference/HomePage
- *
- * TODO: There are more function that can be added:
- * http://arduino.cc/en/Reference/Serial
- */
- 'use strict';
- goog.provide('Blockly.Blocks.serial');
- goog.require('Blockly.Blocks');
- goog.require('Blockly.Types');
- /** Common HSV hue for all blocks in this category. */
- Blockly.Blocks.serial.HUE = 80;
- Blockly.Blocks['serial_setup'] = {
- /**
- * Block for setting the speed of the serial connection.
- * @this Blockly.Block
- */
- init: function() {
- this.setHelpUrl('http://arduino.cc/en/Serial/Begin');
- this.setColour(Blockly.Blocks.serial.HUE);
- this.appendDummyInput()
- .appendField(Blockly.Msg.ARD_SERIAL_SETUP)
- .appendField(
- new Blockly.FieldDropdown(
- Blockly.Python.Boards.selected.serial.concat([
- ["serial1", "Serial1"]
- ])), 'SERIAL_ID')
- .appendField(Blockly.Msg.ARD_SERIAL_SPEED)
- .appendField(
- new Blockly.FieldDropdown(
- [
- ["9600", "9600"],
- ["115200", "115200"]
- ]), 'SPEED')
- .appendField(Blockly.Msg.ARD_SERIAL_BPS);
- this.setInputsInline(true);
- this.setTooltip(Blockly.Msg.ARD_SERIAL_SETUP_TIP);
- },
- /**
- * Returns the serial instance name.
- * @return {!string} Serial instance name.
- * @this Blockly.Block
- */
- getSerialSetupInstance: function() {
- return this.getFieldValue('SERIAL_ID');
- },
- /**
- * Updates the content of the the serial related fields.
- * @this Blockly.Block
- */
- updateFields: function() {
- Blockly.Python.Boards.refreshBlockFieldDropdown(
- this, 'SERIAL_ID', 'serial');
- Blockly.Python.Boards.refreshBlockFieldDropdown(
- this, 'SPEED', 'serialSpeed');
- }
- };
- Blockly.Blocks['serial_print'] = {
- /**
- * Block for creating a write to serial com function.
- * @this Blockly.Block
- */
- init: function() {
- this.setHelpUrl('http://www.arduino.cc/en/Serial/Print');
- this.setColour(Blockly.Blocks.serial.HUE);
- this.appendDummyInput()
- .appendField(new Blockly.FieldDropdown(
- Blockly.Python.Boards.selected.serial), 'SERIAL_ID')
- .appendField(Blockly.Msg.ARD_SERIAL_PRINT);
- this.appendValueInput('CONTENT')
- .setCheck(null);
- this.appendDummyInput()
- .appendField(new Blockly.FieldCheckbox('TRUE'), 'NEW_LINE')
- .appendField(Blockly.Msg.ARD_SERIAL_PRINT_NEWLINE);
- this.setInputsInline(true);
- this.setPreviousStatement(true, null);
- this.setNextStatement(true, null);
- this.setTooltip(Blockly.Msg.ARD_SERIAL_PRINT_TIP);
- },
- /**
- * Called whenever anything on the workspace changes.
- * It checks the instances of serial_setup and attaches a warning to this
- * block if not valid data is found.
- * @this Blockly.Block
- */
- // onchange: function() {
- // if (!this.workspace) { return; } // Block has been deleted.
- // // Get the Serial instance from this block
- // var thisInstanceName = this.getFieldValue('SERIAL_ID');
- // // Iterate through top level blocks to find setup instance for the serial id
- // var blocks = Blockly.mainWorkspace.getTopBlocks();
- // var setupInstancePresent = false;
- // for (var x = 0; x < blocks.length; x++) {
- // var func = blocks[x].getSerialSetupInstance;
- // if (func) {
- // var setupBlockInstanceName = func.call(blocks[x]);
- // if (thisInstanceName == setupBlockInstanceName) {
- // setupInstancePresent = true;
- // }
- // }
- // }
- // if (!setupInstancePresent) {
- // this.setWarningText(Blockly.Msg.ARD_SERIAL_PRINT_WARN, 'serial_setup1');
- // } else {
- // this.setWarningText(null, 'serial_setup1');
- // }
- // },
- /**
- * Updates the content of the the serial related fields.
- * @this Blockly.Block
- */
- updateFields: function() {
- Blockly.Python.Boards.refreshBlockFieldDropdown(
- this, 'SERIAL_ID', 'serial');
- }
- };
- /**
- * Block for UART Communication
- * serial write
- */
- Blockly.Blocks['serial1_write'] = {
- /**
- * Block for creating a write to serial1 com function.
- * @this Blockly.Block
- */
- init: function() {
- this.setHelpUrl('http://www.arduino.cc/en/Serial/Write');
- this.setColour(Blockly.Blocks.serial.HUE);
- this.appendDummyInput()
- .appendField(new Blockly.FieldDropdown(
- [
- ["serial1", "Serial1"]
- ]), 'SERIAL_ID')
- .appendField(Blockly.Msg.ARD_SERIAL_WRITE);
- this.appendValueInput('CONTENT')
- .setCheck(null);
- // this.appendDummyInput()
- // .appendField(new Blockly.FieldCheckbox('TRUE'), 'NEW_LINE')
- // .appendField(Blockly.Msg.ARD_SERIAL_PRINT_NEWLINE);
- this.setInputsInline(true);
- this.setPreviousStatement(true, null);
- this.setNextStatement(true, null);
- this.setTooltip(Blockly.Msg.ARD_SERIAL_PRINT_TIP);
- },
- }
- /**
- * Block for UART Communication
- * serial read
- */
- Blockly.Blocks['serial1_read'] = {
- /**
- * Block for creating a write to serial1 com function.
- * @this Blockly.Block
- */
- init: function() {
- this.setHelpUrl('http://www.arduino.cc/en/Serial/Read');
- this.setColour(Blockly.Blocks.serial.HUE);
- this.appendDummyInput()
- .appendField(new Blockly.FieldDropdown(
- [
- ["serial1", "Serial1"]
- ]), 'SERIAL_ID')
- .appendField(Blockly.Msg.ARD_SERIAL_READ);
- // this.appendDummyInput()
- // .appendField(new Blockly.FieldCheckbox('TRUE'), 'NEW_LINE')
- // .appendField(Blockly.Msg.ARD_SERIAL_PRINT_NEWLINE);
- this.setInputsInline(true);
- this.setPreviousStatement(true, null);
- this.setNextStatement(true, null);
- this.setTooltip(Blockly.Msg.ARD_SERIAL_PRINT_TIP);
- },
- }
- /**
- * Block for UART Communication
- * serial read
- */
- Blockly.Blocks['serial1_available'] = {
- /**
- * Block for creating a write to serial1 com function.
- * @this Blockly.Block
- */
- init: function() {
- this.setColour(Blockly.Blocks.serial.HUE);
- this.appendDummyInput()
- .appendField(new Blockly.FieldDropdown(
- [
- ["serial1", "Serial1"]
- ]), 'SERIAL_ID')
- .appendField(Blockly.Msg.ARD_SERIAL_AVAILABLE);
- this.setOutput(true);
- this.setTooltip(Blockly.Msg.ARD_SERIAL_PRINT_TIP);
- },
- }
|