这里依然操作图1.4.1所示的LED和用户按钮。和MicroPython轻应用一样,我们需要配置app.json文件,其文件和MicroPython中配置的board.json文件相同,配置如下:
JavaScript轻应用也提供了GPIO的驱动库,支持如下几个主要函数,分别如下:
(1)open(Object options):打开GPIO接口id-app.json定义的GPIO id名。
(2)GPIO.writeValue(Number level):设置GPIO的电平(GPIO配置为输出模式)1-高电平 0-低电平。
(3)GPIO.toggle():切换GPIO的输出电平,比如由高到低,由低到高。
(4)GPIO.onIRQ(Function cb):开启引脚中断触发。
(5)GPIO.readValue():读取GPIO电平值 1-高电平 0-低电平。
(6)GPIO.close():关闭GPIO实例对象。
我们编写一个每隔一秒LED闪烁一次的JavaScript轻应用,相关代码如下:
以上代码编译后,刻录到HaaS 100开发板,会发现LED1灯每隔1秒闪烁一次。对用户按键操作之前,仍需在app.json中加入如下定义声明:
捕捉该按键的中断触发事件,当按下按键时,触发对应的按键事件,具体代码如下:
以上代码刻录到HaaS 100后,按下和抬起用户按键,会看到有对应的操作信息在控制台输出。
参考1.4.3节,把HaaS100的RS485接口和YF3610-TH21温湿度模块连接在一起,并上电。
在app.json文件中增加如下定义声明:
阿里云HaaS100平台目前没有提供直接调用的Modbus通信库,仅提供了一个Modbus操作示例,不过有些繁杂,我们基于uart库自行写一个“Modbus读取保持寄存器”的函数。uart库相关函数的说明如下:
(1)UART.open(Object options):打开串口,options对象中的id对应app.json中的UART名称。
(2)UART.on(String event, Function cb):串口事件,event名称,目前为“data”, cb回调函数,回调函数中的入口参数是ArrayBuffer数组,为串口接收到的数据。
(3)UART.write(String|ArrayBuffer data)发送数据,该函数为同步函数,发送完毕后,才返回。
(4)UART.read(Number bytes):读取数据,bytes是需要读取的数据个数。返回值要么为空,要么为ArrayBuffer类型的数组。
(5)UART.close():关闭串口实例对象。
根据1.2.3节中的Modbus RTU协议介绍及YF3610-TH21温湿度模块的说明,我们需要用3号功能码,读取保持寄存器中的两个数据,然后分别除以10,获得温度和湿度的值。相关代码如下:
虽然采用了RS485接口通信,但是代码中并没有与收发切换相关的代码,这是因为HaaS100的RS485接口已经实现了收发切换,所以在应用代码中就不需要用户做收发切换了。把以上代码刻录到HaaS 100设备,然后运行,会在控制台的输出中,看到已经成功读取的温湿度值(如图1.5.9所示)。
● 图1.5.9 温湿度输出