购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.5.3 Modbus协议读取温湿度

参考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 温湿度输出 1TT8RISFDM/t2ffhGKSu6XrzFjr9tNoVedxzJ+xBTOtdArX6PChRswV/1oeBJRET

点击中间区域
呼出菜单
上一章
目录
下一章
×