关于JavaScript轻应用的文档请参考:轻应用总览
为了便于开发者使用底层硬件的功能,轻应用里以JSAPI的形式对底层硬件接口做了封装。主要包含uart、gpio、adc、dac、pwm、i2c、spi、timer、rtc、watch dog等。
板级配置
板级详细配置说明见:app.json - 全局配置文件说明
{
"io": {
"serial1":{
"type":"UART",
"port":2,
"dataWidth":8,
"baudRate":115200,
"stopBits":0,
"flowControl":"disable",
"parity":"none"
}
},
"debugLevel": "DEBUG"
}
业务脚本
var uart = require('uart');
var msgbuf = 'this is amp uart test'
// uart open
var serial = uart.open({
id: 'serial1'
});
// uart write
serial.write(msgbuf);
// uart read
var value = serial.read();
console.log('sensor value is ' + value);
// uart data event
serial.on('data', function(data) {
console.log('uart receive data is ' + data);
});
// uart close
serial.close();
open(Object options)
打开串口,创建 UART 实例。
入参
Object类型,属性如下:
属性 |
类型 |
必填 |
描述 |
id |
String |
是 |
在app.json中定义的UART id名称 |
返回
事件:'data'
当串口接收到新数据时,会触发'data'
事件,'data'
事件回调函数参数:
参数 |
类型 |
必填 |
描述 |
data |
ArrayBuffer |
是 |
串口接收到的数据 |
UART.write(String|ArrayBuffer data)
发送串口数据,该函数为阻塞函数,串口发送完成后才会返回。
入参
参数 |
类型 |
必填 |
描述 |
data |
String或ArrayBuffer |
是 |
需要发送到串口的数据 |
UART.read(Number bytes)
主动读取指定bytes的串口数据。
入参
参数 |
类型 |
必填 |
描述 |
bytes |
Number |
是 |
需要读取的字节个数 |
返回值
UART.close()
关闭串口实例。
UART.on(String event, Function cb)
监听串口事件。
板级配置
板级详细配置说明见:app.json - 全局配置文件说明
{
"io": {
"led": {
"type": "GPIO",
"port": 23,
"dir": "output",
"pull": "pullup"
},
"key": {
"type": "GPIO",
"port": 25,
"dir": "input",
"pull": "pullup",
"intMode": "rising"
}
},
"debugLevel": "DEBUG"
}
业务脚本
var gpio = require('gpio');
// led
var led = gpio.open({
id: 'led'
});
// set led gpio level
led.writeValue(1);
led.readValue();
led.writeValue(0);
led.readValue();
// led toggle
led.toggle();
// key
var key = gpio.open({
id: 'key'
});
//key trigger callback
key.onIRQ({
trigger: 'rising',
cb: function() {
console.log('key pressed\n');
}
});
// release led&key
led.close();
key.close();
open(Object options)
打开GPIO接口,创建 GPIO 实例。
入参
Object类型,属性如下:
属性 |
类型 |
必填 |
描述 |
id |
String |
是 |
在app.json中定义的GPIO id名称 |
返回
GPIO.writeValue(Number level)
设置GPIO电平值,GPIO引脚为输出模式时可用。
入参
属性 |
类型 |
必填 |
描述 |
level |
Number |
是 |
电平值,1(高电平) 或者 0(低电平) |
GPIO.toggle()
切换GPIO的电平,当前GPIO电平为低电平时设置为高电平,当前GPIO电平为高电平时设置为低电平。
GPIO.onIRQ(Function cb)
开启引脚中断触发,引脚为输入模式时可用。
入参
属性 |
类型 |
必填 |
描述 |
cb |
Function |
否 |
引脚中断触发回调函数 |
GPIO.readValue()
读取GPIO电平值,输入模式和输出模式时均可用。
返回值
GPIO.close()
关闭GPIO实例。
板级配置
板级详细配置说明见:app.json - 全局配置文件说明
{
"io": {
"battery": {
"type": "ADC",
"port": 1,
"sampling": 12000000
}
},
"debugLevel": "DEBUG"
}
业务脚本
var adc = require('adc');
// voltage
var vol = adc.open({
id: 'battery'
});
// read voltage
var value = vol.readValue();
console.log('voltage value is ' + value);
vol.close();
open(Object options)
打开ADC,创建 ADC 实例。
入参
属性 |
类型 |
必填 |
描述 |
id |
String |
是 |
在app.json中定义的ADC id名称。 |
返回
ADC.readValue()
读取ADC数据。
返回值
ADC.close()
关闭ADC实例。
板级配置
板级详细配置说明见:app.json - 全局配置文件说明
{
"io": {
"voltage": {
"type": "DAC",
"port": 1
}
},
"debugLevel": "DEBUG"
}
业务脚本
var dac = require('dac');
// led
var voltage = dac.open({
id: 'voltage'
});
voltage.writeValue(65536 / 2);
var value = voltage.readValue();
console.log('voltage value is ' + value);
voltage.close();
open(Object options)
打开DAC,创建 DAC 实例,默认启动DAC电压输出。
入参
Object类型,属性如下:
属性 |
类型 |
必填 |
描述 |
id |
String |
是 |
在app.json中定义的DAC id名称。 |
返回
DAC.readValue()
读取DAC输出值。
返回值
DAC.writeValue(Number value)
设置DAC输出值。
入参
属性 |
类型 |
必填 |
描述 |
value |
Number |
是 |
需要设置的DAC值 |
DAC.close()
关闭DAC实例。关闭DAC实例后,也会停止DAC电压输出。
板级配置
板级详细配置说明见:app.json - 全局配置文件说明。
{
"io": {
"motor":{
"type":"PWM",
"port":4
}
},
"debugLevel": "DEBUG"
}
业务脚本
var pwm = require('pwm');
// motor start
var motor = pwm.open({
id: 'motor'
});
// get motor option
var freq = motor.get().freq;
var duty = motor.get().duty;
console.log('pwm config freq is ' + freq + ' duty is ' + duty);
// set motor option
motor.set(0.5, 500000);
// motor stop
motor.close();
open(Object options)
打开PWM,创建 PWM 实例。
入参
属性 |
类型 |
必填 |
描述 |
id |
String |
是 |
在app.json中定义的PWM id名称。 |
返回
PWM.set(Number duty, Number freq)
设置PWM参数,同时会启动PWM输出。
入参
属性 |
类型 |
描述 |
duty |
Number |
设置PWM占空比,范围在0~100,单位是百分比 |
freq |
Number |
设置PWM的频率,单位是HZ |
PWM.get()
获取PWM参数。
返回值
Object类型,详细的属性为:
属性 |
类型 |
描述 |
duty |
Number |
PWM占空比。 |
freq |
Number |
PWM的频率。 |
PWM.close()
关闭PWM实例,同时也会停止PWM输出。
板级配置
板级详细配置说明见:app.json - 全局配置文件说明
{
"io": {
"i2c1":{
"type":"I2C",
"port":0,
"mode":"slave",
"addrWidth":7,
"devAddr":27,
"freq":400000
}
},
"debugLevel": "DEBUG"
}
业务脚本
var i2c = require('i2c');
var memaddr = 0x18;
var msgbuf = [0x10, 0xee];
// sensor
var sensor = i2c.open({
id: 'i2c1'
});
// sensor write
sensor.write(msgbuf);
var value = sensor.read(2);
console.log('sensor value is ' + value);
// sensor write to memory address
sensor.writeMem(memaddr, msgbuf);
// sensor read from memory address
var vol = sensor.readMem(memaddr, 2);
console.log('sensor read mem vol is ' + vol);
sensor.close();
open(Object options)
打开I2C,创建 I2C 实例。
入参
属性 |
类型 |
必填 |
描述 |
id |
String |
是 |
指定要打开的I2C端口。 |
返回
I2C.write(String|ArrayBuffer data)
发送数据,该函数为阻塞函数,I2C发送完成后才会返回。
入参
属性 |
类型 |
必填 |
描述 |
data |
String或ArrayBuffer |
是 |
要发送的数据 |
I2C.writeMem(ArrayBuffer memaddr, String|ArrayBuffer data)
向寄存器地址memaddr
发送数据,该函数为阻塞函数,I2C发送完成后才会返回。
入参
属性 |
类型 |
必填 |
描述 |
memaddr |
Number |
是 |
寄存器地址memaddr |
data |
String或ArrayBuffer |
是 |
要发送的数据 |
I2C.read(Number bytes)
主动读取指定bytes
的I2C数据。该函数为阻塞函数,会一直等待读取指定bytes
的数据。
入参
属性 |
类型 |
必填 |
描述 |
bytes |
Number |
是 |
需要读取的字节个数 |
返回值
I2C.readMem(String|ArrayBuffer memaddr, Number bytes)
主动向寄存器地址memaddr
读取指定bytes
的I2C数据。该函数为阻塞函数,会一直等待读取指定bytes
的数据。
入参
属性 |
类型 |
必填 |
描述 |
memaddr |
Number |
是 |
寄存器地址memaddr |
bytes |
Number |
是 |
需要读取的字节个数 |
返回值
I2C.close()
关闭I2C实例。
板级配置
板级详细配置说明见:app.json - 全局配置文件说明
{
"io": {
"sensor1":{
"type":"SPI",
"port":1,
"mode":"slave",
"freq":3250000
}
},
"debugLevel": "DEBUG"
}
业务脚本
var spi = require('spi');
var msgbuf = [0x10, 0xee];
// spi sensor
var sensor = spi.open({
id: 'sensor1'
});
sensor.write(msgbuf);
var value = sensor.read(2);
console.log('sensor value is ' + value);
sensor.close();
open(Object options)
打开SPI,创建 SPI 实例。
入参
属性 |
类型 |
必填 |
描述 |
id |
String |
是 |
指定要打开的SPI端口 |
返回
SPI.write(String|ArrayBuffer data)
通过SPI发送数据,该函数为阻塞函数,SPI发送完成后才会返回。
入参
属性 |
类型 |
必填 |
描述 |
data |
String | ArrayBuffer |
是 |
需要发送的数据 |
SPI.read(Number bytes)
读取指定bytes的SPI数据,该函数为阻塞函数,读取到指定bytes的数据后才会返回。
入参
属性 |
类型 |
必填 |
描述 |
bytes |
Number |
是 |
指定需要读取的字节个数 |
返回值
SPI.close()
关闭SPI实例。
板级配置
板级详细配置说明见:app.json - 全局配置文件说明
{
"io": {
"timer1": {
"type": "TIMER",
"port": 1
}
},
"debugLevel": "DEBUG"
}
业务脚本
var timer = require('timer');
var timer1 = timer.open({
id: 'timer1'
});
// set timer1 timeout
timer1.setTimeout(function() {
console.log('timer1 timeout');
}, 1000);
// timer1.clearTimeout();
// set timer1 interval
timer1.setInterval(function() {
console.log('timer1 interval');
}, 1000);
// timer1.clearInterval();
timer1.close();
open(Object options)
打开硬件TIMER,创建 TIMER 实例。
入参
Object类型,属性如下:
属性 |
类型 |
必填 |
描述 |
id |
String |
是 |
在app.json中定义的TIMER id名称 |
返回
硬件TIMER可以设置成超时(setTimeout())和周期(setInterval())2种状态,但是同一时刻只能有一个状态。
TIMER.setTimeout(Function cb, Number timeout)
在指定的毫秒数后调用回调函数。
入参
属性 |
类型 |
必填 |
描述 |
cb |
Function |
是 |
定时器超时回调函数 |
timeout |
Number |
是 |
设置timer的定时时间 |
TIMER.clearTimeout()
停止执行setTimeout()
。
TIMER.setInterval(Function cb, Number time)
按照指定的周期(以毫秒计)来调用回调函数。
入参
参数option为Object类型,详细的属性为:
属性 |
类型 |
必填 |
描述 |
cb |
Function |
是 |
定时器周期回调函数 |
time |
Number |
是 |
设置timer的周期时间 |
TIMER.clearInterval()
停止执行setInterval()
。
TIMER.close()
关闭TIMER实例。
var rtc = require('rtc');
// start rtc
rtc.start();
// set rtc time
rtc.setTime(new Date());
// get rtc time
var current_time = rtc.getTime();
console.log('current time is ' + current_time);
rtc.close();
rtc.start()
启动RTC。
rtc.setTime(Date time)
设置RTC时间。
入参
rtc.getTime()
获取RTC当前时间。
返回值
rtc.close()
关闭RTC。
业务脚本
var wdg = require('wdg');
//start wdg
wdg.start(2000);
// feed wdg
wdg.feed();
// stop wdg
wdg.stop();
wdg.feed()
喂狗。
wdg.stop()
停止WDG定时器。
wdg.start(Number timeout)
启动WDG定时器。如果timeout之后没有进行喂狗操作,会导致系统重启。
入参
参数 |
类型 |
是否必须 |
说明 |
timeout |
Number |
是 |
WDG超时时间,单位毫秒 |
如需更多技术支持,可加入钉钉开发者群,或者关注微信公众号
更多技术与解决方案介绍,请访问阿里云AIoT首页https://iot.aliyun.com/