feat(boards): 更新micropython下machine.Timer图形块

This commit is contained in:
王立帮
2026-01-20 18:01:04 +08:00
parent 899c811dc1
commit 0968a1c678
13 changed files with 257 additions and 76 deletions

View File

@@ -133,36 +133,6 @@ export const timer = {
}
};
/**
* @deprecated To be removed in the future
*/
export const system_timer = {
init: function () {
this.setColour(SYSTEM_HUE);
this.appendValueInput('VAR')
.appendField("Timer")
.setCheck("var");
// .appendField("I2C " + Blockly.Msg.MIXLY_SETUP)
this.appendValueInput("period")
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(Blockly.Msg.MIXLY_MICROBIT_JS_PERIOD_MIL)
.setCheck(Number);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_mSecond)
.appendField(Blockly.Msg.MIXLY_MODE)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MIXLY_PYTHON_ONE_SHOT, "ONE_SHOT"],
[Blockly.Msg.MIXLY_PYTHON_PERIODIC, "PERIODIC"]
]), "mode");
this.appendValueInput('callback')
.appendField(Blockly.Msg.MIXLY_DO)
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip(Blockly.Msg.MIXLY_ESP32_SYSTEM_TIMER_TOOLTIP);
this.setWarningText(Blockly.Msg.MIXLY_DEPRECATED_WARNING_TEXT);
}
};
export const system_ticks_diff = {
init: function () {
this.setColour(SYSTEM_HUE);
@@ -180,24 +150,6 @@ export const system_ticks_diff = {
}
};
/**
* @deprecated To be removed in the future
*/
export const system_timer_init = {
init: function () {
this.setColour(SYSTEM_HUE);
this.appendDummyInput("")
.appendField("Timer")
this.appendValueInput('SUB')
.appendField(Blockly.Msg.MIXLY_SETUP)
this.setInputsInline(true);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
this.setTooltip(Blockly.Msg.MIXLY_ESP32_SYSTEM_TIMER_INIT_TOOLTIP);
this.setWarningText(Blockly.Msg.MIXLY_DEPRECATED_WARNING_TEXT);
}
};
export const set_system_timer = {
init: function () {
this.setColour(SYSTEM_HUE);
@@ -227,6 +179,50 @@ export const set_system_timer = {
}
};
export const system_timer_init = {
init: function () {
this.setColour(SYSTEM_HUE);
this.appendValueInput('VAR')
.appendField("Timer")
.setCheck("var");
this.appendDummyInput()
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(Blockly.Msg.MIXLY_RESTART);
this.appendValueInput("period")
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(Blockly.Msg.MIXLY_MICROBIT_JS_PERIOD_MIL)
.setCheck(Number);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_mSecond)
.appendField(Blockly.Msg.MIXLY_MODE)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MIXLY_PYTHON_ONE_SHOT, "ONE_SHOT"],
[Blockly.Msg.MIXLY_PYTHON_PERIODIC, "PERIODIC"]
]), "mode");
this.appendValueInput('callback')
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(Blockly.Msg.MIXLY_DO)
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip(Blockly.Msg.MIXLY_ESP32_SYSTEM_TIMER_TOOLTIP);
}
};
export const system_timer_deinit = {
init: function () {
this.setColour(SYSTEM_HUE);
this.appendValueInput('VAR')
.appendField("Timer")
.setCheck("var");
this.appendDummyInput()
.setAlign(Blockly.inputs.Align.RIGHT)
.appendField(Blockly.Msg.MIXLY_STOP);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip('');
}
};
export const system_wdt_init = {
init: function () {
this.setColour(SYSTEM_HUE);
@@ -287,6 +283,7 @@ export const system_bitbot_shutdown = {
};
export const Timer_init = system_timer_init;
export const timer2 = system_timer;
export const system_timer = system_timer_init;
export const timer2 = system_timer_init;
export const time_ticks_diff = system_ticks_diff;
export const base_delay = controls_delay;

View File

@@ -143,7 +143,7 @@ export const set_system_timer = function (_, generator) {
var period = generator.valueToCode(this, "period", generator.ORDER_NONE) || "0";
var mode = this.getFieldValue('mode');
var callback = generator.valueToCode(this, "callback", generator.ORDER_NONE) || "None";
var code = v + " = machine.Timer("+ i +",period = " + period + ", mode=machine.Timer." + mode + ", callback=" + callback + ")\n";
var code = v + " = machine.Timer("+ i +", period=" + period + ", mode=machine.Timer." + mode + ", callback=" + callback + ")\n";
return code;
}
@@ -154,30 +154,24 @@ export const system_ticks_diff = function (_, generator) {
var code = "time.ticks_diff(" + end + ", " + start + ")";
return [code, generator.ORDER_ATOMIC];
}
/**
* @deprecated To be removed in the future
*/
export const system_timer_init = function (_, generator) {
var v = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC);
generator.definitions_['import_machine'] = 'import machine';
var code = v + ' = machine.Timer(0)\n';
return code;
}
/**
* @deprecated To be removed in the future
*/
export const system_timer = function (_, generator) {
generator.definitions_['import_machine'] = 'import machine';
var v = generator.valueToCode(this, "VAR", generator.ORDER_NONE) || "None";
var period = generator.valueToCode(this, "period", generator.ORDER_NONE) || "0";
var v = generator.valueToCode(this, 'VAR', generator.ORDER_NONE) || 'None';
var period = generator.valueToCode(this, 'period', generator.ORDER_NONE) || '0';
var mode = this.getFieldValue('mode');
//var branch = generator.statementToCode(this, 'callback') || generator.PASS;
var callback = generator.valueToCode(this, "callback", generator.ORDER_NONE) || "None";
//var code = v + ".init(period = " + period + ", mode = machine.Timer." + mode + ", callback = " + v + "_callback_func)\n";
//generator.setups_['timer_callback_func'] = 'def ' + v + '_callback_func(t):\n' + branch + '\n';
var code = v + ".init(period = " + period + ", mode=machine.Timer." + mode + ", callback=" + callback + ")\n";
var callback = generator.valueToCode(this, 'callback', generator.ORDER_NONE) || 'None';
var code = `${v}.init(period=${period}, mode=machine.Timer.${mode}, callback=${callback})\n`;
return code;
}
export const system_timer_deinit = function (_, generator) {
generator.definitions_['import_machine'] = 'import machine';
var v = generator.valueToCode(this, 'VAR', generator.ORDER_NONE) || 'None';
var code = `${v}.deinit()\n`;
return code;
}
export const system_wdt_init = function (_, generator) {
generator.definitions_['import_machine'] = 'import machine';
var period = generator.valueToCode(this, "period", generator.ORDER_NONE) || "0";
@@ -204,6 +198,7 @@ export const system_bitbot_shutdown = function (_, generator) {
}
export const Timer_init = system_timer_init;
export const timer2 = system_timer;
export const system_timer = system_timer_init;
export const timer2 = system_timer_init;
export const time_ticks_diff = system_ticks_diff;
export const base_delay = controls_delay;