一些板载显示修改

This commit is contained in:
Irene-Maxine
2025-11-20 22:47:53 +08:00
parent 6754e661da
commit 4aa693b7bf
16 changed files with 270 additions and 7 deletions

View File

@@ -72,6 +72,20 @@ export const esp32_music_play_list = {
} }
} }
export const backstage_esp32_music_play_list = {
init: function () {
this.setColour(ACTUATOR_EXTERN_HUE);
this.appendValueInput('SUB')
this.appendValueInput('LIST')
.appendField(Blockly.Msg.MIXLY_BACKSTAGE + Blockly.Msg.MIXLY_ESP32_MUSIC_PLAY_LISTS)
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
this.setTooltip(Blockly.Msg.MIXLY_BACKSTAGE + Blockly.Msg.MIXLY_ESP32_MUSIC_PLAY_LISTS);
}
}
export const esp32_music_set_tempo_extern = { export const esp32_music_set_tempo_extern = {
init: function () { init: function () {
this.setColour(ACTUATOR_EXTERN_HUE); this.setColour(ACTUATOR_EXTERN_HUE);

View File

@@ -349,8 +349,13 @@ export const OPEN_IMAGE = {
['180','180'], ['180','180'],
['270','270'] ['270','270']
]),'angle'); ]),'angle');
this.appendValueInput("w")
.appendField(Blockly.Msg.MIXLY_Enlarge_and_scale_to)
this.appendValueInput("h")
.appendField(Blockly.Msg.MIXLY_High_zoom_level_to)
this.setOutput(true); this.setOutput(true);
this.setInputsInline(true); this.setInputsInline(true);
this.setTooltip(Blockly.Msg.MIXLY_OPEN_IMAGE_TOOLTIP);
} }
}; };

View File

@@ -1607,6 +1607,58 @@ export const onboard_tft_show_texts = {
} }
}; };
export const onboard_tft_show_qrcode = {
init: function () {
this.setColour(DISPLAY_ONBOARD_HUE);
this.appendValueInput('direct')
.appendField(Blockly.Msg.OLED_BITMAP)
.appendField(Blockly.Msg.MIXLY_QR_CODE);
if (JSFuncs.getPlatform() === 'Python ESP32-S3') {
this.appendValueInput('boolean')
.appendField( Blockly.Msg.MIXLY_synchronize);
}
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
}
};
export const onboard_tft_show_qrcode_details = {
init: function () {
this.setColour(DISPLAY_ONBOARD_HUE);
this.appendValueInput('data')
.appendField(Blockly.Msg.OLED_BITMAP)
.appendField(Blockly.Msg.MIXLY_QR_CODE);
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.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_ERROR_RATE)
.appendField(new Blockly.FieldDropdown([
["0","7%"],
["1","15%"],
["2","25%"],
["3","30"]
]),"correct");
this.appendValueInput('VAR')
.appendField(Blockly.Msg.HTML_COLOUR);
if (JSFuncs.getPlatform() === 'Python ESP32-S3') {
this.appendValueInput('boolean')
.appendField( Blockly.Msg.MIXLY_synchronize);
}
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setInputsInline(true);
}
};
/** /**
* @deprecated To be removed in the future * @deprecated To be removed in the future
*/ */

View File

@@ -139,6 +139,14 @@ export const esp32_music_play_list = function (_, generator) {
return code; return code;
} }
export const backstage_esp32_music_play_list = function (_, generator) {
generator.definitions_['import_music'] = 'import music';
var lst = generator.valueToCode(this, 'LIST', generator.ORDER_ASSIGNMENT);
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
var code = v + ".play_thread(" + v + '.' + lst + ")\n";
return code;
}
export const esp32_music_reset_extern = function (_, generator) { export const esp32_music_reset_extern = function (_, generator) {
generator.definitions_['import_music'] = 'import music'; generator.definitions_['import_music'] = 'import music';
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);

View File

@@ -815,7 +815,7 @@ export const record_audio = function (_,generator){
generator.definitions_['import_' + version + '_onboard_bot'] = 'from ' + version + ' import onboard_bot'; generator.definitions_['import_' + version + '_onboard_bot'] = 'from ' + version + ' import onboard_bot';
var str = generator.valueToCode(this, 'str', generator.ORDER_ATOMIC); var str = generator.valueToCode(this, 'str', generator.ORDER_ATOMIC);
var t = generator.valueToCode(this, 'time', generator.ORDER_ATOMIC); var t = generator.valueToCode(this, 'time', generator.ORDER_ATOMIC);
var code = 'onboard_bot.mic_pga('+str+','+ t +')\n'; var code = 'onboard_bot.pcm_record('+str+','+ t +')\n';
return code; return code;
} }

View File

@@ -56,20 +56,22 @@ export const llm_set_callback = function (_, generator) {
var v1 = generator.valueToCode(this, "VAR1", generator.ORDER_NONE) || "None"; var v1 = generator.valueToCode(this, "VAR1", generator.ORDER_NONE) || "None";
var v2 = generator.valueToCode(this, "VAR2", generator.ORDER_NONE) || "None"; var v2 = generator.valueToCode(this, "VAR2", generator.ORDER_NONE) || "None";
var v3 = generator.valueToCode(this, "VAR3", generator.ORDER_NONE) || "None"; var v3 = generator.valueToCode(this, "VAR3", generator.ORDER_NONE) || "None";
var a0 = generator.valueToCode(this, "ADD0", generator.ORDER_NONE) || "None"; // var a0 = generator.valueToCode(this, "ADD0", generator.ORDER_NONE) || "None";
var callback = generator.variableDB_.getName( var callback = generator.variableDB_.getName(
generator.valueToCode(this, "callback", generator.ORDER_NONE) || "None", generator.valueToCode(this, "callback", generator.ORDER_NONE) || "None",
Blockly.Procedures.NAME_TYPE Blockly.Procedures.NAME_TYPE
); );
var code = new Array(this.itemCount_); var code = new Array(this.itemCount_);
var default_value = '0'; var default_value = "()";
for (var n = 0; n < this.itemCount_; n++) { for (var n = 0; n < this.itemCount_; n++) {
code[n] = generator.valueToCode(this, 'ADD' + n, generator.ORDER_NONE) || default_value; code[n] = generator.valueToCode(this, 'ADD' + n, generator.ORDER_NONE) || default_value;
} }
if (this.itemCount_ > 1){ if (this.itemCount_ > 1){
var code = v1 +'.function_call(' + callback + ', ' + v2 + ', ' + v3 + ', (' + code.join(', ') +'))\n'; var code = v1 +'.function_call(' + callback + ', ' + v2 + ', ' + v3 + ', (' + code.join(', ') +'))\n';
}else{ }else if(this.itemCount_ == 1){
var code = v1 +'.function_call(' + callback + ', ' + v2 + ', ' + v3 + ', ' + code.join(', ') +')\n'; var code = v1 +'.function_call(' + callback + ', ' + v2 + ', ' + v3 + ', ' + code.join(', ') +')\n';
}else{
var code = v1 +'.function_call(' + callback + ', ' + v2 + ', ' + v3 +')\n';
} }
return code; return code;

View File

@@ -158,7 +158,9 @@ export const OPEN_IMAGE = function (_, generator) {
generator.definitions_['camera_import_Image'] = 'from camera import Image'; generator.definitions_['camera_import_Image'] = 'from camera import Image';
var direct = generator.valueToCode(this, 'direct', generator.ORDER_ATOMIC); var direct = generator.valueToCode(this, 'direct', generator.ORDER_ATOMIC);
var a = this.getFieldValue('angle'); var a = this.getFieldValue('angle');
var code = 'Image.open(path=' + direct +',rotation=' + a + ')'; var w = generator.valueToCode(this, 'w', generator.ORDER_ATOMIC);
var h = generator.valueToCode(this, 'h', generator.ORDER_ATOMIC);
var code = 'Image.open(path=' + direct +',rotation=' + a + ',scale_width='+w+',scale_height='+h+')';
return [code, generator.ORDER_ATOMIC]; return [code, generator.ORDER_ATOMIC];
} }

View File

@@ -1183,6 +1183,39 @@ export const onboard_tft_show_texts = function (_, generator) {
return code; return code;
} }
export const onboard_tft_show_qrcode = function (_, generator) {
var version = Boards.getSelectedBoardKey().split(':')[2];
generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft";
var direct = generator.valueToCode(this, 'direct', generator.ORDER_ATOMIC);
var bool = generator.valueToCode(this, 'boolean', generator.ORDER_ATOMIC) || 'True';
var code = 'onboard_tft.qrcode(' + direct + ',sync='+ bool + ')\n';
return code;
}
export const onboard_tft_show_qrcode_details = 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 = generator.valueToCode(this, 'boolean', generator.ORDER_ATOMIC) || 'True';
var correct = this.getFieldValue('correct');
if (color.slice(0, 2) == "0x") {
var code = "onboard_tft.qrcode(" + data + ',x=' + x + ',y=' + y + ',size=' + size + ',correct=' + correct+ ',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.qrcode(" + data + ',x=' + x + ',y=' + y + ',size=' + size + ',correct=' + correct + ',color=0x' + rgb565.toString(16) + ",sync=" + s + ")\n";
}
return code;
}
/** /**
* @deprecated To be removed in the future * @deprecated To be removed in the future
*/ */

View File

@@ -1612,6 +1612,11 @@
</shadow> </shadow>
</value> </value>
</block> </block>
<block type="backstage_onboard_music_play_list" m-hide='micropython:esp32:rm_e1'>
<value name="LIST">
<shadow type="pins_playlist"></shadow>
</value>
</block>
<!--<block <!--<block
type="esp32_mixgo_music_play_list_show"> type="esp32_mixgo_music_play_list_show">
<value name="LIST"> <value name="LIST">
@@ -4510,6 +4515,16 @@
</shadow> </shadow>
</value> </value>
</block> </block>
<block type="backstage_esp32_music_play_list">
<value name="LIST">
<shadow type="pins_playlist_extern"></shadow>
</value>
<value name="SUB">
<shadow type="variables_get">
<field name="VAR">midi</field>
</shadow>
</value>
</block>
<block type="esp32_music_set_tempo_extern"> <block type="esp32_music_set_tempo_extern">
<value name="SUB"> <value name="SUB">
<shadow type="variables_get"> <shadow type="variables_get">

View File

@@ -2926,7 +2926,7 @@
</shadow> </shadow>
</value> </value>
</block> </block>
<block type="llm_set_callback"> <block type="llm_set_callback">
<value name="VAR1"> <value name="VAR1">
<shadow type="variables_get"> <shadow type="variables_get">
<field name="VAR">llm</field> <field name="VAR">llm</field>
@@ -4631,6 +4631,16 @@
</shadow> </shadow>
</value> </value>
</block> </block>
<block type="backstage_esp32_music_play_list">
<value name="LIST">
<shadow type="pins_playlist_extern"></shadow>
</value>
<value name="SUB">
<shadow type="variables_get">
<field name="VAR">midi</field>
</shadow>
</value>
</block>
<block type="esp32_music_set_tempo_extern"> <block type="esp32_music_set_tempo_extern">
<value name="SUB"> <value name="SUB">
<shadow type="variables_get"> <shadow type="variables_get">

View File

@@ -1629,6 +1629,11 @@
<shadow type="pins_playlist"></shadow> <shadow type="pins_playlist"></shadow>
</value> </value>
</block> </block>
<block type="backstage_onboard_music_play_list">
<value name="LIST">
<shadow type="pins_playlist"></shadow>
</value>
</block>
<block type="esp32_music_set_tempo"> <block type="esp32_music_set_tempo">
<value name="TICKS"> <value name="TICKS">
<shadow type="math_number"> <shadow type="math_number">
@@ -4373,6 +4378,26 @@
</shadow> </shadow>
</value> </value>
</block> </block>
<block type="backstage_esp32_music_play_list" m-hide='micropython:esp32c3:mixgocar_c3'>
<value name="LIST">
<shadow type="pins_playlist_extern"></shadow>
</value>
<value name="SUB">
<shadow type="variables_get">
<field name="VAR">midi</field>
</shadow>
</value>
</block>
<block type="backstage_esp32_music_play_list">
<value name="LIST">
<shadow type="pins_playlist_extern"></shadow>
</value>
<value name="SUB">
<shadow type="variables_get">
<field name="VAR">midi</field>
</shadow>
</value>
</block>
<block type="esp32_music_set_tempo_extern" m-hide='micropython:esp32c3:mixgocar_c3'> <block type="esp32_music_set_tempo_extern" m-hide='micropython:esp32c3:mixgocar_c3'>
<value name="SUB"> <value name="SUB">
<shadow type="variables_get"> <shadow type="variables_get">

View File

@@ -1574,6 +1574,11 @@
<shadow type="pins_playlist"></shadow> <shadow type="pins_playlist"></shadow>
</value> </value>
</block> </block>
<block type="backstage_onboard_music_play_list">
<value name="LIST">
<shadow type="pins_playlist"></shadow>
</value>
</block>
<block type="esp32_music_set_tempo"> <block type="esp32_music_set_tempo">
<value name="TICKS"> <value name="TICKS">
<shadow type="math_number"> <shadow type="math_number">
@@ -4031,6 +4036,16 @@
</shadow> </shadow>
</value> </value>
</block> </block>
<block type="backstage_esp32_music_play_list">
<value name="LIST">
<shadow type="pins_playlist_extern"></shadow>
</value>
<value name="SUB">
<shadow type="variables_get">
<field name="VAR">midi</field>
</shadow>
</value>
</block>
<block type="esp32_music_set_tempo_extern"> <block type="esp32_music_set_tempo_extern">
<value name="SUB"> <value name="SUB">
<shadow type="variables_get"> <shadow type="variables_get">

View File

@@ -1689,6 +1689,11 @@
<shadow type="pins_playlist"></shadow> <shadow type="pins_playlist"></shadow>
</value> </value>
</block> </block>
<block type="esp32_onboard_music_play_list" m-show='micropython:esp32s3:mixgo_sant'>
<value name="LIST">
<shadow type="pins_playlist"></shadow>
</value>
</block>
<block type="esp32_music_set_tempo" m-show='micropython:esp32s3:mixgo_sant'> <block type="esp32_music_set_tempo" m-show='micropython:esp32s3:mixgo_sant'>
<value name="TICKS"> <value name="TICKS">
<shadow type="math_number"> <shadow type="math_number">
@@ -1981,6 +1986,51 @@
</shadow> </shadow>
</value> </value>
</block> </block>
<block type="onboard_tft_show_qrcode">
<value name="direct">
<shadow type="text">
<field name="TEXT">mixly</field>
</shadow>
</value>
<value name="boolean">
<shadow type="logic_boolean">
</shadow>
</value>
</block>
<block type="onboard_tft_show_qrcode_details">
<value name="data">
<shadow type="text">
<field name="TEXT">Mixly</field>
</shadow>
</value>
<value name="x">
<shadow type="math_number">
<field name="NUM">0</field>
</shadow>
</value>
<value name="y">
<shadow type="math_number">
<field name="NUM">0</field>
</shadow>
</value>
<value name="size">
<shadow type="math_number">
<field name="NUM">1</field>
</shadow>
</value>
<value name="VAR">
<block type="display_color_seclet">
<field name="COLOR">#ffffff</field>
</block>
<shadow type="tuple_create_with_text_return">
<field name="TEXT">255,255,0</field>
</shadow>
</value>
<value name="boolean">
<shadow type="logic_boolean">
</shadow>
</value>
</block>
<block type="display_scroll_string"> <block type="display_scroll_string">
<value name="data"> <value name="data">
<shadow type="text"> <shadow type="text">
@@ -2744,6 +2794,16 @@
<field name="TEXT">mixly.jpg</field> <field name="TEXT">mixly.jpg</field>
</shadow> </shadow>
</value> </value>
<value name="w">
<shadow type="math_number">
<field name="NUM">240</field>
</shadow>
</value>
<value name="h">
<shadow type="math_number">
<field name="NUM">240</field>
</shadow>
</value>
</block> </block>
</value> </value>
</block> </block>
@@ -5310,6 +5370,16 @@
</shadow> </shadow>
</value> </value>
</block> </block>
<block type="backstage_esp32_music_play_list">
<value name="LIST">
<shadow type="pins_playlist_extern"></shadow>
</value>
<value name="SUB">
<shadow type="variables_get">
<field name="VAR">midi</field>
</shadow>
</value>
</block>
<block type="esp32_music_set_tempo_extern"> <block type="esp32_music_set_tempo_extern">
<value name="SUB"> <value name="SUB">
<shadow type="variables_get"> <shadow type="variables_get">

View File

@@ -4064,4 +4064,8 @@ En.MIXLY_KJWX = 'scientific research model';
En.MIXLY_DIALOGUE_BACKGROUND = 'dialogue backgroud'; En.MIXLY_DIALOGUE_BACKGROUND = 'dialogue backgroud';
En.MIXLY_CUSTOMIZE_MODEL = 'customize model'; En.MIXLY_CUSTOMIZE_MODEL = 'customize model';
En.MIXLY_SUPPORT = 'support'; En.MIXLY_SUPPORT = 'support';
En.MIXLY_ERROR_RATE = 'error-tolerant rate';
En.MIXLY_Enlarge_and_scale_to = 'enlarge and scale to';
En.MIXLY_High_zoom_level_to = 'high zoom level to';
En.MIXLY_OPEN_IMAGE_TOOLTIP = 'Scaling is only supported for multiples of 8. A value of 0 indicates no scaling.';
})(); })();

View File

@@ -4247,4 +4247,8 @@ ZhHans.MIXLY_GET_PICTURE_CLASSIFY_RESULT = '获取图像分类结果';
ZhHans.MIXLY_SCREENSHOT = '截取'; ZhHans.MIXLY_SCREENSHOT = '截取';
ZhHans.MIXLY_CHINESE_RECOGNIZION = '中文识别'; ZhHans.MIXLY_CHINESE_RECOGNIZION = '中文识别';
ZhHans.MIXLY_HOT_WORD = '热词'; ZhHans.MIXLY_HOT_WORD = '热词';
ZhHans.MIXLY_ERROR_RATE = '容错率';
ZhHans.MIXLY_Enlarge_and_scale_to = '宽缩放至';
ZhHans.MIXLY_High_zoom_level_to = '高缩放至';
ZhHans.MIXLY_OPEN_IMAGE_TOOLTIP = '缩放仅支持8的倍数,填0代表不缩放';
})(); })();

View File

@@ -4217,4 +4217,8 @@ ZhHant.MIXLY_KJWX = '科研大模型';
ZhHant.MIXLY_DIALOGUE_BACKGROUND = '對話背景'; ZhHant.MIXLY_DIALOGUE_BACKGROUND = '對話背景';
ZhHant.MIXLY_CUSTOMIZE_MODEL = '可定製化大模型'; ZhHant.MIXLY_CUSTOMIZE_MODEL = '可定製化大模型';
ZhHant.MIXLY_SUPPORT = '支持'; ZhHant.MIXLY_SUPPORT = '支持';
ZhHant.MIXLY_ERROR_RATE = '容錯率';
ZhHant.MIXLY_Enlarge_and_scale_to = '寬縮放至';
ZhHant.MIXLY_High_zoom_level_to = '高縮放至';
ZhHant.MIXLY_OPEN_IMAGE_TOOLTIP = '縮放僅支持8的倍數,填0代表不縮放';
})(); })();