本文介紹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"
}