From f6955a256eb2c6f334be5b4bfbfcf98f3cab90c0 Mon Sep 17 00:00:00 2001
From: unknown <1371033826@qq.com>
Date: Tue, 2 Sep 2025 14:52:12 +0800
Subject: [PATCH] add_mic_blocks
---
blockly/iot/IOT_Blocks.js | 26 ++++++++++++++++++++++++++
ejs/projects.ejs | 10 +++++++++-
js/MixIO.js | 11 +++++++----
js/widgets.js | 2 ++
4 files changed, 44 insertions(+), 5 deletions(-)
diff --git a/blockly/iot/IOT_Blocks.js b/blockly/iot/IOT_Blocks.js
index 2779fae..50df6f7 100644
--- a/blockly/iot/IOT_Blocks.js
+++ b/blockly/iot/IOT_Blocks.js
@@ -693,6 +693,24 @@ Blockly.Blocks['camera_sent'] = {
}
};
+Blockly.Blocks['mic_sent'] = {
+ init: function() {
+ this.setColour(lineChart_HUE);
+ this.appendDummyInput().appendField(Blockly.MIXLY_MICROBIT_JS_CURRENT);
+ this.appendValueInput("name").setCheck("String");
+ this.appendDummyInput().appendField(Blockly.MIC_SENT);
+ 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("");
+ },
+ getVars:function(){
+ return ["time","value"];
+ }
+};
+
Blockly.Blocks['lineChart_send'] = {
init: function() {
this.appendDummyInput().appendField(Blockly.TO);
@@ -2258,6 +2276,13 @@ Blockly.JavaScript.camera_sent=function(block) {
return code;
};
+Blockly.JavaScript.mic_sent=function(block) {
+ var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
+ var code="MixIO.getInstance("+name+",MixIO.typeTags.MIC)\n"+".bind(MixIO.eventTags.MIC_SENT, function(event,value){\n"
+ +Blockly.JavaScript.statementToCode(block, "DO0" )+"\n"+"})\n"
+ return code;
+};
+
Blockly.JavaScript.lineChart_send=function(block) {
var name = Blockly.JavaScript.valueToCode(this, 'name', Blockly.JavaScript.ORDER_ATOMIC);
var message = Blockly.JavaScript.valueToCode(this, 'message', Blockly.JavaScript.ORDER_ATOMIC);
@@ -3250,6 +3275,7 @@ Blockly.GET_BLUETOOTH_STATUS="蓝牙转发器连接的设备";
Blockly.BLUETOOTH_SENT = "蓝牙转发器发送消息"
Blockly.CAMERA_SENT = "摄像头发送消息时"
+Blockly.MIC_SENT = "语音识别发送消息时"
Blockly.BARCHART_RECIEVED="柱状图收到消息时";
Blockly.BARCHART_SEND_MESSAGE="柱状图发送消息";
diff --git a/ejs/projects.ejs b/ejs/projects.ejs
index 20e2fcf..3f9753b 100644
--- a/ejs/projects.ejs
+++ b/ejs/projects.ejs
@@ -971,7 +971,15 @@
-
+
+
+
+
+ name
+
+
+
+
diff --git a/js/MixIO.js b/js/MixIO.js
index daca426..16eddbd 100644
--- a/js/MixIO.js
+++ b/js/MixIO.js
@@ -83,13 +83,14 @@ var MixIO = {
TIMER: 14,
TRIGGER: 15,
BLE: 16,
- CAMERA: 17
+ CAMERA: 17,
+ MIC: 18
},
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"
+ "output_chart", "output_bar", "table", "output_dashboard", "output_map", "input_weather", "timer", "trigger", "ble", "camera", "input_mic"
],
- zhcnTags: ["按键/开关", "滑杆", "文本输入", "摇杆手柄", "RGB色盘", "指示灯", "文本显示屏", "折线图表", "柱状图表", "数据表格", "仪表盘", "数据地图", "实时气象仪", "定时触发器", "条件触发器", "蓝牙转发器", "摄像头"],
+ zhcnTags: ["按键/开关", "滑杆", "文本输入", "摇杆手柄", "RGB色盘", "指示灯", "文本显示屏", "折线图表", "柱状图表", "数据表格", "仪表盘", "数据地图", "实时气象仪", "定时触发器", "条件触发器", "蓝牙转发器", "摄像头", "语音识别"],
/*合法的MixIO事件种类*/
eventTags: {
@@ -133,7 +134,9 @@ var MixIO = {
BLUETOOTH_TRIGGERED: "1611",
- CAMERA_SENT: "1711"
+ CAMERA_SENT: "1711",
+
+ MIC_SENT: "1811"
},
diff --git a/js/widgets.js b/js/widgets.js
index 10dcc72..535452f 100644
--- a/js/widgets.js
+++ b/js/widgets.js
@@ -1558,6 +1558,7 @@ function add_mic(user_title, user_topic, user_content, user_style, title_style)
sendIcon.children().addClass("fa-microphone")
recognition.stop();
publish(topic.text(), messDiv.val())
+ itemdiv.trigger(MixIO.eventTags.MIC_SENT, messDiv.val())
isRecording = false
}
})
@@ -1594,6 +1595,7 @@ function add_mic(user_title, user_topic, user_content, user_style, title_style)
sendIcon.children().addClass("fa-microphone")
recognition.stop();
publish(topic.text(), messDiv.val())
+ itemdiv.trigger(MixIO.eventTags.MIC_SENT, messDiv.val())
isRecording = false
}
})