123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449 |
- 'use strict';
- goog.provide('Blockly.Python.bluetooth');
- goog.require('Blockly.Python');
- Blockly.Python['bluetooth_setup'] = function(block) {
- let baudNum = block.getFieldValue('BAUD');
- Blockly.Python.addSetup('bluetooth_serial_begin', 'Serial1.begin(' + baudNum + ');', false);
- let receivedDo = Blockly.Python.statementToCode(block, 'RECEIVED_DO');
- let option = block.getFieldValue('OPTIONS');
- var cmdvar = Blockly.Python.variableDB_.getName(
- block.getFieldValue('CMDVAR'), Blockly.Variables.NAME_TYPE);
- let code = "";
- if (option === "string") {
- code = "while (Serial1.available()) {\n" +
- " delay(10);\n" +
- " char c = Serial1.read();\n" +
- " " + cmdvar + " += c;\n" +
- "}\n" + receivedDo +
- "\n" + cmdvar + " = \"\";\n";
- } else if (option === "number") {
- code = "if (Serial1.available() > 0) {\n" +
- " " + cmdvar + " = Serial1.read();\n" +
- "}\n" + receivedDo;
- } else if (option === "array") {
- var length = block.getFieldValue("LENGTH");
- var argument0 = '{';
- for (var i = 0; i < length - 1; i++) argument0 += '0,';
- argument0 += "0}"
- var decl = 'int ' + cmdvar + '[' + length + '] = ' + argument0 + ';\n';
- Blockly.Python.addDeclaration('bluetooth_list', decl);
- code = "int n = " + 'sizeof(' + cmdvar + ')/sizeof(' + cmdvar + '[0]);\n' +
- "while (Serial1.available() < n) { }\n" +
- "for (int b_n = 0; b_n < n; b_n++) {\n" +
- " " + cmdvar + "[b_n] = Serial1.read();\n" +
- "}\n" + receivedDo;
- }
- return code;
- };
- Blockly.Python['bluetooth_text_getCommand'] = function(block) {
- var code = Blockly.Python.variableDB_.getName(block.getFieldValue('VAR'),
- Blockly.Variables.NAME_TYPE);
- return [code, Blockly.Python.ORDER_ATOMIC];
- };
- Blockly.Python['bluetooth_number_getCommand'] = function(block) {
- var code = Blockly.Python.variableDB_.getName(block.getFieldValue('VAR'),
- Blockly.Variables.NAME_TYPE);
- return [code, Blockly.Python.ORDER_ATOMIC];
- };
- Blockly.Python['bluetooth_list_getCommand'] = function(block) {
- var variab = Blockly.Python.variableDB_.getName(block.getFieldValue('VAR'),
- Blockly.Variables.NAME_TYPE);
- var index = block.getFieldValue("INDEX");
- var code = variab + '[' + index + ']';
- return [code, Blockly.Python.ORDER_ATOMIC];
- };
- Blockly.Python['bluetooth_intercomms_send'] = function(block) {
- var baud = block.getFieldValue("BAUD");
- Blockly.Python.addDeclaration("BT_Serial_sendState", "int BTserialSendState = 0;");
- Blockly.Python.addSetup('serial1', "Serial1.begin(" + baud + ");");
- var BT_Serial_SendData = 'void BTserialSendData() {\n' +
- ' int BTserialDataLength = BTserialDataPackage().length() + 1;\n' +
- ' char BTserialDataBuf[BTserialDataLength];\n' +
- ' BTserialDataPackage().toCharArray(BTserialDataBuf, BTserialDataLength);\n' +
- ' if ( BTserialSendState == 0 ) {\n' +
- ' Serial1.write(BTserialDataBuf);\n' +
- ' }\n' +
- ' if ( (millis() / 100) % 4 == 3 && BTserialSendState == 0) {\n' +
- // Send data set to WiFi Module.\n'
- ' Serial1.write(BTserialDataBuf);\n' +
- ' BTserialSendState = 1;\n' +
- ' } else if ( (millis() / 100) % 4 == 1) {\n' +
- ' BTserialSendState = 0;\n' +
- ' }\n' +
- '}\n';
- Blockly.Python.addFunction("BTSerialSendData", BT_Serial_SendData);
- var item_value = ''
- var BTserial_DataPackage = 'String BTserialDataPackage() { \n' +
- ' String data = "";\n' +
- ' data += "SOF";\n' // Set up a "SOF" initializer for data validation usage.
- for (var n = 0; n < this.itemCount_; n++) {
- item_value = Blockly.Python.valueToCode(this, 'ADD' + n,
- Blockly.Python.ORDER_NONE) || '0';
- BTserial_DataPackage += ' data += "|";\n data += ' + item_value + ';\n'
- }
- BTserial_DataPackage += ' data += "|";\n data += "\\r\\n";\n ' +
- ' return data;\n}\n';
- Blockly.Python.addFunction("BTSerialDataPackage", BTserial_DataPackage);
- var code = "";
- code += "BTserialSendData();\n";
- return code;
- };
- Blockly.Python['bluetooth_intercomms_receive'] = function(block) {
- var baud = block.getFieldValue("BAUD");
- var timeout = block.getFieldValue("TIMEOUT");
- Blockly.Python.addSetup('serial1_trans', "Serial1.begin(" + baud + ");\n Serial1.setTimeout(" + timeout + ");");
- Blockly.Python.addDeclaration("BTserialDataReceived", 'String BTserialDataReceived;\n');
- var BTserial_DataFilter = 'int BTserialDataFilter() {\n' +
- ' if (Serial1.available() > 0) {\n' +
- ' BTserialDataReceived = Serial1.readStringUntil("\\r\\n");\n' +
- ' }\n' +
- ' if (BTgetSerialDataValue(BTserialDataReceived, \'|\', 0) == "SOF") {\n' +
- ' return 1;\n' +
- ' } else {\n' +
- ' return 0;\n' +
- ' }\n' +
- '}\n'
- Blockly.Python.addFunction("BTserialDataFilter", BTserial_DataFilter);
- var BTserial_getDataValue = 'String BTgetSerialDataValue(String data, char separator, int index)\n' +
- '{\n' +
- ' int found = 0;\n' +
- ' int strIndex[] = {0, -1};\n' +
- ' int maxIndex = data.length() - 1;\n' +
- ' for (int i = 0; i <= maxIndex && found <= index; i++) {\n' +
- ' if (data.charAt(i) == separator || i == maxIndex) {\n' +
- ' found++;\n' +
- ' strIndex[0] = strIndex[1] + 1;\n' +
- ' strIndex[1] = (i == maxIndex) ? i + 1 : i;\n' +
- ' }\n' +
- ' }\n' +
- ' return found > index ? data.substring(strIndex[0], strIndex[1]) : "";\n' +
- '}\n'
- Blockly.Python.addFunction("BTgetSerialDataValue", BTserial_getDataValue);
- var code = 'boolean BTserialReceiveCheck_ = BTserialDataFilter();\n' +
- 'if (!BTserialReceiveCheck_) {\n' +
- ' Serial.println("Error receiving data from Bluetooth Module.");\n' +
- ' return;\n' +
- ' }\n'
- return code;
- };
- Blockly.Python['bluetooth_intercomms_receive_getData'] = function(block) {
- var index = parseInt(block.getFieldValue("INDEX")) + 1;
- var type = block.getFieldValue("TYPE")
- var code = "BTgetSerialDataValue(BTserialDataReceived, '|', " + index + ")" + type;
- return [code, Blockly.Python.ORDER_ATOMIC];
- };
- /******************************** */
- Blockly.Python['bluetooth_intercomms_send_old'] = function(block) {
- var checkbit = "#define SOP '<'\n" +
- "#define EOP '>'\n";
- Blockly.Python.addDeclaration("wifi_dataTransfer_checkbit", checkbit);
- var baud = block.getFieldValue("BAUD")
- Blockly.Python.addSetup('mainwifi_setup', "Serial1.begin(" + baud + ");");
- // var datavar = Blockly.Python.variableDB_.getName(
- // block.getFieldValue('dataVar'), Blockly.Variables.NAME_TYPE);
- var length = block.itemCount_;
- var dataLength = length + "+2";
- var code = "unsigned char DataOut_[" + dataLength + "];\n" +
- "DataOut_[0] = SOP;\n"
- for (let i = 1; i < length + 1; i++) {
- var data_item = Blockly.Python.valueToCode(block, "ADD" + (i - 1), Blockly.Python.ORDER_ATOMIC) || 0;
- code += "DataOut_[" + i + "] = " + data_item + ";\n"
- }
- code += "DataOut_[" + length + "+1] = EOP;\n" +
- "Serial1.write(DataOut_, " + dataLength + ");\n" +
- "delay(50);\n";
- return code;
- };
- Blockly.Python['bluetooth_intercomms_receive_old'] = function(block) {
- var checkbit = "#define SOP '<'\n" +
- "#define EOP '>'\n";
- Blockly.Python.addDeclaration("wifi_dataTransfer_checkbit", checkbit);
- var length = block.getFieldValue("LENGTH");
- var baud = block.getFieldValue("BAUD")
- Blockly.Python.addSetup('mainwifi_setup', "Serial1.begin(" + baud + ");");
- var MsgReceiveStatus = "bool started = false;\n" +
- "bool ended = false;\n" +
- "int index_i;\n";
- Blockly.Python.addDeclaration("wifi_dataTransfer_MsgReceiveStatus", MsgReceiveStatus);
- Blockly.Python.addDeclaration("BT_interCommms_receive", "int BTIC_receive[" + length + "] = {0};");
- var datavar = "BTIC_receive"
- var dataIn_function = "int handleDataIn() {\n" +
- " while (Serial1.available() > 0) {\n" +
- " int inChar = Serial1.read();\n" +
- " if(inChar == SOP) {\n" +
- " index_i = 0;\n" +
- " started = true;\n" +
- " ended = false;\n" +
- " } else if(inChar == EOP) {\n" +
- " ended = true;\n" +
- " break;\n" +
- " }else if((index_i < " + length + ")&&started&&(!ended)) {\n" +
- " " + datavar + "[index_i] = inChar;\n" +
- " index_i++;\n" +
- " }\n" +
- " }\n" +
- " if(started && ended) {\n" +
- " return 1;\n" +
- " } else {\n" +
- " return 0;\n" +
- " }\n" +
- "}\n";
- Blockly.Python.addFunction("mainwifi_dataIn_function", dataIn_function);
- var code = "boolean receiveMsgsuccess_ = handleDataIn();\n";
- return code;
- };
- Blockly.Python['bluetooth_intercomms_receive_getData_old'] = function(block) {
- var index = block.getFieldValue("INDEX");
- var code = "BTIC_receive[" + index + "]";
- return [code, Blockly.Python.ORDER_ATOMIC];
- };
- /******************************** */
- Blockly.Python['bluetooth_at_slave'] = function(block) {
- var baud = block.getFieldValue("BAUD")
- var BT_at_slave_decl = 'int bluetoothATModeserialSendState = 0;\n' +
- 'char c = \' \';\n';
- Blockly.Python.addDeclaration("BT_at_slave_decl", BT_at_slave_decl);
- var BT_at_slave_setup = ' Serial.begin(' + baud + ');\n' +
- ' Serial1.begin(38400);\n'
- Blockly.Python.addSetup("BT_at_slave_setup", BT_at_slave_setup);
- var BT_at_slave_func = 'void bluetoothATModeInteractive() {\n' +
- ' while (Serial1.available() > 0) {\n' +
- ' c = Serial1.read();\n' +
- ' Serial.write(c);\n' +
- ' }\n' +
- ' while (Serial.available() > 0) {\n' +
- ' c = Serial.read();\n' +
- ' Serial1.write(c);\n' +
- ' }\n' +
- '}\n'
- Blockly.Python.addFunction("BT_at_slave_func", BT_at_slave_func);
- var code = ' bluetoothATModeInteractive();\n' +
- ' // Slave\n' +
- ' if ( (millis() / 1000) % 50 == 5 && bluetoothATModeserialSendState == 0) {\n' +
- ' Serial.println(" ____ _ _ _ _ ");\n' +
- ' Serial.println(" | __ ) | | _ _ ___ | |_ ___ ___ | |_ | |__ ");\n' +
- ' Serial.println(" | _ \\ | | | | | | / _ \\ | __| / _ \\ / _ \\ | __| | \'_ \\ ");\n' +
- ' Serial.println(" | |_) | | | | |_| | | __/ | |_ | (_) | | (_) | | |_ | | | |");\n' +
- ' Serial.println(" |____/ |_| \\__,_| \\___| \\__| \\___/ \\___/ \\__| |_| |_|");\n' +
- ' Serial.println("");\n' +
- ' Serial.println(" ____ _ ");\n' +
- ' Serial.println(" / ___| | | __ _ __ __ ___ ");\n' +
- ' Serial.println(" \\___ \\ | | / _` | \\ \\ / / / _ ");\n' +
- ' Serial.println(" ___) | | | | (_| | \\ V / | __/");\n' +
- ' Serial.println(" |____/ |_| \\__,_| \\_/ \\___|");\n' +
- ' Serial.println("");\n' +
- ' Serial.println("");\n' +
- ' Serial.println("1. Testing communication:");\n' +
- ' Serial.print("- ");\n' +
- ' Serial1.write("AT\\r\\n");\n' +
- ' bluetoothATModeserialSendState = 1;\n' +
- ' } else if ( (millis() / 1000) % 50 == 6) {\n' +
- ' bluetoothATModeserialSendState = 0;\n' +
- ' }\n' +
- ' if ( (millis() / 1000) % 50 == 7 && bluetoothATModeserialSendState == 0) {\n' +
- ' Serial.println("");\n' +
- ' Serial.println("2. Reset previous configuration:");\n' +
- ' Serial.print("- ");\n' +
- ' Serial1.write("AT+ORGL\\r\\n");\n' +
- ' bluetoothATModeserialSendState = 1;\n' +
- ' } else if ( (millis() / 1000) % 50 == 8) {\n' +
- ' bluetoothATModeserialSendState = 0;\n' +
- ' }\n' +
- ' if ( (millis() / 1000) % 50 == 10 && bluetoothATModeserialSendState == 0) {\n' +
- ' Serial.println("");\n' +
- ' Serial.println("3. Set up UART configuration: AT+UART=' + baud + ',0,0");\n' +
- ' Serial.print("- ");\n' +
- ' Serial1.write("AT+UART=' + baud + ',0,0\\r\\n");\n' +
- ' bluetoothATModeserialSendState = 1;\n' +
- ' } else if ( (millis() / 1000) % 50 == 11) {\n' +
- ' bluetoothATModeserialSendState = 0;\n' +
- ' }\n' +
- ' if ( (millis() / 1000) % 50 == 13 && bluetoothATModeserialSendState == 0) {\n' +
- ' Serial.println("");\n' +
- ' Serial.println("4. Set up pairing mode, prevent outside connection: AT+CMODE=0");\n' +
- ' Serial.print("- ");\n' +
- ' Serial1.write("AT+CMODE=0\\r\\n");\n' +
- ' bluetoothATModeserialSendState = 1;\n' +
- ' } else if ( (millis() / 1000) % 50 == 14) {\n' +
- ' bluetoothATModeserialSendState = 0;\n' +
- ' }\n' +
- ' if ( (millis() / 1000) % 50 == 16 && bluetoothATModeserialSendState == 0) {\n' +
- ' Serial.println("");\n' +
- ' Serial.println("5. Set up pairing mode, set as Slave Mode: AT+ROLE=0");\n' +
- ' Serial.print("- ");\n' +
- ' Serial1.write("AT+ROLE=0\\r\\n");\n' +
- ' bluetoothATModeserialSendState = 1;\n' +
- ' } else if ( (millis() / 1000) % 50 == 17) {\n' +
- ' bluetoothATModeserialSendState = 0;\n' +
- ' }\n' +
- ' if ( (millis() / 1000) % 50 == 18 && bluetoothATModeserialSendState == 0) {\n' +
- ' Serial.println("");\n' +
- ' Serial.println("6. Getting MAC address:");\n' +
- ' Serial.print("- ");\n' +
- ' Serial1.write("AT+ADDR\\r\\n");\n' +
- ' bluetoothATModeserialSendState = 1;\n' +
- ' } else if ( (millis() / 1000) % 50 == 19) {\n' +
- ' bluetoothATModeserialSendState = 0;\n' +
- ' }\n' +
- ' if ( (millis() / 1000) % 50 == 21 && bluetoothATModeserialSendState == 0) {\n' +
- ' Serial.println("");\n' +
- ' Serial.println("7. Done, reset bluetooth module to normal state.");\n' +
- ' Serial.print("- ");\n' +
- ' Serial1.write("AT+RESET\\r\\n");\n' +
- ' bluetoothATModeserialSendState = 1;\n' +
- ' } else if ( (millis() / 1000) % 50 == 22) {\n' +
- ' bluetoothATModeserialSendState = 0;\n' +
- ' }\n'
- return code;
- }
- Blockly.Python['bluetooth_at_master'] = function(block) {
- var baud = block.getFieldValue("BAUD");
- var addr = block.getFieldValue("ADDR").replace(/:/g, ",");
- var BT_at_master_decl = 'int bluetoothATModeserialSendState = 0;\n' +
- 'char c = \' \';\n'
- Blockly.Python.addDeclaration("BT_at_master_decl", BT_at_master_decl);
- var BT_at_master_setup = ' Serial.begin(' + baud + ');\n' +
- ' Serial1.begin(38400);\n';
- Blockly.Python.addSetup("BT_at_master_setup", BT_at_master_setup);
- var BT_at_master_fun = 'void bluetoothATModeInteractive() {\n' +
- ' while (Serial1.available() > 0) {\n' +
- ' c = Serial1.read();\n' +
- ' Serial.write(c);\n' +
- ' }\n' +
- ' while (Serial.available() > 0) {\n' +
- ' c = Serial.read();\n' +
- ' Serial1.write(c);\n' +
- ' }\n' +
- '}\n';
- Blockly.Python.addFunction("BT_at_master_fun", BT_at_master_fun)
- var code = ' bluetoothATModeInteractive();\n' +
- ' // Master\n' +
- ' if ( (millis() / 1000) % 50 == 5 && bluetoothATModeserialSendState == 0) {\n' +
- ' Serial.println(" ____ _ _ _ _ ");\n' +
- ' Serial.println(" | __ ) | | _ _ ___ | |_ ___ ___ | |_ | |__ ");\n' +
- ' Serial.println(" | _ \\ | | | | | | / _ \\ | __| / _ \\ / _ \\ | __| | \'_ \\ ");\n' +
- ' Serial.println(" | |_) | | | | |_| | | __/ | |_ | (_) | | (_) | | |_ | | | |");\n' +
- ' Serial.println(" |____/ |_| \\__,_| \\___| \\__| \\___/ \\___/ \\__| |_| |_|");\n' +
- ' Serial.println("");\n' +
- ' Serial.println(" __ __ _ ");\n' +
- ' Serial.println(" | \\/ | __ _ ___ | |_ ___ _ __ ");\n' +
- ' Serial.println(" | |\\/| | / _` | / __| | __| / _ \\ | \'__|");\n' +
- ' Serial.println(" | | | | | (_| | \\__ \\ | |_ | __/ | | ");\n' +
- ' Serial.println(" |_| |_| \\__,_| |___/ \\__| \\___| |_| ");\n' +
- ' Serial.println("");\n' +
- ' Serial.println("");\n' +
- ' Serial.println("1. Testing communication:");\n' +
- ' Serial.print("- ");\n' +
- ' Serial1.write("AT\\r\\n");\n' +
- ' bluetoothATModeserialSendState = 1;\n' +
- ' } else if ( (millis() / 1000) % 50 == 6) {\n' +
- ' bluetoothATModeserialSendState = 0;\n' +
- ' }\n' +
- ' if ( (millis() / 1000) % 50 == 7 && bluetoothATModeserialSendState == 0) {\n' +
- ' Serial.println("");\n' +
- ' Serial.println("2. Reset previous configuration:");\n' +
- ' Serial.print("- ");\n' +
- ' Serial1.write("AT+ORGL\\r\\n");\n' +
- ' bluetoothATModeserialSendState = 1;\n' +
- ' } else if ( (millis() / 1000) % 50 == 8) {\n' +
- ' bluetoothATModeserialSendState = 0;\n' +
- ' }\n' +
- ' if ( (millis() / 1000) % 50 == 10 && bluetoothATModeserialSendState == 0) {\n' +
- ' Serial.println("");\n' +
- ' Serial.println("3. Set up UART configuration: AT+UART=' + baud + ',0,0");\n' +
- ' Serial.print("- ");\n' +
- ' Serial1.write("AT+UART=' + baud + ',0,0\\r\\n");\n' +
- ' bluetoothATModeserialSendState = 1;\n' +
- ' } else if ( (millis() / 1000) % 50 == 11) {\n' +
- ' bluetoothATModeserialSendState = 0;\n' +
- ' }\n' +
- ' if ( (millis() / 1000) % 50 == 13 && bluetoothATModeserialSendState == 0) {\n' +
- ' Serial.println("");\n' +
- ' Serial.println("4. Set up pairing mode, prevent outside connection: AT+CMODE=0");\n' +
- ' Serial.print("- ");\n' +
- ' Serial1.write("AT+CMODE=0\\r\\n");\n' +
- ' bluetoothATModeserialSendState = 1;\n' +
- ' } else if ( (millis() / 1000) % 50 == 14) {\n' +
- ' bluetoothATModeserialSendState = 0;\n' +
- ' }\n' +
- ' if ( (millis() / 1000) % 50 == 16 && bluetoothATModeserialSendState == 0) {\n' +
- ' Serial.println("");\n' +
- ' Serial.println("5. Set up pairing mode, set as Master Mode: AT+ROLE=1");\n' +
- ' Serial.print("- ");\n' +
- ' Serial1.write("AT+ROLE=1\\r\\n");\n' +
- ' bluetoothATModeserialSendState = 1;\n' +
- ' } else if ( (millis() / 1000) % 50 == 17) {\n' +
- ' bluetoothATModeserialSendState = 0;\n' +
- ' }\n' +
- ' if ( (millis() / 1000) % 50 == 18 && bluetoothATModeserialSendState == 0) {\n' +
- ' Serial.println("");\n' +
- ' Serial.println("6. Binding slave device:");\n' +
- ' Serial.print("- ");\n' +
- ' Serial1.write("AT+BIND=' + addr + '\\r\\n");\n' +
- ' bluetoothATModeserialSendState = 1;\n' +
- ' } else if ( (millis() / 1000) % 50 == 19) {\n' +
- ' bluetoothATModeserialSendState = 0;\n' +
- ' }\n' +
- ' if ( (millis() / 1000) % 50 == 21 && bluetoothATModeserialSendState == 0) {\n' +
- ' Serial.println("");\n' +
- ' Serial.println("7. Done, reset bluetooth module to normal state.");\n' +
- ' Serial.print("- ");\n' +
- ' Serial1.write("AT+RESET\\r\\n");\n' +
- ' bluetoothATModeserialSendState = 1;\n' +
- ' } else if ( (millis() / 1000) % 50 == 22) {\n' +
- ' bluetoothATModeserialSendState = 0;\n' +
- ' }\n'
- return code;
- }
- Blockly.Python['bluetooth_at_interaction'] = function(block) {
- var dropdown_name = block.getFieldValue('bluetooth_at_interaction_baud');
- Blockly.Python.addDeclaration('bluetooth_at_interaction_declare', 'char c = \' \';\n');
- Blockly.Python.addSetup('bluetooth_at_interaction_setup', '' +
- 'Serial.begin(' + dropdown_name + ');\n' +
- 'Serial1.begin(' + dropdown_name + ');\n' +
- '');
- Blockly.Python.addFunction('bluetooth_at_interaction_function', '' +
- 'void _bluetoothATmode() {\n' +
- ' if (Serial1.available())\n' +
- ' Serial.write(Serial1.read());\n' +
- ' if (Serial.available())\n' +
- ' Serial1.write(Serial.read());\n' +
- '}\n' +
- '');
- var code = '_bluetoothATmode();\n';
- return code;
- };
|