app.json-全局配置文件

本文介绍app.json-全局配置文件。

基本示例

app.json用于对轻应用进行全局配置,设置页面文件的路径、硬件I/O口的配置等。

以下是一个基本配置示例。

{
  "version": "0.0.1",
  "io": {
    "D1": {
      "type": "GPIO",
      "port": 31,
      "dir": "output",
      "pull": "pullup"
    },
    "D2": {
      "type": "GPIO",
      "port": 32,
      "dir": "output",
      "pull": "pullup"
    },
    "D3": {
      "type": "GPIO",
      "port": 33,
      "dir": "output",
      "pull": "pullup"
    }
  },
  "debugLevel": "DEBUG",
  "repl": "enable"
}

配置项说明。

配置项

类型

是否必填

描述

version

String

IoT轻应用版本号。

pages

Array

轻应用页面路径。

net

Object

网络相关配置。

io

Object

硬件接口配置。

debugLevel

String

设置日志等级,默认为ERROR

repl

String

配置交互式解释器开关,默认打开enable

说明

在JS应用代码中,通过appConfig可以获取到app.json中的内容。

version配置项

轻应用版本号。

pages配置项

app.json中的pages为数组属性,数组中每一项都是字符串,表示对应页面的路径信息。其中,第一项代表轻应用的首页。在轻应用中新增或删除页面,需要对pages数组进行修改。

页面路径不需要任何后缀,框架会自动去加载同名 .js.xml.css 文件。例如,开发目录为:

├── pages
│   ├──index
│   │    ├── index.js
│   │    ├── index.xml
│   │    └── index.css
│   ├──user
│   │    ├── user.js
│   │    └── user.xml
├── app.json
└── app.js

app.json中应当如下配置:

{
  "pages":[
    "pages/index/index",
    "pages/user/user"
  ]
}

net配置项

配置项

类型

是否必填

描述

cellular

Object

蜂窝网络相关配置。详细配置项,请参见cellular配置项。

wifi

Object

Wi-Fi相关配置。

cellular配置项

蜂窝网络相关配置,例如配置接入点名称APN、用户名密码等。一般无需配置cellular配置项,如果使用的是专网卡时则需要按需设置。

配置项

类型

是否必填

描述

apn

String

蜂窝网络接入点名称APN,默认不配置APN,系统会自动识别APN。

username

String

蜂窝网络用户名,默认为不配置用户名。

password

String

蜂窝网络密码,默认为不配置密码。

auth

Number

认证方式。

  • 0:NONE(默认)。

  • 1:PAP。

  • 2:CHAP。

  • 3:PAP or CHAP。

重要
  • 普通中国移动,中国联通,中国电信卡可以不设置apnusernamepasswordauth,模块会自动识别。

  • 专网卡需要根据卡商提供的信息配置apnusernamepasswordauth

cellular配置项示例:

{
  "version": "0.0.1",
  "net": {
    "cellular": {
      "apn": "3gnet.mnc001.mcc460.gprs",
      "username": "",
      "password": "",
      "auth": 0
    }
  },
  "debugLevel": "DEBUG"
}

IO配置项

概述

不同的模组/芯片,各个端口和管脚的功能映射是不一样的,IoT轻应用的配置文件app.json中,可将硬件(芯片)的物理端口映射成为统一的应用层逻辑端口。在替换不同的硬件或者芯片时,只需要替换app.json配置文件,便于应用的跨平台运行。

语法描述

语法描述格式定义如下:

{
  "io": {
   "objectid":{
      "type":"GPIO",
      "port":12,
      "dir":"output",
      "pull":"pullup"
    },
    "objectid2":{
      "type":"I2C",
      "port":0,
      "mode":"master",
      "addrWidth":7,
      "devAddr":270,
      "freq":100000
    }
  },
  "debugLevel": "DEBUG"
}

参数

说明

objectid

定义了一个对象,大括号里面描述了该对象的类型。 定义后可以在JS中直接使用。

type

描述了该对象的类型,可以是IoT轻应用支持的硬件扩展类型,如GPIO、I2C、ADC等。

port

描述了该对象的端口,需要根据实际硬件连接及芯片的PIN脚映射关系来填写。

dir

是GPIO类型特有的,用于描述GPIO输入输出及上拉下拉,其他如ADC类型则有sampling采样频率的类型描述。

pull

外设type说明

IO配置项的type用于描述该对象的硬件端口类型,而每一种type也有不同的属性字段,如GPIO与ADC的属性字段是不一样的。

GPIO

属性字段

数据类型

属性值

是否必须

字段说明

port

Number

1

配置端口值,端口值跟硬件接口有一一对应关系。

dir

String

output

配置引脚方向,设置为输出模式(默认)。

input

配置引脚方向,设置为输入模式。

irq

配置引脚方向,设置为中断模式。

analog

配置引脚方向,设置为模拟IO模式。

pull

String

pulldown

配置引脚电阻,设置为上拉模式(默认)。

pullup

配置引脚电阻,设置为下拉模式。

opendrain

配置引脚电阻,设置为开漏模式。

intMode

String

rising

配置引脚中断模式,设置为上升沿触发。

falling

配置引脚中断模式,设置为下降沿触发。

both

配置引脚中断模式,设置为边沿触发(默认)。

示例
{
  "io": {
    "beep": {
        "type": "GPIO",	
        "port": 22,
        "dir": "output",
        "pull": "pullup"
    },
    "key": {
        "type": "GPIO",
        "port": 23,
        "dir": "irq",
        "pull": "pullup",
        "intMode": "rising"
    }
  },
  "debugLevel": "DEBUG"
}

UART

属性字段

数据类型

属性值

是否必须

字段说明

port

Number

1

配置端口值,这里跟芯片datasheet上的端口对应。

dataWidth

Number

5/6/7/8

串口数据宽度值,默认为8 bits。

baudRate

Number

9600、115200等

串口波特率,默认为115200。

stopBits

Number

1/2

串口停止位,默认为1。

flowControl

String

disable

流控设置,默认disable。

cts

rts

rtscts

parity

String

none

奇偶校验设置,默认none。

odd

even

示例
{
  "io": {
    "uart1":{
      "type":"UART",
      "port":1,
      "dataWidth":3,
      "baudRate":9600,
      "stopBits":1,
      "flowControl":"disable",
      "parity":"none"
    },
    "uart2":{
      "type":"UART",
      "port":2,
      "dataWidth":3,
      "baudRate":115200,
      "stopBits":1,
      "flowControl":"disable",
      "parity":"none"
    }
  },
  "debugLevel": "DEBUG"
}

I2C

属性字段

数据类型

属性值

是否必须

字段说明

port

Number

1

配置端口值,这里跟芯片datasheet上的端口对应。

addrWidth

Number

7或10

配置I2C总线地址宽度,默认7。

freq

Number

100000、400000等

配置I2C总线频率,默认300000。

mode

String

master或slave

配置I2C总线主从模式,默认master。

devAddr

Number

224等

配置I2C从设备地址,默认224。

示例
{
  "io": {
    "codec":{
      "type":"I2C",
      "port":0,
      "mode":"master",
      "addrWidth":7,
      "devAddr":27,
      "freq":100000
    }
  },
  "debugLevel": "DEBUG"
}

SPI

属性字段

数据类型

属性值

是否必须

字段说明

port

Number

1

配置端口值,这里跟芯片datasheet上的端口对应。

mode

String

master或slave

配置SPI总线模式,默认master。

freq

Number

3250000、6500000等

配置SPI总线频率。

示例
{
  "io": {
    "flash":{
      "type":"SPI",
      "port":1,
      "mode":"master",
      "freq":3250000
    }
  },
  "debugLevel": "DEBUG"
}

ADC

属性字段

数据类型

属性值

是否必须

字段说明

port

Number

1

配置端口值,这里跟芯片datasheet上的端口对应。

sampling

Number

12000000

配置ADC采样率。

示例
{
  "io": {
    "voltage": {
    	"type": "ADC",
      "port": 1,
      "sampling": 12000000
    }
  },
  "debugLevel": "DEBUG"
}

DAC

属性字段

数据类型

属性值

是否必须

字段说明

port

Number

1

配置端口值,这里跟芯片datasheet上的端口对应。

示例
{
  "io": {
    "voltage": {
    	"type": "ADC",
      "port": 1
    }
  },
  "debugLevel": "DEBUG"
}

PWM

属性字段

数据类型

属性值

是否必须

字段说明

port

Number

1

配置端口值,这里跟芯片datasheet上的端口对应。

示例
{
  "io": {
    "led": {
    	"type": "PWM",
      "port": 1
    }
  },
  "debugLevel": "DEBUG"
}

TIMER

属性字段

数据类型

属性值

是否必须

字段说明

port

Number

1

配置端口值,这里跟芯片datasheet上的端口对应。

示例
{
  "io": {
    "timer": {
    	"type": "TIMER",
      "port": 1
    }
  },
  "debugLevel": "DEBUG"
}

debugLevel配置项

配置调试日志等级,分为如下等级,默认为ERROR

等级

说明

DEBUG

显示debug级别的日志。

INFO

显示info级别的日志。

WARN

显示warning级别的日志。

ERROR

显示error级别的日志。

FATAL

显示fatal级别的日志。

REPL配置项(交互式解释器)

配置交互式解释器开关,默认打开。打开这个功能后,在硬件平台上通过串口进入REPL。

REPL来源于Node.js,类似PC上的终端或Shell,我们可以在这个终端中输入JavaScript代码,即可解释执行。

app.json参考示例

{
  "io": {
    "I2C0": {
      "type": "I2C",
      "port": 0,
      "addrWidth": 7,
      "freq": 100000,
      "mode": "master",
      "devAddr": 118
    },
    "ADC0": {
      "type": "ADC",
      "port": 0,
      "sampling": 12000000
    },
    "ADC1": {
      "type": "ADC",
      "port": 1,
      "sampling": 12000000
    },
    "UART1":{
      "type":"UART",
      "port":1,
      "dataWidth":8,
      "baudRate":115200,
      "stopBits":1,
      "flowControl":"disable",
      "parity":"none"
    },
    "UART2":{
      "type":"UART",
      "port":2,
      "dataWidth":8,
      "baudRate":115200,
      "stopBits":1,
      "flowControl":"disable",
      "parity":"none"
    },
    "SPI0":{
      "type":"SPI",
      "port":0,
      "mode":"master",
      "freq":3250000
    },
    "D0": {
      "type": "GPIO",
      "port": 51,
      "dir": "output",
      "pull": "pulldown"
    },
		"D1": {
      "type": "GPIO",
      "port": 52,
      "dir": "output",
      "pull": "pulldown"
    },
    "D2": {
      "type": "GPIO",
      "port": 17,
      "dir": "output",
      "pull": "pulldown"
    },
    "D3": {
      "type": "GPIO",
      "port": 16,
      "dir": "output",
      "pull": "pulldown"
    },
    "D4": {
      "type": "GPIO",
      "port": 59,
      "dir": "output",
      "pull": "pulldown"
    },
    "D5": {
      "type": "GPIO",
      "port": 121,
      "dir": "output",
      "pull": "pulldown"
    },
    "D6": {
      "type": "GPIO",
      "port": 54,
      "dir": "output",
      "pull": "pulldown"
    },
    "D7": {
      "type": "GPIO",
      "port": 53,
      "dir": "output",
      "pull": "pulldown"
    },
    "D8": {
      "type": "GPIO",
      "port": 124,
      "dir": "output",
      "pull": "pulldown"
    },
    "D9": {
      "type": "GPIO",
      "port": 122,
      "dir": "output",
      "pull": "pulldown"
    },
    "D10": {
      "type": "GPIO",
      "port": 34,
      "dir": "output",
      "pull": "pulldown"
    },
    "D11": {
      "type": "GPIO",
      "port": 36,
      "dir": "output",
      "pull": "pulldown"
    },
    "D12": {
      "type": "GPIO",
      "port": 35,
      "dir": "output",
      "pull": "pulldown"
    },
    "D13": {
      "type": "GPIO",
      "port": 33,
      "dir": "output",
      "pull": "pulldown"
    },
    "D14": {
      "type": "GPIO",
      "port": 57,
      "dir": "output",
      "pull": "pulldown"
    },
    "D15": {
      "type": "GPIO",
      "port": 0,
      "dir": "output",
      "pull": "pulldown"
    },
    "D16": {
      "type": "GPIO",
      "port": 1,
      "dir": "output",
      "pull": "pulldown"
    }
  },
  "debugLevel": "DEBUG"
}