实战操作
blink功能实现LED灯闪烁
- 修改项目中index.js文件内容,使用JavaScript基于TinyEngine代码如下(编辑完成ctrl + s保存):

var ledHandle1 = GPIO.open("led1");var initStatus = 1;setInterval(function() {GPIO.write(ledHandle1,initStatus);initStatus = 1 - initStatus;}, 1000);
- 修改board.json文件内容,添加以下内容(ctrl + s保存):

"led1":{"type":"GPIO","port":22,"dir":0,"pull":1},"led2": {"type": "GPIO","port": 67,"dir": 0,"pull": 1},"led3": {"type": "GPIO","port": 63,"dir": 0,"pull": 1},
- 点击IDE上方的“运行”,将代码下载到Developer Kit开发板,程序即被DeviceAgent下载到TinyEngine,稍等片刻即开始执行,Developer Kit开发板上的一盏LED开始闪烁。
从程序内容窥探JS工作台和TinyEngine的开发模式
var ledHandle1 = GPIO.open("led1");
我们使用JavaScript变量var新建ledHandle1这个变量,GPIO是个啥?led1又是个啥?
- GPIO是TinyEngine的扩展对象(可以理解成是系统预先定义好的全局对象),GPIO对象实现了使用JavaScript语言操作硬件设备真实GPIO口的能力,API如下所示:
| API | 说明 |
|---|---|
| GPIO.open(id) | 功能:打开GPIO 参数: id:和板级配置文件中的 id 保持一致 返回值:返回资源 handle |
| GPIO.close(handle) | 功能:关闭 GPIO 参数: handle:资源 handle,为 GPIO.open 的返回值; 返回值:0=ok other=fail |
| GPIO.write(handle,level) | 功能:设置 GPIO 输出电压 参数: handle:资源 handle,为 GPIO.open 的返回值; level:电平值,0或1 返回值:0=ok other=fail |
| GPIO.read(handle) | 功能:获取 GPIO 输入电压 参数: handle:资源 handle,为GPIO.open的返回值; 返回值:引脚电平值 |
| GPIO.on(handle,edge,cb) | 功能:GPIO 中断监听 参数: handle:资源 handle,为 GPIO.open 的返回值; edge:中断触发类型,”rising”上升沿触发,”falling”下降沿触发,”both”双边沿触发; cb:服务function; 返回值:0=ok other=fail |
- 只理解GPIO这个对象是不够的,还需要知道led1是什么。在blink例程中,我们在board.json添加了led1到led3的JSON描述,JS工作台和TinyEngine使用board.json描述硬件的所有功能,包括GPIO、I2C、ADC、DAC等等,新增硬件外设,也需要在board.json中对外设进行配置,调用板载上的传感器等能力,也需要对board.json进行配置。关于board.json的描述,请参照:板级配置文件board.json使用说明.md
