From 85222ba9e9bd07ee6ae1ebd82968dc876254287c Mon Sep 17 00:00:00 2001
From: Irene-Maxine <114802521+Irene-Maxine@users.noreply.github.com>
Date: Thu, 29 May 2025 22:59:01 +0800
Subject: [PATCH] =?UTF-8?q?=E4=B8=8D=E5=90=8C=E6=9D=BF=E5=8D=A1=E4=B8=8D?=
=?UTF-8?q?=E5=90=8C=E7=94=9F=E6=88=90=E7=9A=84=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../micropython/blocks/ai_local.js | 12 +-
.../micropython/blocks/display_onboard.js | 125 +++++-------------
.../micropython/generators/ai_local.js | 10 +-
.../micropython/generators/display_onboard.js | 55 ++++----
.../micropython_esp32s3/template.xml | 67 +++++++++-
common/msg/blockly/en.js | 26 +++-
common/msg/blockly/zh-hans.js | 4 +-
common/msg/blockly/zh-hant.js | 26 +++-
8 files changed, 174 insertions(+), 151 deletions(-)
diff --git a/boards/default_src/micropython/blocks/ai_local.js b/boards/default_src/micropython/blocks/ai_local.js
index 068abe56..459a1efb 100644
--- a/boards/default_src/micropython/blocks/ai_local.js
+++ b/boards/default_src/micropython/blocks/ai_local.js
@@ -237,11 +237,8 @@ export const CI130X_BROADCAST_SYSTEM_TIME = {
init: function () {
this.setColour(AI_LOCAL_VOICE_HUE);
this.appendDummyInput("")
- .appendField(new Blockly.FieldDropdown([
- [Blockly.Msg.MIXLY_DETAILED, "1"],
- [Blockly.Msg.MIXLY_Concise, "0"]
- ]), "cmd")
- .appendField(Blockly.Msg.MIXLY_BROADCAST_SYSTEM_TIME)
+ .appendField(Blockly.Msg.MIXLY_DETAILED + Blockly.Msg.MIXLY_BROADCAST_SYSTEM_TIME);
+ this.appendValueInput('boolean');
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
@@ -295,11 +292,8 @@ export const SCREEN_SHOW_CAM_GRAPH_SHOOT = {
init: function () {
this.setColour(AI_LOCAL_GRAPH_HUE);
this.appendDummyInput()
- .appendField(new Blockly.FieldDropdown([
- [Blockly.Msg.MIXLY_MICROBIT_Turn_on_display,"display"],
- [Blockly.Msg.MIXLY_MICROBIT_Turn_off_display,"display_stop"]
- ]),"control")
.appendField(Blockly.Msg.MIXlY_SCREEN_SHOW_CAM_SHOOT);
+ this.appendValueInput('boolean');
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
diff --git a/boards/default_src/micropython/blocks/display_onboard.js b/boards/default_src/micropython/blocks/display_onboard.js
index 38d9680e..b5c01f7b 100644
--- a/boards/default_src/micropython/blocks/display_onboard.js
+++ b/boards/default_src/micropython/blocks/display_onboard.js
@@ -1,5 +1,5 @@
import * as Blockly from 'blockly/core';
-import { Boards, Profile } from 'mixly';
+import { Boards, Profile, JSFuncs } from 'mixly';
const DISPLAY_ONBOARD_HUE = '#569A98';
@@ -10,13 +10,9 @@ export const display_show_image = {
.setCheck([String, "esp32_image", "List", 'Tuple'])
.appendField(Blockly.Msg.MIXLY_ESP32_SHOW_IMAGE_OR_STRING);
var version = Boards.getSelectedBoardKey()
- if (version == 'micropython:esp32s3:mixgo_nova'||'micropython:esp32s3:mixgo_sant') {
- this.appendDummyInput()
- .appendField( Blockly.Msg.MIXLY_synchronize + ':')
- .appendField(new Blockly.FieldDropdown([
- [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE,"1"],
- [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE,"0"]
- ]),"sync");
+ if (JSFuncs.getPlatform() === 'Python ESP32-S3') {
+ this.appendValueInput('boolean')
+ .appendField( Blockly.Msg.MIXLY_synchronize + ':');
}
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
@@ -43,14 +39,9 @@ export const display_show_image_or_string_delay = {
[Blockly.Msg.MICROPYTHON_DISPLAY_YES, "True"],
[Blockly.Msg.MICROPYTHON_DISPLAY_NO, "False"]
]), 'center')
- var version = Boards.getSelectedBoardKey()
- if (version == 'micropython:esp32s3:mixgo_nova'||'micropython:esp32s3:mixgo_sant') {
- this.appendDummyInput()
- .appendField( Blockly.Msg.MIXLY_synchronize + ':')
- .appendField(new Blockly.FieldDropdown([
- [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE,"1"],
- [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE,"0"]
- ]),"sync");
+ if (JSFuncs.getPlatform() === 'Python ESP32-S3') {
+ this.appendValueInput('boolean')
+ .appendField( Blockly.Msg.MIXLY_synchronize + ':');
}
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
@@ -300,13 +291,9 @@ export const display_shift = {
this.appendDummyInput('')
.appendField(Blockly.Msg.DISPLAY_IMAGE_UNIT)
var version = Boards.getSelectedBoardKey()
- if (version == 'micropython:esp32s3:mixgo_nova'||'micropython:esp32s3:mixgo_sant') {
- this.appendDummyInput()
- .appendField( Blockly.Msg.MIXLY_synchronize + ':')
- .appendField(new Blockly.FieldDropdown([
- [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE,"1"],
- [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE,"0"]
- ]),"sync");
+ if (JSFuncs.getPlatform() === 'Python ESP32-S3') {
+ this.appendValueInput('boolean')
+ .appendField( Blockly.Msg.MIXLY_synchronize + ':');
}
var thisBlock = this;
this.setTooltip(function () {
@@ -397,13 +384,9 @@ export const display_clear = {
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_MICROBIT_Clear_display);
var version = Boards.getSelectedBoardKey()
- if (version == 'micropython:esp32s3:mixgo_nova'||'micropython:esp32s3:mixgo_sant') {
- this.appendDummyInput()
- .appendField( Blockly.Msg.MIXLY_synchronize + ':')
- .appendField(new Blockly.FieldDropdown([
- [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE,"1"],
- [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE,"0"]
- ]),"sync");
+ if (JSFuncs.getPlatform() === 'Python ESP32-S3') {
+ this.appendValueInput('boolean')
+ .appendField( Blockly.Msg.MIXLY_synchronize + ':');
}
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
@@ -1124,13 +1107,9 @@ export const onboard_tft_show_image_xy = {
this.appendValueInput('VAR')
.appendField(Blockly.Msg.HTML_COLOUR);
var version = Boards.getSelectedBoardKey()
- if (version == 'micropython:esp32s3:mixgo_nova'||'micropython:esp32s3:mixgo_sant') {
- this.appendDummyInput()
- .appendField( Blockly.Msg.MIXLY_synchronize + ':')
- .appendField(new Blockly.FieldDropdown([
- [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE,"1"],
- [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE,"0"]
- ]),"sync");
+ if (JSFuncs.getPlatform() === 'Python ESP32-S3') {
+ this.appendValueInput('boolean')
+ .appendField( Blockly.Msg.MIXLY_synchronize + ':');
}
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
@@ -1184,13 +1163,9 @@ export const onboard_tft_show_image_or_string_delay = {
this.appendValueInput('VAR')
.appendField(Blockly.Msg.HTML_COLOUR);
var version = Boards.getSelectedBoardKey()
- if (version == 'micropython:esp32s3:mixgo_nova'||'micropython:esp32s3:mixgo_sant') {
- this.appendDummyInput()
- .appendField( Blockly.Msg.MIXLY_synchronize + ':')
- .appendField(new Blockly.FieldDropdown([
- [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE,"1"],
- [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE,"0"]
- ]),"sync");
+ if (JSFuncs.getPlatform() === 'Python ESP32-S3') {
+ this.appendValueInput('boolean')
+ .appendField( Blockly.Msg.MIXLY_synchronize + ':');
}
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
@@ -1261,12 +1236,8 @@ export const onboard_tft_display_shape_rect = {
//"check": "Number"
},
{
- "name": "sync",
- "options": [
- [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE,"1"],
- [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE,"0"]
- ],
- "type": "field_dropdown"
+ "name": "boolean",
+ "type": "input_value",
}
],
"inputsInline": true,
@@ -1316,12 +1287,8 @@ export const onboard_tft_display_hvline = {
//"check": "Number"
},
{
- "name": "sync",
- "options": [
- [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE,"1"],
- [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE,"0"]
- ],
- "type": "field_dropdown"
+ "name": "boolean",
+ "type": "input_value",
}
],
"inputsInline": true,
@@ -1367,12 +1334,8 @@ export const onboard_tft_display_line = {
//"check": "Number"
},
{
- "name": "sync",
- "options": [
- [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE,"1"],
- [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE,"0"]
- ],
- "type": "field_dropdown"
+ "name": "boolean",
+ "type": "input_value",
}
],
"inputsInline": true,
@@ -1417,13 +1380,9 @@ export const onboard_tft_bright_point = {
this.appendValueInput('VAR')
.appendField(Blockly.Msg.HTML_COLOUR);
var version = Boards.getSelectedBoardKey()
- if (version == 'micropython:esp32s3:mixgo_nova'||'micropython:esp32s3:mixgo_sant') {
- this.appendDummyInput()
- .appendField( Blockly.Msg.MIXLY_synchronize + ':')
- .appendField(new Blockly.FieldDropdown([
- [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE,"1"],
- [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE,"0"]
- ]),"sync");
+ if (JSFuncs.getPlatform() === 'Python ESP32-S3') {
+ this.appendValueInput('boolean')
+ .appendField( Blockly.Msg.MIXLY_synchronize + ':');
}
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
@@ -1438,13 +1397,9 @@ export const onboard_tft_fill = {
this.appendValueInput('VAR')
.appendField(Blockly.Msg.MIXLY_SCREEN_FILL);
var version = Boards.getSelectedBoardKey()
- if (version == 'micropython:esp32s3:mixgo_nova'||'micropython:esp32s3:mixgo_sant') {
- this.appendDummyInput()
- .appendField( Blockly.Msg.MIXLY_synchronize + ':')
- .appendField(new Blockly.FieldDropdown([
- [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE,"1"],
- [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE,"0"]
- ]),"sync");
+ if (JSFuncs.getPlatform() === 'Python ESP32-S3') {
+ this.appendValueInput('boolean')
+ .appendField( Blockly.Msg.MIXLY_synchronize + ':');
}
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
@@ -1572,12 +1527,8 @@ export const onboard_tft_display_shape_circle = {
//"check": "Number"
},
{
- "name": "sync",
- "options": [
- [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE,"1"],
- [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE,"0"]
- ],
- "type": "field_dropdown"
+ "name": "boolean",
+ "type": "input_value",
}
],
"inputsInline": true,
@@ -1640,13 +1591,9 @@ export const onboard_tft_show_texts = {
this.appendValueInput('VAR')
.appendField(Blockly.Msg.HTML_COLOUR);
var version = Boards.getSelectedBoardKey()
- if (version == 'micropython:esp32s3:mixgo_nova'||'micropython:esp32s3:mixgo_sant') {
- this.appendDummyInput()
- .appendField( Blockly.Msg.MIXLY_synchronize + ':')
- .appendField(new Blockly.FieldDropdown([
- [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE,"1"],
- [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE,"0"]
- ]),"sync");
+ if (JSFuncs.getPlatform() === 'Python ESP32-S3') {
+ this.appendValueInput('boolean')
+ .appendField( Blockly.Msg.MIXLY_synchronize + ':');
}
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
diff --git a/boards/default_src/micropython/generators/ai_local.js b/boards/default_src/micropython/generators/ai_local.js
index c7469b63..891f61d7 100644
--- a/boards/default_src/micropython/generators/ai_local.js
+++ b/boards/default_src/micropython/generators/ai_local.js
@@ -98,13 +98,11 @@ export const CI130X_SET_SYSTEM_CMD_SANT = function (_, generator) {
export const CI130X_BROADCAST_SYSTEM_TIME = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2];
generator.definitions_['import_' + version + '_onboard_asr'] = 'from ' + version + ' import onboard_asr';
- var cmd = this.getFieldValue('cmd');
- var code = 'onboard_asr.play_time(' + cmd + ')\n';
+ var bool = generator.valueToCode(this, 'boolean', generator.ORDER_ATOMIC);
+ var code = 'onboard_asr.play_time(' + bool + ')\n';
return code;
}
-
-
//graph part
export const CREATE_CAMERA = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2];
@@ -126,8 +124,8 @@ export const GET_PICTURE_DATA = function (_, generator) {
}
export const SCREEN_SHOW_CAM_GRAPH_SHOOT = function (_, generator) {
- var con = this.getFieldValue('control');
- var code = 'cam.'+ con +'()\n';
+ var bool = generator.valueToCode(this, 'boolean', generator.ORDER_ATOMIC);
+ var code = 'cam.display('+ bool +')\n';
return code;
}
diff --git a/boards/default_src/micropython/generators/display_onboard.js b/boards/default_src/micropython/generators/display_onboard.js
index cafe26c0..d43aed2c 100644
--- a/boards/default_src/micropython/generators/display_onboard.js
+++ b/boards/default_src/micropython/generators/display_onboard.js
@@ -6,7 +6,7 @@ export const display_show_image = function (_, generator) {
if (JSFuncs.getPlatform() === 'Python ESP32-S3') {
generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft";
var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);
- var s = this.getFieldValue('sync');
+ var s = generator.valueToCode(this, 'boolean', generator.ORDER_ATOMIC);
var code = "onboard_tft.image(" + data + ", color=0xffff,sync="+ s +")\n";
} else {
if (version == "educore") {
@@ -25,9 +25,9 @@ export const display_show_image_or_string_delay = function (_, generator) {
var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);
var space = generator.valueToCode(this, 'space', generator.ORDER_ASSIGNMENT);
var op = this.getFieldValue('center');
- var s = this.getFieldValue('sync');
if (version == "mixgo_sant" || version == "mixgo_nova") {
generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft";
+ var s = generator.valueToCode(this, 'boolean', generator.ORDER_ATOMIC);
var code = "onboard_tft.shows(" + data + ", space=" + space + ', center=' + op + ",sync="+ s +")\n";
return code;
} else if (version == "educore") {
@@ -45,7 +45,7 @@ export const display_show_frame_string = function (_, generator) {
if (version == 'mpython' || version == 'educore') {
generator.definitions_['import_' + version + '_onboard_oled'] = "from " + version + " import onboard_oled";
var code = "onboard_oled.frame(" + data + ")\n";
- } else if (version == 'mixgo_nova'||'mixgo_sant') {
+ } else if (JSFuncs.getPlatform() === 'Python ESP32-S3') {
generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft";
var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);
var code = "onboard_tft.frame(" + data + ", color=0xffff)\n";
@@ -64,7 +64,7 @@ export const display_show_frame_string_delay = function (_, generator) {
generator.definitions_['import_' + version + '_onboard_oled'] = "from " + version + " import onboard_oled";
var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);
var code = "onboard_oled.frame(" + data + ', delay=' + time + ")\n";
- } else if (version == 'mixgo_nova'||'mixgo_sant') {
+ } else if (JSFuncs.getPlatform() === 'Python ESP32-S3') {
generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft";
var code = "onboard_tft.frame(" + data + ', size=5 , delay=' + time + ', color=0xffff)\n';
} else {
@@ -80,7 +80,7 @@ export const display_scroll_string = function (_, generator) {
generator.definitions_['import_' + version + '_onboard_oled'] = "from " + version + " import onboard_oled";
var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);
var code = "onboard_oled.scroll(" + data + ")\n";
- } else if (version == 'mixgo_nova'||'mixgo_sant') {
+ } else if (JSFuncs.getPlatform() === 'Python ESP32-S3') {
generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft";
var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);
var code = "onboard_tft.scroll(" + data + ", color=0xffff)\n";
@@ -100,7 +100,7 @@ export const display_scroll_string_delay = function (_, generator) {
if (version == 'mpython' || version == 'educore') {
generator.definitions_['import_' + version + '_onboard_oled'] = "from " + version + " import onboard_oled";
var code = "onboard_oled.scroll(" + data + ', speed=' + time + ', space=' + space + ")\n";
- } else if (version == 'mixgo_nova'||'mixgo_sant') {
+ } else if (JSFuncs.getPlatform() === 'Python ESP32-S3') {
generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft";
var code = "onboard_tft.scroll(" + data + ', y=0, size=5, speed=' + time + ', space=' + space + ', color=0xffff)\n';
} else {
@@ -143,7 +143,7 @@ export const display_image_builtins = function (block, generator) {
export const display_image_builtins_all = function (block, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2];
- if (version == 'mixgo_nova'||'mixgo_sant') {
+ if (JSFuncs.getPlatform() === 'Python ESP32-S3') {
const PIN_VALUE = block.getFieldValue('image');
const data = PIN_VALUE.split('.');
if (data.length !== 2) {
@@ -255,9 +255,9 @@ export const display_clear = function (block, generator) {
if (version == 'mpython') {
generator.definitions_['import_' + version + '_onboard_oled'] = "from " + version + " import onboard_oled";
var code = 'onboard_oled.fill(0)\n' + 'onboard_oled.show()\n';
- } else if (version == 'mixgo_nova'||'mixgo_sant') {
+ } else if (JSFuncs.getPlatform() === 'Python ESP32-S3') {
generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft";
- var s = this.getFieldValue('sync');
+ var s = generator.valueToCode(this, 'boolean', generator.ORDER_ATOMIC);
var code = 'onboard_tft.fill(0,sync='+s+')\n';
} else {
generator.definitions_['import_' + version + '_onboard_matrix'] = "from " + version + " import onboard_matrix";
@@ -298,11 +298,11 @@ export const display_shift = function (a, generator) {
var op = a.getFieldValue("OP");
var value = generator.valueToCode(a, 'val', generator.ORDER_ATOMIC);
var code = 'onboard_oled.' + op + '(' + value + ')\n';
- } else if (version == 'mixgo_nova'||'mixgo_sant') {
+ } else if (JSFuncs.getPlatform() === 'Python ESP32-S3') {
generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft";
var op = a.getFieldValue("OP");
var value = generator.valueToCode(a, 'val', generator.ORDER_ATOMIC);
- var s = this.getFieldValue('sync');
+ var s = generator.valueToCode(this, 'boolean', generator.ORDER_ATOMIC);
var code = 'onboard_tft.' + op + '(' + value + ',sync='+ s +')\n';
} else {
generator.definitions_['import_' + version + '_onboard_matrix'] = "from " + version + " import onboard_matrix";
@@ -326,7 +326,7 @@ export const display_get_pixel = function (block, generator) {
var value_x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC);
var value_y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC);
var code = 'onboard_oled.pixel(int(' + value_x + '), int(' + value_y + '))';
- } else if (version == 'mixgo_nova'||'mixgo_sant') {
+ } else if (JSFuncs.getPlatform() === 'Python ESP32-S3') {
generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft";
var value_x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC);
var value_y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC);
@@ -343,7 +343,7 @@ export const display_get_pixel = function (block, generator) {
export const display_bright_point = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2];
- if (version == 'mixgo_nova'||'mixgo_sant') {
+ if (JSFuncs.getPlatform() === 'Python ESP32-S3') {
generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft";
var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);
var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);
@@ -360,7 +360,7 @@ export const display_bright_point = function (_, generator) {
export const display_get_screen_pixel = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2];
- if (version == 'mixgo_nova'||'mixgo_sant') {
+ if (JSFuncs.getPlatform() === 'Python ESP32-S3') {
generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft";
var code = 'onboard_tft.get_brightness()';
} else {
@@ -372,7 +372,7 @@ export const display_get_screen_pixel = function (_, generator) {
export const display_bright_screen = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2];
- if (version == 'mixgo_nova'||'mixgo_sant') {
+ if (JSFuncs.getPlatform() === 'Python ESP32-S3') {
generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft";
var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);
var code = 'onboard_tft.set_brightness(' + x + ')\n';
@@ -837,7 +837,7 @@ export const onboard_tft_show_image_xy = function (_, generator) {
var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);
var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT);
var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
- var s = this.getFieldValue('sync');
+ var s = generator.valueToCode(this, 'boolean', generator.ORDER_ATOMIC);
if (color.slice(0, 2) == "0x") {
var code = "onboard_tft.image(" + data + ', x=' + x + ', y=' + y + ', size=' + size + ', color='+ color +",sync=" + s +")\n";
} else {
@@ -871,7 +871,7 @@ export const onboard_tft_show_image_or_string_delay = function (_, generator) {
var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT);
var space = generator.valueToCode(this, 'space', generator.ORDER_ASSIGNMENT);
var op = this.getFieldValue('center');
- var s = this.getFieldValue('sync');
+ var s = generator.valueToCode(this, 'boolean', generator.ORDER_ATOMIC);
var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
if (color.slice(0, 2) == "0x") {
var code = "onboard_tft.shows(" + data + ', x=' + x + ', y=' + y + ', size=' + size + ', space=' + space + ', center=' + op + ', color=' + color + ",sync=" + s + ")\n";
@@ -917,7 +917,7 @@ export const onboard_tft_display_shape_rect = function (block, generator) {
var h = generator.valueToCode(block, 'h', generator.ORDER_ATOMIC);
var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
var shape = block.getFieldValue('shape');
- var s = this.getFieldValue('sync');
+ var s = generator.valueToCode(this, 'boolean', generator.ORDER_ATOMIC);
if (color.slice(0, 2) == "0x") {
var code = 'onboard_tft.' + shape + '(' + x + ', ' + y + ', ' + w + ', ' + h + ', ' + color + ',sync=' + s +')\n';
} else {
@@ -940,7 +940,7 @@ export const onboard_tft_display_hvline = function (block, generator) { //水平
var var_length = generator.valueToCode(block, 'length', generator.ORDER_ATOMIC);
var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
var hv = block.getFieldValue('dir_h_v');
- var s = this.getFieldValue('sync');
+ var s = generator.valueToCode(this, 'boolean', generator.ORDER_ATOMIC);
if (color.slice(0, 2) == "0x") {
var code = 'onboard_tft.' + (('0' == hv) ? 'v' : 'h') + 'line(' + x + ', ' + y + ', ' + var_length + ', ' + color + ',sync=' + s +')\n';
} else {
@@ -963,7 +963,7 @@ export const onboard_tft_display_line = function (block, generator) {
var x2 = generator.valueToCode(block, 'x2', generator.ORDER_ATOMIC);
var y2 = generator.valueToCode(block, 'y2', generator.ORDER_ATOMIC);
var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
- var s = this.getFieldValue('sync');
+ var s = generator.valueToCode(this, 'boolean', generator.ORDER_ATOMIC);
if (color.slice(0, 2) == "0x") {
var code = 'onboard_tft.line(' + x1 + ', ' + y1 + ', ' + x2 + ', ' + y2 + ', ' + color + ',sync=' + s +')\n';
} else {
@@ -993,7 +993,7 @@ export const onboard_tft_bright_point = function (_, generator) {
var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);
var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);
var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
- var s = this.getFieldValue('sync');
+ var s = generator.valueToCode(this, 'boolean', generator.ORDER_ATOMIC);
if (color.slice(0, 2) == "0x") {
var code = 'onboard_tft.pixel(int(' + x + '), int(' + y + '), ' + color + ',sync='+ s + ")\n";
} else {
@@ -1012,7 +1012,7 @@ export const onboard_tft_fill = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2]
generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft";
var color = generator.valueToCode(this, 'VAR', generator.ORDER_ASSIGNMENT);
- var s = this.getFieldValue('sync');
+ var s = generator.valueToCode(this, 'boolean', generator.ORDER_ATOMIC);
if (color.slice(0, 2) == "0x") {
var code = 'onboard_tft.fill(' + color + ',sync=' + s +')\n';
} else {
@@ -1103,7 +1103,7 @@ export const onboard_tft_display_shape_circle = function (block, generator) {
var R = generator.valueToCode(block, 'r', generator.ORDER_ATOMIC);
var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
var shape = block.getFieldValue('shape');
- var s = this.getFieldValue('sync');
+ var s = generator.valueToCode(this, 'boolean', generator.ORDER_ATOMIC);
if (color.slice(0, 2) == "0x") {
var code = 'onboard_tft.ellipse(' + x + ', ' + y + ', ' + R + ', ' + R + ', ' + color + ', ' + shape + ',sync=' + s +')\n';
} else {
@@ -1120,7 +1120,7 @@ export const onboard_tft_display_shape_circle = function (block, generator) {
export const draw_pointer = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2]
- if (version == 'mixgo_nova'||'mixgo_sant'){
+ if (JSFuncs.getPlatform() === 'Python ESP32-S3'){
generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft";
var angle = generator.valueToCode(this, 'angle', generator.ORDER_ASSIGNMENT);
var code = "onboard_tft.pointern(angle=" + angle + ")\n";
@@ -1160,7 +1160,7 @@ export const onboard_tft_show_texts = function (_, generator) {
var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT);
var size = generator.valueToCode(this, 'size', generator.ORDER_ASSIGNMENT);
var color = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
- var s = this.getFieldValue('sync');
+ var s = generator.valueToCode(this, 'boolean', generator.ORDER_ATOMIC);
if (color.slice(0, 2) == "0x") {
var code = "onboard_tft.texts(" + data + ', x=' + x + ', y=' + y + ', size=' + size + ', color='+ color +",sync=" + s +")\n";
} else {
@@ -1180,11 +1180,6 @@ export const onboard_tft_show_texts = function (_, generator) {
*/
export const onboard_tft_show_image = display_show_image;
-/**
- * @deprecated To be removed in the future
- */
-export const onboard_tft_scroll_string = display_scroll_string;
-
/**
* @deprecated To be removed in the future
*/
diff --git a/boards/default_src/micropython_esp32s3/template.xml b/boards/default_src/micropython_esp32s3/template.xml
index ebe8191b..dc25f438 100644
--- a/boards/default_src/micropython_esp32s3/template.xml
+++ b/boards/default_src/micropython_esp32s3/template.xml
@@ -1835,6 +1835,10 @@
+
+
+
+
@@ -1863,6 +1867,10 @@
255,255,0
+
+
+
+
@@ -1875,6 +1883,10 @@
0
+
+
+
+
@@ -1910,6 +1922,10 @@
255,255,0
+
+
+
+
@@ -1940,6 +1956,10 @@
255,255,0
+
+
+
+
@@ -2056,6 +2076,10 @@
255,255,0
+
+
+
+
@@ -2086,6 +2110,10 @@
255,255,0
+
+
+
+
@@ -2116,6 +2144,10 @@
255,255,0
+
+
+
+
@@ -2141,6 +2173,10 @@
255,255,0
+
+
+
+
@@ -2148,6 +2184,10 @@
1
+
+
+
+
@@ -2180,6 +2220,10 @@
255,255,0
+
+
+
+
@@ -2198,8 +2242,17 @@
255,255,0
+
+
+
+
+
+
+
+
+
+
-
@@ -2339,7 +2392,12 @@
-
+
+
+
+
+
+
@@ -2486,6 +2544,11 @@
+
+
+
+
+
diff --git a/common/msg/blockly/en.js b/common/msg/blockly/en.js
index 893c30be..73e1e130 100644
--- a/common/msg/blockly/en.js
+++ b/common/msg/blockly/en.js
@@ -3936,18 +3936,32 @@ En.MIXlY_SCREEN_SHOW_CAM_SHOOT = 'Display Camera Capture on Screen';
En.MIXlY_STOP_SCREEN_DISPLAY = 'Turn Off Real-Time LCD Display of Camera Capture';
En.MIXLY_RECOGNITION = 'Detection';
En.MIXLY_GET_QR_CODE_RECOGNITION_RESULT = 'Get QR Code Detection Result';
-En.MIXLY_GET_QR_CODE_RECOGNITION_RESULT_TOOLTIP = 'Returns None if no result is detected. If detected, a green square appears in the top-left corner, and the QR code information is returned.';
+// En.MIXLY_GET_QR_CODE_RECOGNITION_RESULT_TOOLTIP = 'Returns None if no result is detected. If detected, a green square appears in the top-left corner, and the QR code information is returned.';
En.COLOUR_RGB_GREY = "Gray";
En.MIXLY_CUSTOM_STUDY = "Custom Learning";
-En.MIXLY_GET_COLOR_DETECTION_RESULT = 'Get Color Detection Result';
+// En.MIXLY_GET_COLOR_DETECTION_RESULT = 'Get Color Detection Result';
En.MIXLY_GET_COLOR_DETECTION_RESULT_TOOLTIP = 'Get color detection results, returning the number of rectangular regions and their top-left and bottom-right coordinates (4 values).';
En.MIXLY_CAT_FACE = 'Cat Face';
En.MIXLY_GET_CAT_FACE_DETECTION_RESULT = 'Get Cat Face Detection Result';
En.MIXLY_GET_CAT_FACE_DETECTION_RESULT_TOOLTIP = 'Get cat face detection results, returning the number of rectangular regions and their top-left and bottom-right coordinates (4 values).';
-En.MIXLY_GET_PEOPLE_FACE_DETECTION_RESULT = 'Get Face Detection Result';
-En.MIXLY_GET_PEOPLE_FACE_DETECTION_RESULT_TOOLTIP = 'Get face detection results, returning the number of rectangular regions, their bounding box coordinates, and five key facial landmarks. Explanation: v[0]: number of faces; v[1-4]: top-left and bottom-right coordinates; v[5-14]: left eye, right eye, nose, left mouth corner, right mouth corner coordinates.';
-En.MIXLY_GET_PEOPLE_FACE_RECOGNITION_RESULT = 'Get Face Recognition Result';
-En.MIXLY_GET_PEOPLE_FACE_RECOGNITION_RESULT_TOOLTIP = 'Get face recognition results, returning face ID (starting from 1), rectangular regions, and corresponding 5-point coordinates. Explanation: v[0]: number of faces; v[1-4]: top-left and bottom-right coordinates; v[5-14]: left eye, right eye, nose, left mouth corner, right mouth corner coordinates.';
+// En.MIXLY_GET_PEOPLE_FACE_DETECTION_RESULT = 'Get Face Detection Result';
+// En.MIXLY_GET_PEOPLE_FACE_DETECTION_RESULT_TOOLTIP = 'Get face detection results, returning the number of rectangular regions, their bounding box coordinates, and five key facial landmarks. Explanation: v[0]: number of faces; v[1-4]: top-left and bottom-right coordinates; v[5-14]: left eye, right eye, nose, left mouth corner, right mouth corner coordinates.';
+// En.MIXLY_GET_PEOPLE_FACE_RECOGNITION_RESULT = 'Get Face Recognition Result';
+// En.MIXLY_GET_PEOPLE_FACE_RECOGNITION_RESULT_TOOLTIP = 'Get face recognition results, returning face ID (starting from 1), rectangular regions, and corresponding 5-point coordinates. Explanation: v[0]: number of faces; v[1-4]: top-left and bottom-right coordinates; v[5-14]: left eye, right eye, nose, left mouth corner, right mouth corner coordinates.';
En.FACE_ENROLL = 'Enroll Face';
En.MIXLY_DELETE_PEOPLE_FACE_ID = 'Delete Face ID Information';
+En.MIXLY_GET_PICTURE_DATA_TOOLTIP = 'Return the image data (width, height, data)';
+En.MIXLY_HOW_MUCH = 'How many';
+En.MIXLY_Pixel_block = 'Pixel block';
+En.MIXLY_KEYPOINT = 'Keypoint';
+En.MIXLY_LEFT_EYE = 'Left eye';
+En.MIXLY_RIGHT_EYE = 'Right eye';
+En.MIXLY_NOSE = 'Nose';
+En.MIXLY_LEFT_MOUSE_CORNER = 'Left corner of mouth';
+En.MIXLY_RIGHT_MOUSE_CORNER = 'Right corner of mouth';
+En.MIXLY_RECOGNITION_RECGNITION = 'Recognition';
+En.MIXLY_synchronize = 'Synchronize';
+En.MIXLY_Display_long_text = 'Display long text';
+En.MIXLY_BROADCAST_SYSTEM_TIME = 'Broadcast system time';
+En.MIXLY_DETAILED = 'Detailed';
})();
diff --git a/common/msg/blockly/zh-hans.js b/common/msg/blockly/zh-hans.js
index 0c815586..91c124de 100644
--- a/common/msg/blockly/zh-hans.js
+++ b/common/msg/blockly/zh-hans.js
@@ -4092,7 +4092,7 @@ ZhHans.MIXLY_CAL_TO_ALTITUDE = '计算获取海拔';
ZhHans.MIXLY_SHOOTING_SIZE = '拍摄尺寸';
ZhHans.MIXLY_SHOOT_AND_SAVE_PICTURE = '拍摄照片并保存';
ZhHans.MIXLY_GET_PICTURE_DATA = '获取图像数据';
-ZhHans.MIXlY_SCREEN_SHOW_CAM_SHOOT = '屏幕显示摄像头采集图像';
+ZhHans.MIXlY_SCREEN_SHOW_CAM_SHOOT = '屏幕实时显示摄像头采集图像';
ZhHans.MIXLY_RECOGNITION = '检测';
ZhHans.MIXLY_GET_QR_CODE_RECOGNITION_RESULT = '获取二维码检测结果';
// ZhHans.MIXLY_GET_QR_CODE_RECOGNITION_RESULT_TOOLTIP = '无检测结果返回None,有结果左上角出现绿色小方块,并返回二维码信息。'
@@ -4110,7 +4110,6 @@ ZhHans.MIXLY_GET_CAT_FACE_DETECTION_RESULT_TOOLTIP = '获取猫脸检测结果
ZhHans.FACE_ENROLL = '录入人脸';
ZhHans.MIXLY_DELETE_PEOPLE_FACE_ID = '删除人脸ID信息';
ZhHans.MIXLY_GET_PICTURE_DATA_TOOLTIP = '返回图像的(宽,高,数据)';
-// ZhHans.MIXLY_EMOTION_DETEECTION = '情绪检测';
ZhHans.MIXLY_HOW_MUCH = '有几个';
ZhHans.MIXLY_Pixel_block = '像素块';
ZhHans.MIXLY_KEYPOINT = '关键点';
@@ -4124,5 +4123,4 @@ ZhHans.MIXLY_synchronize = '实时刷新';
ZhHans.MIXLY_Display_long_text = '显示长文本';
ZhHans.MIXLY_BROADCAST_SYSTEM_TIME = '播报系统时间';
ZhHans.MIXLY_DETAILED = '详细地';
-ZhHans.MIXLY_Concise = '简洁地';
})();
\ No newline at end of file
diff --git a/common/msg/blockly/zh-hant.js b/common/msg/blockly/zh-hant.js
index ee495693..1bf8a03f 100644
--- a/common/msg/blockly/zh-hant.js
+++ b/common/msg/blockly/zh-hant.js
@@ -4090,18 +4090,32 @@ ZhHant.MIXlY_SCREEN_SHOW_CAM_SHOOT = '屏幕顯示攝像頭採集圖像';
ZhHant.MIXlY_STOP_SCREEN_DISPLAY = '關閉攝像頭採集圖像LCD實時顯示';
ZhHant.MIXLY_RECOGNITION = '檢測';
ZhHant.MIXLY_GET_QR_CODE_RECOGNITION_RESULT = '獲取二維碼檢測結果';
-ZhHant.MIXLY_GET_QR_CODE_RECOGNITION_RESULT_TOOLTIP = '無檢測結果返回None,有結果左上角出現綠色小方塊,並返回二維碼信息。'
+// ZhHant.MIXLY_GET_QR_CODE_RECOGNITION_RESULT_TOOLTIP = '無檢測結果返回None,有結果左上角出現綠色小方塊,並返回二維碼信息。'
ZhHant.COLOUR_RGB_GREY = "灰色";
ZhHant.MIXLY_CUSTOM_STUDY = "自定義學習";
-ZhHant.MIXLY_GET_COLOR_DETECTION_RESULT = '獲取顏色檢測結果';
+// ZhHant.MIXLY_GET_COLOR_DETECTION_RESULT = '獲取顏色檢測結果';
ZhHant.MIXLY_GET_COLOR_DETECTION_RESULT_TOOLTIP ='獲取顏色採集結果,返回矩形區域數量和對應的左上角和右下角坐標(4個值)。';
ZhHant.MIXLY_CAT_FACE = '貓臉';
ZhHant.MIXLY_GET_CAT_FACE_DETECTION_RESULT = '獲取貓臉檢測結果';
ZhHant.MIXLY_GET_CAT_FACE_DETECTION_RESULT_TOOLTIP = '獲取貓臉檢測結果,返回矩形區域數量和對應的左上角和右下角坐標(4個值)。';
-ZhHant.MIXLY_GET_PEOPLE_FACE_DETECTION_RESULT = '獲取人臉檢測結果';
-ZhHant.MIXLY_GET_PEOPLE_FACE_DETECTION_RESULT_TOOLTIP = '獲取人臉檢測結果,返回矩形區域數量、對應的矩形框左邊以及五點關鍵特徵值。說明:v[0]:人臉數量;v[1-4]:矩形左上角和右下角坐標;v[5-14]:左眼、右眼、鼻子、左嘴角、右嘴角坐標。';
-ZhHant.MIXLY_GET_PEOPLE_FACE_RECOGNITION_RESULT = '獲取人臉識別結果';
-ZhHant.MIXLY_GET_PEOPLE_FACE_RECOGNITION_RESULT_TOOLTIP = '獲取人臉識別結果,獲取人識別結果,返回人臉ID(ID從1開始)、矩形區域和和對應的5點坐標。說明:v[0]:人臉數量;v[1-4]:矩形左上角和右下角坐標;v[5-14]:左眼、右眼、鼻子、左嘴角、右嘴角坐標。';
+// ZhHant.MIXLY_GET_PEOPLE_FACE_DETECTION_RESULT = '獲取人臉檢測結果';
+// ZhHant.MIXLY_GET_PEOPLE_FACE_DETECTION_RESULT_TOOLTIP = '獲取人臉檢測結果,返回矩形區域數量、對應的矩形框左邊以及五點關鍵特徵值。說明:v[0]:人臉數量;v[1-4]:矩形左上角和右下角坐標;v[5-14]:左眼、右眼、鼻子、左嘴角、右嘴角坐標。';
+// ZhHant.MIXLY_GET_PEOPLE_FACE_RECOGNITION_RESULT = '獲取人臉識別結果';
+// ZhHant.MIXLY_GET_PEOPLE_FACE_RECOGNITION_RESULT_TOOLTIP = '獲取人臉識別結果,獲取人識別結果,返回人臉ID(ID從1開始)、矩形區域和和對應的5點坐標。說明:v[0]:人臉數量;v[1-4]:矩形左上角和右下角坐標;v[5-14]:左眼、右眼、鼻子、左嘴角、右嘴角坐標。';
ZhHant.FACE_ENROLL = '錄入人臉';
ZhHant.MIXLY_DELETE_PEOPLE_FACE_ID = '刪除人臉ID信息';
+ZhHant.MIXLY_GET_PICTURE_DATA_TOOLTIP = '返回圖像的(寬,高,數據)';
+ZhHant.MIXLY_HOW_MUCH = '有幾個';
+ZhHant.MIXLY_Pixel_block = '像素塊';
+ZhHant.MIXLY_KEYPOINT = '關鍵點';
+ZhHant.MIXLY_LEFT_EYE = '左眼';
+ZhHant.MIXLY_RIGHT_EYE = '右眼';
+ZhHant.MIXLY_NOSE = '鼻子';
+ZhHant.MIXLY_LEFT_MOUSE_CORNER = '左嘴角';
+ZhHant.MIXLY_RIGHT_MOUSE_CORNER = '右嘴角';
+ZhHant.MIXLY_RECOGNITION_RECGNITION = '識別';
+ZhHant.MIXLY_synchronize = '實時刷新';
+ZhHant.MIXLY_Display_long_text = '顯示長文本';
+ZhHant.MIXLY_BROADCAST_SYSTEM_TIME = '播報系統時間';
+ZhHant.MIXLY_DETAILED = '詳細地';
})();
\ No newline at end of file