add_beep_and_qr_blocks

This commit is contained in:
unknown
2025-09-02 18:25:53 +08:00
parent 1d208f6d0c
commit d73fa2db43
4 changed files with 113 additions and 10 deletions

View File

@@ -1049,9 +1049,48 @@ Blockly.Blocks['face_recognized'] = {
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip("");
},
getVars:function(){
return ["clientid","long","lat","message"];
}
};
Blockly.Blocks['beep_received'] = {
init: function() {
this.setColour(datamap_HUE);
this.appendDummyInput().appendField(Blockly.MIXLY_MICROBIT_JS_CURRENT);
this.appendValueInput("name").setCheck("String");
this.appendDummyInput().appendField(Blockly.BEEP_RECEIVED);
this.setInputsInline(true);
this.appendStatementInput('DO0').appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip("");
}
};
Blockly.Blocks['qr_recognized'] = {
init: function() {
this.setColour(datamap_HUE);
this.appendDummyInput().appendField(Blockly.MIXLY_MICROBIT_JS_CURRENT);
this.appendValueInput("name").setCheck("String");
this.appendDummyInput().appendField(Blockly.QR_RECOGNIZED);
this.appendDummyInput().appendField(Blockly.Msg.PROCEDURES_CALL_BEFORE_PARAMS+"value");
this.setInputsInline(true);
this.appendStatementInput('DO0').appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setTooltip("");
}
};
Blockly.Blocks['beep_send'] = {
init: function() {
this.appendDummyInput().appendField(Blockly.LET);
this.appendValueInput("name").setCheck("String");
this.appendDummyInput().appendField(Blockly.BEEP_SEND);
this.setInputsInline(true);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setColour(datamap_HUE);
this.setTooltip('');
}
};
@@ -2526,6 +2565,26 @@ Blockly.JavaScript.face_recognized =function(block) {
return code;
};
Blockly.JavaScript.beep_received =function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.BEEP)\n"+".bind(MixIO.eventTags.BEEP_RECEIVED, function(event){\n"
+Blockly.JavaScript.statementToCode(block, "DO0" )+"\n"+"})\n"
return code;
};
Blockly.JavaScript.qr_recognized =function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.QR)\n"+".bind(MixIO.eventTags.QR_RECOGNIZED, function(event, value){\n"
+Blockly.JavaScript.statementToCode(block, "DO0" )+"\n"+"})\n"
return code;
};
Blockly.JavaScript.beep_send=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var code="MixIO.getInstance("+name+",MixIO.typeTags.BEEP)\n"+".beep()\n"
return code;
};
Blockly.JavaScript.datamap_send=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var long = Blockly.JavaScript.valueToCode(this, 'long', Blockly.JavaScript.ORDER_ATOMIC);
@@ -3439,6 +3498,9 @@ Blockly.DATAMAP_SEND_MESSAGE="发送消息列表";
Blockly.CLEAR_DATAMAP="数据地图清空";
Blockly.CLEAR_PIXEL="点阵屏清空画布";
Blockly.FACE_RECOGNIZED = "人脸识别组件识别到人脸时"
Blockly.BEEP_RECEIVED = "蜂鸣器发出声音时"
Blockly.BEEP_SEND = "蜂鸣器发出声音"
Blockly.QR_RECOGNIZED = "二维码识别组件识别到二维码时"
Blockly.WS_UPDATED="气象仪更新数据时";
Blockly.WS_SEND="气象仪发送数据时";

View File

@@ -1099,7 +1099,29 @@
</value>
</block>
</category>
<category name="蜂鸣器" colour="#4e73df" css-icon="customIcon fa fa-bell-o"></category>
<category name="二维码识别" colour="#4e73df" css-icon="customIcon fa fa-qrcode"></category>
<category name="蜂鸣器" colour="#4e73df" css-icon="customIcon fa fa-bell-o">
<block type="beep_received">
<value name="name">
<shadow type="text">
<field name="TEXT">name</field>
</shadow>
</value>
</block>
<block type="beep_send">
<value name="name">
<shadow type="text">
<field name="TEXT">name</field>
</shadow>
</value>
</category>
<category name="二维码识别" colour="#4e73df" css-icon="customIcon fa fa-qrcode">
<block type="qr_recognized">
<value name="name">
<shadow type="text">
<field name="TEXT">name</field>
</shadow>
</value>
</block>
</category>
</xml>
</body>

View File

@@ -87,13 +87,15 @@ var MixIO = {
MIC: 18,
SELECT: 19,
PIXEL: 20,
FACE: 21
FACE: 21,
BEEP: 22,
QR: 23
},
oldTags: ["input_button", "input_slider", "input_keyboard", "input_controller", "input_rgb", "output_bulb", "output_text",
"output_chart", "output_bar", "table", "output_dashboard", "output_map", "input_weather", "timer", "trigger", "ble", "camera", "input_mic", "tinydb", "pixel", "face"
"output_chart", "output_bar", "table", "output_dashboard", "output_map", "input_weather", "timer", "trigger", "ble", "camera", "input_mic", "tinydb", "pixel", "face", "ocr", "qr"
],
zhcnTags: ["按键/开关", "滑杆", "文本输入", "摇杆手柄", "RGB色盘", "指示灯", "文本显示屏", "折线图表", "柱状图表", "数据表格", "仪表盘", "数据地图", "实时气象仪", "定时触发器", "条件触发器", "蓝牙转发器", "摄像头", "语音识别", "下拉选项", "点阵屏", "人脸识别"],
zhcnTags: ["按键/开关", "滑杆", "文本输入", "摇杆手柄", "RGB色盘", "指示灯", "文本显示屏", "折线图表", "柱状图表", "数据表格", "仪表盘", "数据地图", "实时气象仪", "定时触发器", "条件触发器", "蓝牙转发器", "摄像头", "语音识别", "下拉选项", "点阵屏", "人脸识别", "蜂鸣器", "二维码识别"],
/*合法的MixIO事件种类*/
eventTags: {
@@ -143,7 +145,11 @@ var MixIO = {
SELECT_SENT: "1911",
FACE_RECOGNIZED: "2111"
FACE_RECOGNIZED: "2111",
BEEP_RECEIVED: "2211",
QR_RECOGNIZED: "2311"
},
@@ -378,6 +384,10 @@ var MixIO = {
instance.clearPixel = function() {
MixIO.publish(instance.attr('user-topic'), "cls")
}
} else if (type === MixIO.typeTags.BEEP){
instance.beep = function() {
MixIO.publish(instance.attr('user-topic'), 1)
}
}
return instance
},

View File

@@ -7003,6 +7003,8 @@ function add_ocr(user_title, user_topic, user_content, user_style, title_style)
bell_icon.css("color", "#e74a3b")
itemdiv.css("box-shadow", "#e74a3b 1px 1px 10px")
}
// Aug 2025
itemdiv.trigger(MixIO.eventTags.BEEP_RECEIVED);
setTimeout(function(){
bell_icon.css("color", "#858796")
itemdiv.css("box-shadow", "")
@@ -7158,7 +7160,11 @@ function add_qr(user_title, user_topic, user_content, user_style, title_style) {
{
bottomDiv11.text(code.data)
if(isRunning && isAlive)
{
publish(user_topic, code.data)
// Aug 2025
itemdiv.trigger(MixIO.eventTags.QR_RECOGNIZED, [code.data]);
}
}
else
{
@@ -7171,11 +7177,14 @@ function add_qr(user_title, user_topic, user_content, user_style, title_style) {
readers: ["code_128_reader", "ean_reader", "ean_8_reader", "code_39_reader", "code_39_vin_reader", "codabar_reader", "upc_reader", "upc_e_reader", "i2of5_reader", "2of5_reader", "code_93_reader"] // 指定条形码格式
}
}, function(result){
console.log(result)
if (result && result.codeResult) {
bottomDiv11.text(result.codeResult.code);
if(isRunning && isAlive)
{
publish(user_topic, result.codeResult.code)
// Aug 2025
itemdiv.trigger(MixIO.eventTags.QR_RECOGNIZED, [result.codeResult.code]);
}
}
else
bottomDiv11.text("无二维码或条形码")