This commit is contained in:
Irene-Maxine
2025-10-26 14:27:22 +08:00
parent 00d1c46627
commit 3d0119ba7d
4 changed files with 780 additions and 44 deletions

View File

@@ -2,6 +2,7 @@ import * as Blockly from 'blockly/core';
const AI_LOCAL_VOICE_HUE = '#2FAD7A';
const AI_LOCAL_GRAPH_HUE = '#90A244';
const IOT_HUE = '#526FC3';
const DISPLAY_ONBOARD_HUE = '#569A98';
//voice part
export const VOICE_RECOGNITION_CONTROL = {
@@ -270,11 +271,27 @@ export const CREATE_CAMERA = {
.appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.MIXLY_SMARTCAMERA)
.appendField(Blockly.Msg.LISTS_SET_INDEX_SET + Blockly.Msg.MIXLY_SHOOTING_SIZE)
.appendField(new Blockly.FieldDropdown([
['LCD : 240px*240px', "LCD"],
['240px*240px', "R240*240"],
['320px*320px', "R320*320"],
['128px*128px', "R128*128"],
['96px*96px', "R96*96"],
['VGA : 640px*480px', "VGA"],
['HVGA : 480px*320px', "HVGA"],
['QVGA : 320px*240px', "QVGA"],
['QQVGA : 160px*120px', "QQVGA"]
]), "cmd")
]), "cmd");
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_HORIZONTAL_MIRRORING)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE, "False"],
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE, "True"]
]),"hm");
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_VERTICAL_MIRRORING)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE, "False"],
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE, "True"]
]),"vf");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
@@ -287,6 +304,16 @@ export const SHOOT_AND_SAVE_PICTURE = {
this.appendValueInput('direct')
.appendField(Blockly.Msg.MIXLY_SHOOT_AND_SAVE_PICTURE)
.appendField(Blockly.Msg.LISTS_SET_INDEX_SET + Blockly.Msg.MICROPYTHON_HUSKYLENS_SAVE_AS + Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_THE_PATH);
this.appendValueInput('quality')
.appendField(Blockly.Msg.MIXLY_IMAGE_QUALITY);
this.appendDummyInput('')
.appendField(Blockly.Msg.MIXLY_ROTATION_ANGLE)
.appendField(new Blockly.FieldDropdown([
['0','0'],
['90','90'],
['180','180'],
['270','270']
]),'angle');
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
@@ -308,12 +335,63 @@ export const GET_PICTURE_DATA_EXACT = {
}
};
export const SCREEN_SHOW_CAM_GRAPH_SHOOT = {
export const GET_PICTURE_DATA_WHS = {
init: function () {
this.setColour(AI_LOCAL_GRAPH_HUE);
this.appendDummyInput()
.appendField(Blockly.Msg.MIXlY_SCREEN_SHOW_CAM_SHOOT);
this.appendValueInput('boolean');
.appendField(Blockly.Msg.MIXLY_GET_PICTURE_DATA)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MIXLY_WIDTH,"get_pixel_width"],
[Blockly.Msg.MIXLY_HEIGHT,"get_pixel_height"],
[Blockly.Msg.MIXLY_SMARTCAMERA + Blockly.Msg.MIXLY_MODEL_NUMBER ,"get_sensor_name"]
]),"kind")
this.setOutput(true);
this.setInputsInline(true);
}
};
export const SCREEN_SHOW_CAM_GRAPH_SHOOT = {
init: function () {
this.setColour(AI_LOCAL_GRAPH_HUE);
this.appendDummyInput('')
.appendField(Blockly.Msg.MIXlY_SCREEN_SHOW_CAM_SHOOT)
// this.appendValueInput('direct')
// .appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SHOW_IMAGE)
// .appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_THE_PATH);
// this.appendDummyInput('')
// .appendField('(' + Blockly.Msg.MIXLY_ONLY + Blockly.Msg.MIXLY_SUPPORT + 'jpg/jpeg)')
this.appendDummyInput('')
.appendField(Blockly.Msg.MIXLY_SYNC_DISPLAY)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE, "0"],
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE, "1"]
]),"sync");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
}
};
export const SCREEN_DISPLAY_IMAGE = {
init: function () {
this.setColour(DISPLAY_ONBOARD_HUE);
this.appendValueInput('direct')
.appendField(Blockly.Msg.MIXLY_MICROBIT_JS_MONITOR_SHOW_IMAGE)
.appendField(Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_THE_PATH);
this.appendDummyInput('')
.appendField(Blockly.Msg.MIXLY_ROTATION_ANGLE)
.appendField(new Blockly.FieldDropdown([
['0','0'],
['90','90'],
['180','180'],
['270','270']
]),'angle');
this.appendDummyInput('')
.appendField(Blockly.Msg.MIXLY_SYNC_DISPLAY)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_FALSE, "0"],
[Blockly.Msg.MIXLY_TURTLE_WRITE_MOVE_TRUE, "1"]
]),"sync");
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
@@ -329,11 +407,11 @@ export const AI_CAMERA_INIT = {
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.LISTS_SET_INDEX_INPUT_TO)
.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_CAT_FACE + Blockly.Msg.MIXLY_RECOGNITION, "CAT_FACE_DETECTION"],
[Blockly.Msg.MIXLY_FACE_CLASSIFIER, "FACE_DETECTION"],
[Blockly.Msg.MIXLY_AipFace, "FACE_RECOGNITION"]
[Blockly.Msg.MIXLY_QR_CODE + Blockly.Msg.MIXLY_RECOGNITION, "QRReader"],
[Blockly.Msg.MIXLY_COLOR_RECOGNTITION, "ColorDetector"],
[Blockly.Msg.MIXLY_CAT + Blockly.Msg.MIXLY_RECOGNITION, "CatDetector"],
[Blockly.Msg.MIXLY_HUMAN + Blockly.Msg.MIXLY_RECOGNITION, "HumanDetector"],
[Blockly.Msg.MIXLY_AipFace, "FaceDetector"]
]), "kind");
this.setInputsInline(true);
this.setPreviousStatement(true, null);
@@ -341,11 +419,301 @@ export const AI_CAMERA_INIT = {
}
};
export const AI_CAMERA_INIT_FACERECOGNIZE = {
init: function () {
this.setColour(AI_LOCAL_GRAPH_HUE);
this.appendValueInput('SUB')
.appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE)
.setCheck("var");
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.LISTS_SET_INDEX_INPUT_TO)
.appendField(Blockly.Msg.MIXLY_FACE_RECOGNIZER);
this.appendValueInput("PATH")
.appendField(Blockly.Msg.PATH_OF_FACE_DATABASE);
this.setInputsInline(true);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
}
};
export const MODEL_LOGOUT = {
init: function () {
this.setColour(AI_LOCAL_GRAPH_HUE);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_LOGOUT)
this.appendValueInput('SUB')
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_MODEL)
.setCheck("var");
this.setInputsInline(true);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
}
};
export const MODEL_RUN = {
init: function () {
this.setColour(AI_LOCAL_GRAPH_HUE);
this.appendValueInput('SUB')
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_MODEL)
.setCheck("var");
this.appendValueInput("FRAME")
.appendField(Blockly.Msg.MIXLY_RUN + Blockly.Msg.MIXLY_RECOGNITION_RECGNITION + Blockly.Msg.MIXLY_AipImageClassify_Image)
this.setInputsInline(true);
this.setOutput(true);
}
};
export const MODEL_WHETHER_RUN_SUCCEED = {
init: function () {
this.setColour(AI_LOCAL_GRAPH_HUE);
this.appendValueInput("SUB")
.appendField(Blockly.Msg.MIXLY_RECOGNITION_RECGNITION)
this.appendDummyInput("")
.appendField( Blockly.Msg.MIXLY_WHETHER + Blockly.Msg.MIXLY_SUCCESS)
this.setInputsInline(true);
this.setOutput(true);
}
};
export const GET_HOW_MUCH_RECOGNITION = {
init: function () {
this.setColour(AI_LOCAL_GRAPH_HUE);
this.appendValueInput("SUB")
.appendField(Blockly.Msg.MIXLY_COLOR_CHASE_ANALYSIS);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_GET +Blockly.Msg.MIXLY_HOW_MUCH)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MIXLY_QR_CODE, "QRReader"],
[Blockly.Msg.HTML_COLOUR, "ColorDetector"],
[Blockly.Msg.MIXLY_CAT, "CatDetector"],
[Blockly.Msg.MIXLY_HUMAN, "HumanDetector"],
[Blockly.Msg.MIXLY_FACE, "FaceDetector"]
]), "kind");
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_BE_IDENTIFIED);
this.setInputsInline(true);
this.setOutput(true);
}
};
export const GET_NO_RECOGNITION = {
init: function () {
this.setColour(AI_LOCAL_GRAPH_HUE);
this.appendValueInput("SUB")
.appendField(Blockly.Msg.MIXLY_COLOR_CHASE_ANALYSIS);
this.appendValueInput("NO")
.appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER1);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER2)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MIXLY_QR_CODE, "QRReader"],
[Blockly.Msg.HTML_COLOUR, "ColorDetector"],
[Blockly.Msg.MIXLY_CAT, "CatDetector"],
[Blockly.Msg.MIXLY_HUMAN, "HumanDetector"],
[Blockly.Msg.MIXLY_FACE, "FaceDetector"]
]), "kind");
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_DE + Blockly.Msg.OLED_STRING);
this.setInputsInline(true);
this.setOutput(true);
}
};
export const GET_NO_CAT_OR_FACE_RECOGNITION = {
init: function () {
this.setColour(AI_LOCAL_GRAPH_HUE);
this.appendValueInput("SUB")
.appendField(Blockly.Msg.MIXLY_COLOR_CHASE_ANALYSIS);
this.appendValueInput("NO")
.appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER1);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER2)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MIXLY_QR_CODE, "QRReader"],
[Blockly.Msg.HTML_COLOUR, "ColorDetector"],
[Blockly.Msg.MIXLY_CAT, "CatDetector"],
[Blockly.Msg.MIXLY_HUMAN, "HumanDetector"],
[Blockly.Msg.MIXLY_FACE, "FaceDetector"]
]), "kind");
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_DE + Blockly.Msg.MIXLY_CONFIDENCE_DEGREE);
this.setInputsInline(true);
this.setOutput(true);
}
};
export const GET_NO_XY_RECOGNITION = {
init: function () {
this.setColour(AI_LOCAL_GRAPH_HUE);
this.appendValueInput("SUB")
.appendField(Blockly.Msg.MIXLY_COLOR_CHASE_ANALYSIS);
this.appendValueInput("NO")
.appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER1);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER2)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MIXLY_QR_CODE, "QRReader"],
[Blockly.Msg.HTML_COLOUR, "ColorDetector"],
[Blockly.Msg.MIXLY_CAT, "CatDetector"],
[Blockly.Msg.MIXLY_HUMAN, "HumanDetector"],
[Blockly.Msg.MIXLY_FACE, "FaceDetector"]
]), "kind");
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_DE + Blockly.Msg.MIXLY_POSITION_XY)
.appendField(new Blockly.FieldDropdown([
["x","0"],
["y","1"],
["w","2"],
["h","3"],
[Blockly.Msg.MIXLY_ALL + '(x,y,w,h)',"all"]
]),"coord");
this.setInputsInline(true);
this.setOutput(true);
}
};
export const GET_NO_XY_RECOGNITION_FACE = {
init: function () {
this.setColour(AI_LOCAL_GRAPH_HUE);
this.appendValueInput("SUB")
.appendField(Blockly.Msg.MIXLY_COLOR_CHASE_ANALYSIS);
this.appendValueInput("NO")
.appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER1);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER2)
.appendField(Blockly.Msg.MIXLY_FACE);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_DE + Blockly.Msg.MIXLY_POSITION_XY)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MIXLY_LEFT_EYE,"[0,1]"],
[Blockly.Msg.MIXLY_RIGHT_EYE,"[2,3"],
[Blockly.Msg.MIXLY_NOSE,"[4,5"],
[Blockly.Msg.MIXLY_LEFT_MOUSE_CORNER,"[6,7]"],
[Blockly.Msg.MIXLY_RIGHT_MOUSE_CORNER,"[8,9"],
[Blockly.Msg.MIXLY_ALL ,"all"]
]),"part")
this.setInputsInline(true);
this.setOutput(true);
}
};
export const GET_NO_FACE_RECOGNITION_INFO = {
init: function () {
this.setColour(AI_LOCAL_GRAPH_HUE);
this.appendValueInput("SUB")
.appendField(Blockly.Msg.MIXLY_COLOR_CHASE_ANALYSIS);
this.appendValueInput("NO")
.appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER1);
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER2 + Blockly.Msg.MIXLY_FACE + Blockly.Msg.MIXLY_DE)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.MIXLY_FACE_ID,"id"],
[Blockly.Msg.MILXY_FACE_SIMILARITY,"similarity"],
[Blockly.Msg.MIXLY_FACE_NAME,"name"]
]),"kind");
this.setInputsInline(true);
this.setOutput(true);
}
};
export const Register_color_recognition_fixed = {
init: function () {
this.setColour(AI_LOCAL_GRAPH_HUE);
this.appendValueInput('SUB')
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_MODEL)
.setCheck("var");
this.appendDummyInput("")
.appendField(Blockly.Msg.MIXLY_RECOGNITION_RECGNITION + Blockly.Msg.HTML_COLOUR)
.appendField(new Blockly.FieldDropdown([
[Blockly.Msg.COLOUR_RGB_RED,"red"],
[Blockly.Msg.COLOUR_RGB_GREEN,"green"],
[Blockly.Msg.COLOUR_RGB_BLUE,"blue"],
[Blockly.Msg.COLOUR_YELLOW,"yellow"],
[Blockly.Msg.COLOUR_CYAN,"cyan"],
[Blockly.Msg.COLOUR_RGB_PURPLE,"purple"],
[Blockly.Msg.COLOUR_BLACK,"black"],
[Blockly.Msg.COLOUR_WHITE,"white"]
]),"color");
this.appendValueInput("AREA")
.appendField(Blockly.Msg.MINIMUN_DETECTABLE_AREA);
this.setInputsInline(true);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
}
};
export const Register_color_recognition = {
init: function () {
this.setColour(AI_LOCAL_GRAPH_HUE);
this.appendValueInput('SUB')
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_MODEL)
.setCheck("var");
this.appendDummyInput("")
.appendField(Blockly.Msg.REGUSTER_COLOR_RECOGNITION)
this.appendValueInput("MIN")
.appendField('H、S、V' + Blockly.Msg.blockpy_TUPLE_MIN);
this.appendValueInput("MAX")
.appendField('H、S、V' + Blockly.Msg.blockpy_TUPLE_MAX);
this.appendValueInput("COLOR")
.appendField(Blockly.Msg.HTML_COLOUR + Blockly.Msg.MIXLY_NAME)
this.appendValueInput("AREA")
.appendField(Blockly.Msg.MINIMUN_DETECTABLE_AREA);
this.setInputsInline(true);
this.setPreviousStatement(true, null);
this.setNextStatement(true, null);
}
};
export const REGISTER_NEW_FACE = {
init: function () {
this.setColour(AI_LOCAL_GRAPH_HUE);
this.appendValueInput('SUB')
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_MODEL)
.setCheck("var");
this.appendDummyInput()
.appendField(Blockly.Msg.register_a_new_face_in_the_database);
this.appendValueInput("NAME")
.appendField(Blockly.Msg.MICROPYTHON_HUSKYLENS_NAME);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
}
};
export const DELETE_FACE_FROM_DATABASE = {
init: function () {
this.setColour(AI_LOCAL_GRAPH_HUE);
this.appendValueInput('SUB')
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_MODEL)
.setCheck("var");
this.appendDummyInput()
.appendField(Blockly.Msg.delete_the_face_from_the_database);
this.appendValueInput("ID")
.appendField('id');
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
}
};
export const PRINT_FACE_DATABASE = {
init: function () {
this.setColour(AI_LOCAL_GRAPH_HUE);
this.appendValueInput('SUB')
.appendField(Blockly.Msg.MIXLY_TENSORFLOW_MODEL)
.setCheck("var");
this.appendDummyInput()
.appendField(Blockly.Msg.print_the_contents_of_the_face_database);
this.setPreviousStatement(true);
this.setNextStatement(true);
this.setInputsInline(true);
}
};
export const GET_QR_CODE_RECOGNITION_DATA = {
init: function () {
this.setColour(AI_LOCAL_GRAPH_HUE);
this.appendValueInput('SUB')
this.appendValueInput('SUB')
.setCheck("var");
this.appendDummyInput()
.appendField(Blockly.Msg.MIXLY_GET_QR_CODE_RECOGNITION_RESULT);