Skip to content

模块规则 ​

每个扩展模块对应一种特定外设,提供相应的封装指令集。通过在指令中引入 module 属性,将指令名称 action 限定在模块范围内。例如:

json
{
  "module": "lcd",
  "action": "config"
}

模块指令遵循以下规则:

  • 模块的指令JSON对象固定包含module属性,标识模块名称。例如{"module": "lcd"}表示LCD模块的指令。

  • 除config指令外,模块的应答JSON对象固定包含module属性,标识应答所属的模块。

  • 与基础指令类似,扩展模块通过各自的 config 指令进行配置。所有config指令(包括基础指令与各模块的config)返回的都是全局配置信息,包括所有硬件资源和扩展模块的配置。

  • 除非特别说明,模块先要由config指令进行配置,之后才可使用其他的操作指令。

  • 模块使用与I2C或SPI设备类似的访问方式,即通过设备名访问。同一模块可能有多个实例(设备),例如多个舵机、多个数码管。多个实例在模块内通过设备名区分。当一个模块只有单一实例时,可以省略设备名。

  • 模块config指令的标准模板如下:

    json
    {
      "module": "foo",
      "action": "config",
      "device": [
        {
          "name": "bar",
          ...
        }
      ]
    }
    • device - 设备配置对象数组,包含多个设备配置对象。
      • name - 用户定义的设备名(实例的名称)。
      • ... - 模块的配置参数(该实例的配置)。

    当仅有单一设备时,可以省略设备名,并使用 单元素数组简写:

    json
    {
      "module": "foo",
      "action": "config",
      "device": {
        ...
      }
    }