通用 - Field 总览¶
本文档详细介绍了 Mind+ 扩展开发中各种 ArgumentType (字段类型) 的使用方法和参数配置。
1. 数值型 (NUMBER)¶
代码示例:
{
opcode: 'testNumber',
blockType: BlockType.COMMAND,
text: "设置起点x: [VALUE]",
arguments: {
VALUE: {
type: ArgumentType.NUMBER,
inputParams: {
max: 1000,
min: 10,
noLimit: false, // 是否无限制
validate: this._validateNumber,
isHex: false, // 是否是16进制
},
defaultValue: 100
}
}
}
// 验证函数示例
_validateNumber(text) { //非负数
var regx = /^[0-9]{0,}$/
if (text && !regx.test(text)) {
return null;
}
if (text === "") {
return 0;
}
return text;
}
参数说明:
| 参数 | 描述 |
|---|---|
type | 必填。参数的类型 |
defaultValue | 可选。默认显示内容, 不填默认 0 |
max | 可选。最大值,不填默认无限制 |
min | 可选。最小值,不填默认无限制 |
noLimit | 可选。是否无限制,默认 false |
validate | 可选。自定义验证函数,用于限制输入 |
isHex | 可选。是否是十六进制,默认 false |
2. 文本输入框 (STRING)¶
代码示例:
{
opcode: 'testString',
blockType: BlockType.COMMAND,
text: "屏幕显示文字[VALUE]",
arguments: {
VALUE: {
type: ArgumentType.STRING,
defaultValue: "Mind+"
}
}
}
参数说明:
| 参数 | 描述 |
|---|---|
type | 必填。参数的类型 |
defaultValue | 可选。默认显示内容,不填默认空字符串 |
3. 下拉框¶
不可拖入积木的下拉框¶
代码示例:
// 波特率
const BAUD = {
A: "1200",
B: "2400",
C: "4800",
D: "9600"
};
// block定义
getInfo() {
return {
name:"testModule",
// ...
blocks:[
{
opcode: 'testDropdown',
blockType: BlockType.COMMAND,
text: "设置串口波特率为[VALUE]",
arguments: {
VALUE: {
type: ArgumentType.STRING,
menu: "baudMenu", // 下拉框
defaultValue: BAUD.A // 默认值
}
}
}
],
menus: {
// 以下三种方式任选一种,不能同时保留同名 baudMenu。
// 方式一:
baudMenu: Object.values(BAUD),
// 方式二:将上面的 baudMenu 替换为:
// baudMenu: Object.values(BAUD).map(item => ({text: item, value: item})),
// 方式三:将上面的 baudMenu 替换为:
// baudMenu: {
// acceptReporters: false, // 是否允许拖入圆形block, false方形下拉框, true圆形下拉框
// items: Object.values(BAUD) // 下拉列表
// }
}
}
}
可拖入积木的下拉框¶
代码示例:
//亮度
const BRIGHTNESS = {
A: "9",
B: "8",
C: "7"
}
// block定义
getInfo() {
return {
name:"testModule",
// ...
blocks:[
{
opcode: 'testDropdown2',
blockType: BlockType.COMMAND,
text: "设置亮度为[VALUE]",
arguments: {
VALUE: {
type: ArgumentType.STRING,
menu: "lightMenu",
defaultValue: BRIGHTNESS.A
}
}
}
],
menus: {
lightMenu: {
acceptReporters: true, // 设置为true, 表示允许拖入block
items: Object.values(BRIGHTNESS)
}
}
}
}
动态下拉框¶
用户每点击一次下拉框, 重新获取一次下拉框内容, 圆形/方形下拉框 都可以实现动态下拉列表
代码示例:
getInfo() {
return {
// ...
blocks:[
{
opcode: 'testDropdown5',
blockType: BlockType.COMMAND,
text: "随机获取列表[VALUE]",
arguments: {
VALUE: {
type: ArgumentType.STRING,
menu: "getNumberList",
}
}
}
],
menus: {
getNumberList: {
// items 返回function
// 返回格式: [[显示内容,实际value], ....]
items: ()=>{
const items = ['A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9', 'A10'];
return items.slice((Math.random() * 100)%10).map(item => ([item,item]))
},
acceptReporters: false
}
}
}
}
参数说明:
| 参数 | 描述 |
|---|---|
type | 必填。参数的类型 |
menu | 必填。下拉框的菜单名称,需在 menus 中定义 |
defaultValue | 可选。默认显示内容,不填默认第一个选项 |
4. 角度 (ANGLE)¶
代码示例:
{
opcode: 'testAngle',
blockType: BlockType.COMMAND,
text: "设置引脚1伺服舵机为 [DEGREE] 度",
arguments: {
DEGREE: {
type: ArgumentType.ANGLE,
defaultValue: 90,
}
}
}
参数说明:
| 参数 | 描述 |
|---|---|
type | 必填。参数的类型 |
defaultValue | 可选。默认显示内容, 不填默认 0 |
5. 布尔值 (BOOLEAN)¶
代码示例:
{
opcode: 'testBoolean',
blockType: BlockType.COMMAND,
text: "如果[VALUE]",
arguments: {
VALUE: {
type: ArgumentType.BOOLEAN
}
}
}
参数说明:
| 参数 | 描述 |
|---|---|
type | 必填。参数的类型 |
6. 滑动输入条 (SLIDER)¶
代码示例:
{
opcode: 'testSlider',
blockType: BlockType.COMMAND,
text: "画点x: [VALUE] y: [VALUE2]",
arguments: {
VALUE: {
type: ArgumentType.SLIDER,
inputParams: {
rangeMin: 0,
rangeMax: 255,
step: 2
},
defaultValue: 100,
},
VALUE2: {
type: ArgumentType.SLIDER,
inputParams: {
rangeMin: 0,
rangeMax: 255
},
defaultValue: 200,
}
}
}
参数说明:
| 参数 | 描述 |
|---|---|
type | 必填。参数的类型 |
defaultValue | 可选。默认显示内容, 不填默认 90 |
rangeMin | 可选。可拖动的最小值, 不填默认 0 |
rangeMax | 可选。可拖动的最大值, 不填默认 255 |
step | 可选。步长, 默认值为 1 |
7. 色板 (COLORPALETTE)¶
代码示例:
{
opcode: 'testColorPalette',
blockType: BlockType.COMMAND,
text: "颜色[COLOR]",
arguments: {
COLOR: {
type: ArgumentType.COLORPALETTE,
// 方式一: 使用默认色板
inputParams: {
color: "#FF0000"
}
// 方式二: 自定义色板
inputParams: {
color: "#FF0000",
colours: ["#FF0000", "#FF7D00", "#FFFF00", "#00FF00", "#00FFFF", "#0000FF", "#FF00FF", "#8A2BE2"],
columns: 4
}
}
}
}
参数说明:
| 参数 | 描述 |
|---|---|
type | 必填。参数的类型 |
color | 可选。默认显示颜色,不填默认 #0000ff (蓝色) |
colours | 可选。可以选择的颜色数组,颜色格式为十六进制。默认为 mind+ 提供的色块。 |
columns | 可选。每行显示的色块个数。 |
注意: 1. 提供的颜色均为十六进制, 不能是rgb 2. 提供颜色数组的属性是
colours, 不是colors!
8. 取色器 (COLOR)¶
代码示例:
{
opcode: 'testColor',
blockType: BlockType.COMMAND,
text: "设置颜色[COLOR]",
arguments: {
COLOR: {
type: ArgumentType.COLOR,
inputParams: {
color: "#0000FF"
},
}
}
}
参数说明:
| 参数 | 描述 |
|---|---|
type | 必填。参数的类型 |
color | 可选。默认显示颜色, 不填默认随机显示颜色 |
9. 钢琴键 (PIANO)¶
代码示例:
{
opcode: 'testPiano',
blockType: BlockType.COMMAND,
text: "接口P0播放音符[VALUE]",
arguments: {
VALUE: {
type: ArgumentType.PIANO,
defaultValue: 131
}
}
}
参数说明:
| 参数 | 描述 |
|---|---|
type | 必填。参数的类型 |
defaultValue | 可选。默认显示内容, 不填默认 131 |
10. 琴键 (NOTE)¶
代码示例:
{
opcode: 'testNote',
blockType: BlockType.COMMAND,
text: "播放音符[VALUE]",
arguments: {
VALUE: {
type: ArgumentType.NOTE,
defaultValue: 60,
}
}
}
参数说明:
| 参数 | 描述 |
|---|---|
type | 必填。参数的类型 |
defaultValue | 可选。默认显示内容, 不填默认 60 |
11. 点阵1 (MATRIX)¶
代码示例:
{
opcode: 'testMatrix',
blockType: BlockType.COMMAND,
text: "点阵1[MATRIX]",
arguments: {
MATRIX: {
type: ArgumentType.MATRIX,
}
}
}
参数说明:
| 参数 | 描述 |
|---|---|
type | 必填。参数的类型 |
12. 点阵2 (MATRIXICONS)¶
代码示例:
// 点阵列表: 1表示亮, 0表示熄灭
// 该例中有五行五列, matrix参数中, 前五个01010代表第一行,11111代表第二行,以此类推,位数不够的自动补0
const builtinMatrix = [
{matrix: "0101011111111110111000100", value: "HEART", isBuiltIn: true },
{matrix: "0000001010011100010000000", value: "HEART_SMALL", isBuiltIn: true },
// ... 其他点阵数据
];
// block
{
opcode: 'testMatrix2',
blockType: BlockType.COMMAND,
text: "点阵2[MATRIX]",
arguments: {
MATRIX: {
type: ArgumentType.MATRIXICONS,
defaultValue: "0000001010011100010000000",
inputParams: {
colour: "#87C482",
row: 5,
column: 5,
builtinMatrixs: builtinMatrix,
// isSplit: true,
// isRGB: true,
// rgbColor: { r: 222, g: 178, b: 156 }, // 点阵颜色
// isSwitch: true,
// disabledChannel: ['green'], // 禁用G颜色通道
},
}
}
}
参数说明:
13. 表单设置 (FORMSETTING)¶
代码示例:
{
opcode: 'testSettings',
blockType: BlockType.COMMAND,
text: "初始化MQTT [SETTINGS]",
arguments: {
SETTINGS: {
type: ArgumentType.FORMSETTING,
inputParams: {
color:"#87C482",
formItems:[
{
label: "MQTT平台",
title: '初始化',
name: 'platform',
defaultValue: 'easy iot',
type: 'select',
valueSplit: "_",
childValueLowerCase:true,
options: [
{label: 'Easy IoT', value: 'easy iot'},
{label: 'SIOT', value: 'siot'}
],
child: {
// ... 子项配置
}
}
],
formOption: {
helpUrl: 'https://xxxx'
}
}
}
}
}
参数说明:
| 参数 | 描述 |
|---|---|
type | 必填。参数的类型 |
color | 可选。在block中显示的背景颜色,默认 #7FB57B |
formItems | 必填。表单的字段列表,每个字段包含多个属性 |
formOption | 可选。表单的其他属性 |
formItems 中的参数:
| 参数 | 描述 |
|---|---|
title | 可选。表单的标题,通常用于描述整个表单的用途 |
label | 必填。表单字段的显示名称,用于描述字段 |
name | 可选。表单字段的唯一标识符, 建议填写 |
defaultValue | 可选。表单字段的默认值 |
disabled | 可选。是否禁用该字段, 默认为 false |
validate | 可选。校验函数, 返回 true/false , 为 true 时才会保存 |
type | 必填。表单字段的类型 - select(下拉框)- inputText(文本)- inputNumber(数字)- inputPassword(密码框)- file(文件) |
valueSplit | 可选。指定 value 字符串的分隔符 |
childValueLowerCase | 可选。渲染子项时,子项的 value 是否转换为小写,默认 false。 |
options | 可选。下拉框的选项列表 |
child | 可选。子表单字段,通常用于多级表单(只有当 type 为 select 时才有该属性) |
formOption 中的参数:
| 参数 | 描述 |
|---|---|
helpUrl | 可选。显示帮助图标, 点击跳转到对应地址 |
14. 路径设置 (DIRSETTINGS)¶
代码示例:
{
opcode: 'testDirSettings',
blockType: BlockType.COMMAND,
text: "设置路径 [SETTINGS]",
arguments: {
SETTINGS: {
type: ArgumentType.DIRSETTINGS,
inputParams: {
color1: "#3498db", // 蓝色
color2: "#13755e", // 绿色
}
}
}
}
参数说明:
| 参数 | 描述 |
|---|---|
type | 必填。参数的类型 |
color1 | 可选。field 颜色, 默认 #8b92e8 |
color2 | 可选。block 上显示的背景颜色, 默认 #8b92e8 |
15. OBLOQ初始化 (OBLOQPARAMETER)¶
代码示例:
{
opcode: 'testObloqSettings',
blockType: BlockType.COMMAND,
text: "初始化OBLOQ [SETTINGS]",
arguments: {
SETTINGS: {
type: ArgumentType.OBLOQPARAMETER,
inputParams: {
color: "#3498db",
validate: (text)=>{
// ...
}
}
}
}
}
参数说明:
| 参数 | 描述 |
|---|---|
type | 必填。参数的类型 |
color | 可选。block 和 field 颜色, 默认 #5867D6 |
validate | 可选。自定义验证函数,用于限制输入 |
16. MQTT初始化 (MQTTPARAMETER)¶
代码示例:
{
opcode: 'testMQTTSettings',
blockType: BlockType.COMMAND,
text: "初始化MQTT [SETTINGS]",
arguments: {
SETTINGS: {
type: ArgumentType.MQTTPARAMETER,
}
}
}
参数说明:
| 参数 | 描述 |
|---|---|
type | 必填。参数的类型 |
17. 图片设置 (IMGSETTINGS)¶
代码示例:
{
opcode: 'testImgSettings',
blockType: BlockType.COMMAND,
text: "图片 [SETTINGS]",
arguments: {
SETTINGS: {
type: ArgumentType.IMGSETTINGS,
inputParams: {
color1: "#3498db", // 蓝色
color2: "#13755e", // 绿色
}
}
}
}
参数说明:
| 参数 | 描述 |
|---|---|
type | 必填。参数的类型 |
color1 | 可选。field 颜色, 默认 #8b92e8 |
color2 | 可选。block 上显示的背景颜色, 默认 #8b92e8 |
18. 在线图片设置 (ONLINEIMGSETTING)¶
代码示例:
{
opcode: 'testOnlineImgSettings',
blockType: BlockType.COMMAND,
text: "在线图片 [SETTINGS]",
arguments: {
SETTINGS: {
type: ArgumentType.ONLINEIMGSETTING
}
}
}
参数说明:
| 参数 | 描述 |
|---|---|
type | 必填。参数的类型 |
19. 图片预览 (IMGPREVIEW)¶
代码示例:
{
opcode: 'testImgPreview',
blockType: BlockType.COMMAND,
text: "显示图片[PREVIEW]在坐标X [X] Y [Y]",
arguments: {
PREVIEW: {
type: ArgumentType.IMGPREVIEW,
inputParams: {
color: "#87C482",
}
},
X: {
type: ArgumentType.SLIDER,
defaultValue: 39,
inputParams: {
rangeMax: 127,
rangeMin: 0
}
},
Y: {
type: ArgumentType.SLIDER,
inputParams: {
rangeMax: 63,
rangeMin: 0
},
defaultValue: 7
}
}
}
参数说明:
| 参数 | 描述 |
|---|---|
type | 必填。参数的类型 |
color | 可选。block 和 field 颜色。默认 field 颜色 #87C482, block 背景颜色 #7FB57B |
使用该field时, 一定需要把坐标(属性名称必须是
X和Y)加上, 该坐标用于在图像预览时确定位置
20. 文本预览 (TEXTPREVIEW)¶
代码示例:
{
opcode: 'testTextPreview',
blockType: BlockType.COMMAND,
text: "屏幕显示文字 [TEXT] 在坐标 X: [X] Y: [Y] 预览 [PREVIEW]",
arguments: {
PREVIEW: {
type: ArgumentType.TEXTPREVIEW,
inputParams: {
color: "#87C482",
}
},
TEXT: {
type: ArgumentType.STRING,
defaultValue: 'Mind+',
},
X: {
type: ArgumentType.SLIDER,
defaultValue: 42,
inputParams: {
rangeMax: 127,
rangeMin: 0
},
},
Y: {
type: ArgumentType.SLIDER,
inputParams: {
rangeMax: 63,
rangeMin: 0
},
defaultValue: 22,
}
}
}
参数说明:
| 参数 | 描述 |
|---|---|
type | 必填。参数的类型 |
color | 可选。block 和 field 颜色。默认 field 颜色 #87C482, block 背景颜色 #7FB57B |
使用该field时, 一定需要把文字和坐标(属性名称必须是
TEXT,X和Y)加上, 用于在预览时显示文字和确定文字位置
21. 内置图像资源 (BUILTINIMG)¶
代码示例:
{
opcode: 'testBuiltInImg',
blockType: BlockType.COMMAND,
text: "显示内置图像 [BUILTINIMG]",
arguments: {
BUILTINIMG: {
type: ArgumentType.BUILTINIMG,
inputParams: {
color: "#87C482",
value: "face/3.pbm" // 是个字符串
}
}
}
}
参数说明:
| 参数 | 描述 |
|---|---|
type | 必填。参数的类型 |
color | 可选。block 和 field 颜色。默认 field 颜色 #87C482, block 背景颜色 #7FB57B |
value | 可选。显示图片, 默认 "face/1.pbm" |
22. 红外遥控器 (INFRAREDTEXT)¶
代码示例:
{
opcode: 'testInfraredBtn',
blockType: BlockType.BOOLEAN,
text: "红外3引脚是否接收到 [BUTTON] 按钮按下?",
arguments: {
BUTTON: {
type: ArgumentType.INFRAREDTEXT,
defaultValue: "Back",
}
}
}
参数说明:
| 参数 | 描述 |
|---|---|
type | 必填。参数的类型 |
defaultValue | 可选。展示的默认值, 默认 "Power" |
23. 文本域 (TEXTAREA)¶
代码示例:
{
opcode: 'testTextarea',
blockType: BlockType.COMMAND,
text: "SD 向文件 [FILE] 写入 [TEXTAREA] ",
arguments: {
FILE: {
type: ArgumentType.STRING,
defaultValue: "file.txt",
},
TEXTAREA: {
type: ArgumentType.TEXTAREA,
inputParams: {
inputValue: "这是一段测试文字",
color: "#EB2F96",
}
}
}
}
参数说明:
| 参数 | 描述 |
|---|---|
type | 必填。参数的类型 |
inputValue | 可选。默认文本内容 |
color | 可选。block 的背景颜色, 默认 #a55b5b |
24. 事件头内置积木 (EVENTHEADINNER)¶
代码示例:
{
opcode: 'receivedData',
blockType: BlockType.HAT,
isEdgeActivated: false, // 如果为true, runtime每隔17ms调用一次block执行函数,如果为false, 必须调用 runtime.extensionStartHats 函数触发block执行函数.
shouldRestartExistingThreads: false, // 如果为false, 该事件头下的积木块正在运行时, 不会被下一次事件触发所打断
text: "当 Topic_1 接收到 [MSG]",
arguments: {
MSG: {
type: ArgumentType.EVENTHEADINNER,
inputParams: {
parent: 'receivedData',
block: "IoTMsg_eventHeadInner_"
}
}
}
},
{
opcode: 'IoTMsg_eventHeadInner_',
blockType: BlockType.REPORTER,
text: "MQTT消息",
noIcon: true,
outputTypes: [DataType.STRING]
}
参数说明:
| 参数 | 描述 | 示例 |
|---|---|---|
type | 必填。参数的类型 | |
parent | 必填。父级block的 opcode | |
block | 必填。子级block的 opcode | |
noIcon | 可选。是否有图标 默认 false (有图标) |
opcode 格式: xxx_eventHeadInner_































