本文介绍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 | 否 | 设置日志等级,默认为 |
repl | String | 否 | 配置交互式解释器开关,默认打开 |
在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 | 否 | 认证方式。
|
普通中国移动,中国联通,中国电信卡可以不设置
apn
、username
、password
、auth
,模块会自动识别。专网卡需要根据卡商提供的信息配置
apn
、username
、password
、auth
。
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类型则有 |
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 | 是 | 配置端口值,这里跟芯片 |
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 | 是 | 配置端口值,这里跟芯片 |
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 | 是 | 配置端口值,这里跟芯片 |
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 | 是 | 配置端口值,这里跟芯片 |
sampling | Number | 12000000 | 否 | 配置ADC采样率。 |
示例
{
"io": {
"voltage": {
"type": "ADC",
"port": 1,
"sampling": 12000000
}
},
"debugLevel": "DEBUG"
}
DAC
属性字段 | 数据类型 | 属性值 | 是否必须 | 字段说明 |
port | Number | 1 | 是 | 配置端口值,这里跟芯片 |
示例
{
"io": {
"voltage": {
"type": "ADC",
"port": 1
}
},
"debugLevel": "DEBUG"
}
PWM
属性字段 | 数据类型 | 属性值 | 是否必须 | 字段说明 |
port | Number | 1 | 是 | 配置端口值,这里跟芯片 |
示例
{
"io": {
"led": {
"type": "PWM",
"port": 1
}
},
"debugLevel": "DEBUG"
}
TIMER
属性字段 | 数据类型 | 属性值 | 是否必须 | 字段说明 |
port | Number | 1 | 是 | 配置端口值,这里跟芯片 |
示例
{
"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"
}