From 27ff4111814cd207bbcf272f4eff8ac6b0b2e872 Mon Sep 17 00:00:00 2001
From: Irene-Maxine <114802521+Irene-Maxine@users.noreply.github.com>
Date: Thu, 29 May 2025 16:19:33 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9D=BF=E8=BD=BD=E6=99=BA=E8=83=BD+=E6=9D=BF?=
=?UTF-8?q?=E8=BD=BD=E6=98=BE=E7=A4=BA=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 | 16 +--
.../micropython/blocks/display_onboard.js | 102 +++++++++++++++++-
.../micropython/generators/ai_local.js | 12 +--
.../micropython/generators/display_onboard.js | 59 +++++++---
.../micropython_esp32s3/template.xml | 31 +++++-
common/msg/blockly/zh-hans.js | 12 +--
6 files changed, 190 insertions(+), 42 deletions(-)
diff --git a/boards/default_src/micropython/blocks/ai_local.js b/boards/default_src/micropython/blocks/ai_local.js
index 33bfd516..b907ab4a 100644
--- a/boards/default_src/micropython/blocks/ai_local.js
+++ b/boards/default_src/micropython/blocks/ai_local.js
@@ -282,6 +282,10 @@ 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.setPreviousStatement(true);
this.setNextStatement(true);
@@ -289,17 +293,6 @@ export const SCREEN_SHOW_CAM_GRAPH_SHOOT = {
}
};
-export const STOP_SCREEN_DISPLAY = {
- init: function () {
- this.setColour(AI_LOCAL_GRAPH_HUE);
- this.appendDummyInput()
- .appendField(Blockly.Msg.MIXlY_STOP_SCREEN_DISPLAY);
- this.setPreviousStatement(true);
- this.setNextStatement(true);
- this.setInputsInline(true);
- }
-};
-
export const AI_CAMERA_INIT = {
init: function () {
this.setColour(AI_LOCAL_GRAPH_HUE);
@@ -311,7 +304,6 @@ export const AI_CAMERA_INIT = {
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MIXLY_QR_CODE + Blockly.Msg.MIXLY_RECOGNITION, "CODE_DETECTION"],
[Blockly.Msg.MIXLY_COLOR_RECOGNTITION, "COLOR_DETECTION"],
- [Blockly.Msg.MIXLY_EMOTION_DETEECTION, "MOTION_DETECTON"],
[Blockly.Msg.MIXLY_CAT_FACE + Blockly.Msg.MIXLY_RECOGNITION, "CAT_FACE_DETECTION"],
[Blockly.Msg.MIXLY_FACE_CLASSIFIER, "FACE_DETECTION"],
[Blockly.Msg.MIXLY_AipFace, "FACE_RECOGNITION"]
diff --git a/boards/default_src/micropython/blocks/display_onboard.js b/boards/default_src/micropython/blocks/display_onboard.js
index 4847b6c9..38d9680e 100644
--- a/boards/default_src/micropython/blocks/display_onboard.js
+++ b/boards/default_src/micropython/blocks/display_onboard.js
@@ -299,6 +299,15 @@ export const display_shift = {
.setCheck(Number);
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");
+ }
var thisBlock = this;
this.setTooltip(function () {
var mode = thisBlock.getFieldValue('OP');
@@ -387,6 +396,15 @@ export const display_clear = {
this.setColour(DISPLAY_ONBOARD_HUE);
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");
+ }
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setInputsInline(true);
@@ -1241,6 +1259,14 @@ export const onboard_tft_display_shape_rect = {
"name": "VAR",
"type": "input_value",
//"check": "Number"
+ },
+ {
+ "name": "sync",
+ "options": [
+ [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE,"1"],
+ [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE,"0"]
+ ],
+ "type": "field_dropdown"
}
],
"inputsInline": true,
@@ -1288,6 +1314,14 @@ export const onboard_tft_display_hvline = {
"name": "VAR",
"type": "input_value",
//"check": "Number"
+ },
+ {
+ "name": "sync",
+ "options": [
+ [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE,"1"],
+ [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE,"0"]
+ ],
+ "type": "field_dropdown"
}
],
"inputsInline": true,
@@ -1331,6 +1365,14 @@ export const onboard_tft_display_line = {
"name": "VAR",
"type": "input_value",
//"check": "Number"
+ },
+ {
+ "name": "sync",
+ "options": [
+ [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE,"1"],
+ [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE,"0"]
+ ],
+ "type": "field_dropdown"
}
],
"inputsInline": true,
@@ -1374,6 +1416,15 @@ export const onboard_tft_bright_point = {
.appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_PLOT_POINT_Y);
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");
+ }
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setInputsInline(true);
@@ -1385,7 +1436,16 @@ export const onboard_tft_fill = {
init: function () {
this.setColour(DISPLAY_ONBOARD_HUE);
this.appendValueInput('VAR')
- .appendField(Blockly.Msg.MIXLY_SCREEN_FILL)
+ .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");
+ }
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setInputsInline(true);
@@ -1510,6 +1570,14 @@ export const onboard_tft_display_shape_circle = {
"name": "VAR",
"type": "input_value",
//"check": "Number"
+ },
+ {
+ "name": "sync",
+ "options": [
+ [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE,"1"],
+ [Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE,"0"]
+ ],
+ "type": "field_dropdown"
}
],
"inputsInline": true,
@@ -1554,6 +1622,38 @@ export const nova_draw_pointer = {
this.setTooltip(Blockly.Msg.DRAW_POINTER_TOOLTIP);
}
};
+
+export const onboard_tft_show_texts = {
+ init: function () {
+ this.setColour(DISPLAY_ONBOARD_HUE);
+ this.appendValueInput('data')
+ .appendField(Blockly.Msg.MIXLY_Display_long_text);
+ this.appendValueInput("x")
+ .setCheck(Number)
+ .appendField('x');
+ this.appendValueInput("y")
+ .setCheck(Number)
+ .appendField('y');
+ this.appendValueInput("size")
+ .setCheck(Number)
+ .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_NUMBER);
+ 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");
+ }
+ this.setPreviousStatement(true, null);
+ this.setNextStatement(true, null);
+ this.setInputsInline(true);
+ }
+};
+
/**
* @deprecated To be removed in the future
*/
diff --git a/boards/default_src/micropython/generators/ai_local.js b/boards/default_src/micropython/generators/ai_local.js
index c47acf47..70c676e8 100644
--- a/boards/default_src/micropython/generators/ai_local.js
+++ b/boards/default_src/micropython/generators/ai_local.js
@@ -120,12 +120,8 @@ export const GET_PICTURE_DATA = function (_, generator) {
}
export const SCREEN_SHOW_CAM_GRAPH_SHOOT = function (_, generator) {
- var code = 'cam.display()\n';
- return code;
-}
-
-export const STOP_SCREEN_DISPLAY = function (_, generator) {
- var code = 'cam.display_stop()\n';
+ var con = this.getFieldValue('control');
+ var code = 'cam.'+ con +'()\n';
return code;
}
@@ -167,11 +163,11 @@ export const GET_CAT_FACE_DETECTION_NUM = function (_, generator) {
export const GET_CAT_FACE_DETECTION_LOCATION = function (_, generator) {
var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var num = generator.valueToCode(this, 'NO', generator.ORDER_ATOMIC);
- var code = sub + ".cat_detection(,'pos',"+ num +')';
+ var code = sub + ".cat_detection('pos',"+ num +')';
return [code, generator.ORDER_ATOMIC];
}
-export const GET__FACE_DETECTION_NUM = function (_, generator) {
+export const GET_FACE_DETECTION_NUM = function (_, generator) {
var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var code = sub + ".face_detection('len')";
return [code, generator.ORDER_ATOMIC];
diff --git a/boards/default_src/micropython/generators/display_onboard.js b/boards/default_src/micropython/generators/display_onboard.js
index 0fe969e3..dba5eef9 100644
--- a/boards/default_src/micropython/generators/display_onboard.js
+++ b/boards/default_src/micropython/generators/display_onboard.js
@@ -257,7 +257,8 @@ export const display_clear = function (block, generator) {
var code = 'onboard_oled.fill(0)\n' + 'onboard_oled.show()\n';
} else if (version == 'mixgo_nova'||'mixgo_sant') {
generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft";
- var code = 'onboard_tft.fill(0)\n';
+ var s = this.getFieldValue('sync');
+ var code = 'onboard_tft.fill(0,sync='+s+')\n';
} else {
generator.definitions_['import_' + version + '_onboard_matrix'] = "from " + version + " import onboard_matrix";
var code = 'onboard_matrix.fill(0)\n' + 'onboard_matrix.show()\n';
@@ -301,7 +302,8 @@ export const display_shift = function (a, generator) {
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 code = 'onboard_tft.' + op + '(' + value + ')\n';
+ var s = this.getFieldValue('sync');
+ var code = 'onboard_tft.' + op + '(' + value + ',sync='+ s +')\n';
} else {
generator.definitions_['import_' + version + '_onboard_matrix'] = "from " + version + " import onboard_matrix";
var op = a.getFieldValue("OP");
@@ -915,8 +917,9 @@ 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');
if (color.slice(0, 2) == "0x") {
- var code = 'onboard_tft.' + shape + '(' + x + ', ' + y + ', ' + w + ', ' + h + ', ' + color + ')\n';
+ var code = 'onboard_tft.' + shape + '(' + x + ', ' + y + ', ' + w + ', ' + h + ', ' + color + ',sync=' + s +')\n';
} else {
const rgbValues = color.match(/\d+/g);
const r = parseInt(rgbValues[0]);
@@ -924,7 +927,7 @@ export const onboard_tft_display_shape_rect = function (block, generator) {
const b = parseInt(rgbValues[2]);
var rgb = "0x" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, "0");
var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3;
- var code = 'onboard_tft.' + shape + '(' + x + ', ' + y + ', ' + w + ', ' + h + ', 0x' + rgb565.toString(16) + ')\n';
+ var code = 'onboard_tft.' + shape + '(' + x + ', ' + y + ', ' + w + ', ' + h + ', 0x' + rgb565.toString(16) + ',sync=' + s +')\n';
}
return code;
}
@@ -937,8 +940,9 @@ 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');
if (color.slice(0, 2) == "0x") {
- var code = 'onboard_tft.' + (('0' == hv) ? 'v' : 'h') + 'line(' + x + ', ' + y + ', ' + var_length + ', ' + color + ')\n';
+ var code = 'onboard_tft.' + (('0' == hv) ? 'v' : 'h') + 'line(' + x + ', ' + y + ', ' + var_length + ', ' + color + ',sync=' + s +')\n';
} else {
const rgbValues = color.match(/\d+/g);
const r = parseInt(rgbValues[0]);
@@ -946,7 +950,7 @@ export const onboard_tft_display_hvline = function (block, generator) { //水平
const b = parseInt(rgbValues[2]);
var rgb = "0x" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, "0");
var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3;
- var code = 'onboard_tft.' + (('0' == hv) ? 'v' : 'h') + 'line(' + x + ', ' + y + ', ' + var_length + ', 0x' + rgb565.toString(16) + ')\n';
+ var code = 'onboard_tft.' + (('0' == hv) ? 'v' : 'h') + 'line(' + x + ', ' + y + ', ' + var_length + ', 0x' + rgb565.toString(16) + ',sync=' + s +')\n';
}
return code;
}
@@ -959,15 +963,16 @@ 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');
if (color.slice(0, 2) == "0x") {
- var code = 'onboard_tft.line(' + x1 + ', ' + y1 + ', ' + x2 + ', ' + y2 + ', ' + color + ')\n';
+ var code = 'onboard_tft.line(' + x1 + ', ' + y1 + ', ' + x2 + ', ' + y2 + ', ' + color + ',sync=' + s +')\n';
const rgbValues = color.match(/\d+/g);
const r = parseInt(rgbValues[0]);
const g = parseInt(rgbValues[1]);
const b = parseInt(rgbValues[2]);
var rgb = "0x" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, "0");
var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3;
- var code = 'onboard_tft.line(' + x1 + ', ' + y1 + ', ' + x2 + ', ' + y2 + ', 0x' + rgb565.toString(16) + ')\n';
+ var code = 'onboard_tft.line(' + x1 + ', ' + y1 + ', ' + x2 + ', ' + y2 + ', 0x' + rgb565.toString(16) + ',sync=' + s +')\n';
}
return code;
}
@@ -987,8 +992,9 @@ 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');
if (color.slice(0, 2) == "0x") {
- var code = 'onboard_tft.pixel(int(' + x + '), int(' + y + '), ' + color + ")\n";
+ var code = 'onboard_tft.pixel(int(' + x + '), int(' + y + '), ' + color + ',sync='+ s + ")\n";
} else {
const rgbValues = color.match(/\d+/g);
const r = parseInt(rgbValues[0]);
@@ -996,7 +1002,7 @@ export const onboard_tft_bright_point = function (_, generator) {
const b = parseInt(rgbValues[2]);
var rgb = "0x" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, "0");
var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3;
- var code = 'onboard_tft.pixel(int(' + x + '), int(' + y + '), 0x' + rgb565.toString(16) + ")\n";
+ var code = 'onboard_tft.pixel(int(' + x + '), int(' + y + '), 0x' + rgb565.toString(16) + ',sync='+ s + ")\n";
}
return code;
}
@@ -1005,8 +1011,9 @@ 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');
if (color.slice(0, 2) == "0x") {
- var code = 'onboard_tft.fill(' + color + ')\n';
+ var code = 'onboard_tft.fill(' + color + ',sync=' + s +')\n';
} else {
const rgbValues = color.match(/\d+/g);
const r = parseInt(rgbValues[0]);
@@ -1014,7 +1021,7 @@ export const onboard_tft_fill = function (_, generator) {
const b = parseInt(rgbValues[2]);
var rgb = "0x" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, "0");
var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3;
- var code = 'onboard_tft.fill(0x' + rgb565.toString(16) + ')\n';
+ var code = 'onboard_tft.fill(0x' + rgb565.toString(16) + ',sync=' + s + ')\n';
}
return code;
}
@@ -1095,8 +1102,9 @@ 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');
if (color.slice(0, 2) == "0x") {
- var code = 'onboard_tft.ellipse(' + x + ', ' + y + ', ' + R + ', ' + R + ', ' + color + ', ' + shape + ')\n';
+ var code = 'onboard_tft.ellipse(' + x + ', ' + y + ', ' + R + ', ' + R + ', ' + color + ', ' + shape + ',sync=' + s +')\n';
} else {
const rgbValues = color.match(/\d+/g);
const r = parseInt(rgbValues[0]);
@@ -1104,7 +1112,7 @@ export const onboard_tft_display_shape_circle = function (block, generator) {
const b = parseInt(rgbValues[2]);
var rgb = "0x" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, "0");
var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3;
- var code = 'onboard_tft.ellipse(' + x + ', ' + y + ', ' + R + ', ' + R + ', 0x' + rgb565.toString(16) + ', ' + shape + ')\n';
+ var code = 'onboard_tft.ellipse(' + x + ', ' + y + ', ' + R + ', ' + R + ', 0x' + rgb565.toString(16) + ', ' + shape + ',sync=' + s +')\n';
}
return code;
}
@@ -1143,6 +1151,29 @@ export const nova_draw_pointer = function (_, generator) {
return code;
}
+export const onboard_tft_show_texts = function (_, generator) {
+ var version = Boards.getSelectedBoardKey().split(':')[2];
+ generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft";
+ var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT);
+ var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT);
+ 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');
+ if (color.slice(0, 2) == "0x") {
+ var code = "onboard_tft.texts(" + data + ', x=' + x + ', y=' + y + ', size=' + size + ', color='+ color +",sync=" + s +")\n";
+ } else {
+ const rgbValues = color.match(/\d+/g);
+ const r = parseInt(rgbValues[0]);
+ const g = parseInt(rgbValues[1]);
+ const b = parseInt(rgbValues[2]);
+ var rgb = "0x" + ((r << 16) + (g << 8) + b).toString(16).padStart(4, "0");
+ var rgb565 = (rgb & 0xf80000) >> 8 | (rgb & 0xfc00) >> 5 | (rgb & 0xff) >> 3;
+ var code = "onboard_tft.texts(" + data + ', x=' + x + ', y=' + y + ', size=' + size + ', color=0x' + rgb565.toString(16) + ",sync=" + s + ")\n";
+ }
+ return code;
+}
+
/**
* @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 2e6b6b88..6fd5f239 100644
--- a/boards/default_src/micropython_esp32s3/template.xml
+++ b/boards/default_src/micropython_esp32s3/template.xml
@@ -1911,6 +1911,36 @@
+
+
+
+ Mixly
+
+
+
+
+ 0
+
+
+
+
+ 0
+
+
+
+
+ 1
+
+
+
+
+ #ffffff
+
+
+ 255,255,0
+
+
+
@@ -2310,7 +2340,6 @@
-
diff --git a/common/msg/blockly/zh-hans.js b/common/msg/blockly/zh-hans.js
index 3e3a09fa..772e6c3b 100644
--- a/common/msg/blockly/zh-hans.js
+++ b/common/msg/blockly/zh-hans.js
@@ -3689,9 +3689,9 @@ ZhHans.ANALOG = '模拟';
ZhHans.BITBOT = '飞乙';
ZhHans.MIXBOT = '超霸大师';
ZhHans.MICROPYTHON_BITBOT_SHUTDOWN_TOOLTIP = '仅电池供电下,将关机断电。USB供电下,只是关闭电机输出。';
-ZhHans.ONBOARD_TFT_DISPLAY_SHAPE_RECT_MESSAGE0 = '绘制 %1 矩形 %2 x %3 y %4 宽 %5 高 %6 颜色 %7';
-ZhHans.ONBOARD_TFT_DISPLAY_HVLINE_MESSAGE0 = '绘制 %1 线 %2 x %3 y %4 长度%5 颜色 %6';
-ZhHans.mpython_display_line_MESSAGE0 ='绘制 线条%1 x1%2 y1 %3 到 x2 %4 y2 %5 颜色 %6';
+ZhHans.ONBOARD_TFT_DISPLAY_SHAPE_RECT_MESSAGE0 = '绘制 %1 矩形 %2 x %3 y %4 宽 %5 高 %6 颜色 %7 实时刷新: %8';
+ZhHans.ONBOARD_TFT_DISPLAY_HVLINE_MESSAGE0 = '绘制 %1 线 %2 x %3 y %4 长度%5 颜色 %6 实时刷新: %7';
+ZhHans.mpython_display_line_MESSAGE0 ='绘制 线条%1 x1%2 y1 %3 到 x2 %4 y2 %5 颜色 %6 实时刷新: %7';
ZhHans.MIXLY_TOUCH_SLIDE = "滑动触摸";
ZhHans.MIXLY_TOUCH_SLIDE_TOOLTIP = "触摸值,默认接近0,往IO3方向触摸滑动值变大,往IO4方向触摸滑动值变小。";
ZhHans.MIXLY_EXTERN_SONAR = "超声波传感器";
@@ -3705,7 +3705,7 @@ ZhHans.GET_RTCTIME = "读取RTC时间";
ZhHans.SET_TIME = "设置时间";
ZhHans.DRAW_CLOCK = "绘制时钟";
ZhHans.CLEAR_CLOCK = "清除指针";
-ZhHans.ONBOARD_TFT_DISPLAY_SHAPE_CIRCLE_MESSAGE0 = '绘制 %1 圆形 %2 x %3 y %4 半径 %5 颜色 %6';
+ZhHans.ONBOARD_TFT_DISPLAY_SHAPE_CIRCLE_MESSAGE0 = '绘制 %1 圆形 %2 x %3 y %4 半径 %5 颜色 %6 实时刷新: %7';
ZhHans.RETURN_SUCCESS_OR_NOT = "返回是否成功";
ZhHans.MIXLY_MIXBOT_SOUND_SET_LOUDNESS = '设置麦克风音量';
ZhHans.MIXLY_RECORD_AUDIO = '录制音频';
@@ -4093,7 +4093,6 @@ ZhHans.MIXLY_SHOOTING_SIZE = '拍摄尺寸';
ZhHans.MIXLY_SHOOT_AND_SAVE_PICTURE = '拍摄照片并保存';
ZhHans.MIXLY_GET_PICTURE_DATA = '获取图像数据';
ZhHans.MIXlY_SCREEN_SHOW_CAM_SHOOT = '屏幕显示摄像头采集图像';
-ZhHans.MIXlY_STOP_SCREEN_DISPLAY = '关闭摄像头采集图像LCD实时显示';
ZhHans.MIXLY_RECOGNITION = '检测';
ZhHans.MIXLY_GET_QR_CODE_RECOGNITION_RESULT = '获取二维码检测结果';
// ZhHans.MIXLY_GET_QR_CODE_RECOGNITION_RESULT_TOOLTIP = '无检测结果返回None,有结果左上角出现绿色小方块,并返回二维码信息。'
@@ -4111,7 +4110,7 @@ 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_EMOTION_DETEECTION = '情绪检测';
ZhHans.MIXLY_HOW_MUCH = '有几个';
ZhHans.MIXLY_Pixel_block = '像素块';
ZhHans.MIXLY_KEYPOINT = '关键点';
@@ -4122,4 +4121,5 @@ ZhHans.MIXLY_LEFT_MOUSE_CORNER = '左嘴角';
ZhHans.MIXLY_RIGHT_MOUSE_CORNER = '右嘴角';
ZhHans.MIXLY_RECOGNITION_RECGNITION = '识别';
ZhHans.MIXLY_synchronize = '实时刷新';
+ZhHans.MIXLY_Display_long_text = '显示长文本';
})();
\ No newline at end of file