跳转至

通用 - 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颜色通道
            },
        }
    }
}

参数说明:

参数 类型 描述 示例
type string 必填。参数的类型
defaultValue string 可选。默认显示的点阵值
colour string 可选。在block中显示的点阵的背景颜色, 默认 #F08080 颜色只能是十六进制
row number 可选。表示点阵的行数, 默认 5,最大值 16
column number 可选。表示点阵的列数, 默认 5,最大值 32
isSplit boolean 可选。是否启用分割模式,默认 false
isRGB boolean 可选。表示是否启用 RGB 模式
rgbColor string 可选。用于指定点阵颜色
使用条件:
- 当 isRGBtrue 时有效。
- 当 isSwitchfalse 时有效。
isSwitch boolean 可选。控制红绿蓝颜色的选择方式
- 当为 true 时,只能选择0 或 255;
- 当为 false 时,在 0 到 255 之间任意选择。
使用条件:
- 当 isRGBtrue 时有效。
disabledChannel string[] 可选。表示禁用的颜色选项
可选值: green, blue, red
使用条件:
- 当 isRGBtrue 时有效。
builtinMatrixs string[] 可选。内置点阵列表: 1表示点亮, 0表示熄灭

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 可选。子表单字段,通常用于多级表单(只有当 typeselect 时才有该属性)

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 可选。blockfield 颜色, 默认 #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 可选。blockfield 颜色。默认 field 颜色 #87C482, block 背景颜色 #7FB57B

使用该field时, 一定需要把坐标(属性名称必须是 XY)加上, 该坐标用于在图像预览时确定位置

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 可选。blockfield 颜色。默认 field 颜色 #87C482, block 背景颜色 #7FB57B

使用该field时, 一定需要把文字和坐标(属性名称必须是 TEXT, XY)加上, 用于在预览时显示文字和确定文字位置

21. 内置图像资源 (BUILTINIMG)

代码示例:

{
    opcode: 'testBuiltInImg',
    blockType: BlockType.COMMAND,
    text: "显示内置图像 [BUILTINIMG]",
    arguments: {
        BUILTINIMG: {
            type: ArgumentType.BUILTINIMG,
            inputParams: {
                color: "#87C482",
                value: "face/3.pbm" // 是个字符串
            }
        }
    }
}

参数说明:

参数 描述
type 必填。参数的类型
color 可选。blockfield 颜色。默认 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_