通过本节的学习,您将了解到如何使用JavaScript代码来实现485通信。JSDuino开发板上有一个485端子接口,分别标记为A、B、G,其中A表示485的正级接线、B表示负极接线、G表示共地线(一般不用接)。在js代码中注册485读取的回调函数,当有数据接收到时,代码会进入到回调函数。
之前大家可能了解到了模块的使用方法,通过require函数将模块的入口赋值给一个变量。这个时候,这个变量我们可以给它一个专业的名称:对象。JS对象调用对象成员(其实就是变量或者函数)的时候都是这个样子的:a.xx(xx可以是变量或者函数)。对于了解C++或者Java的朋友都知道,调用的对象成员必须是已经定义过的,如果没有定义则会报错。但是JavaScript语言不是这么设计的,即使你调用的对象成员没有定义,仍然不会报错。只是在运行的时候会提示你一下没有这个函数或者根本就不运行这行代码,系统也不会因为这个问题而终止。例如下面代码中的rs485.init,你把代码改成rs485.abcd,程序编译仍然通过并且可以运行。JavaScript语言为什么这么设计呢,其实像C++或者Java这类强类型语言必须先声明再使用,但是JS语言是一种弱类型动态语言,对象的成员随时都会发生变化,你也不知道什么时候对象成员会被哪个家伙改得面目全非。这样的设计非常灵活,但是需要设计人员规划好,以免出现因为运行中改变了对象成员导致某些程序运行出错的问题。但是,JavaScript永远都不会因为自己的问题而死机!
rs485模块封装了如下几个API可供使用: on(function) 注册485接受到数据的回调函数 参数 | | | 注册485收到数据的回调函数,回调函数传递2个参数:buffer或string类型数据、数据长度。 |
init(baudrate, dataBits, stopBits, parity) 485初始化 参数 | | | 波特率,数字型,一般有4800、9600、19200、115200 | | | | | | |
write(string | buffer, size) 485发送数据 参数 | | | 字符串数据或者buffer数据。当为字符串数据时,此时可以不需要指明数据长度 | | |
[mw_shl_code=javascript,true]var rs485 = require("rs485");
//parity为字符串:none, odd, even
rs485.init(9600, 8, 1, "none");
//485回调函数,打印数据和大小
function read_callback(data, size){
print(data);
print(size);
}
//注册485读取函数
rs485.on(read_callback);
function loop(){
while(true){
}
}
loop();
[/mw_shl_code]
实验结果 当按485接收到数据后,打印数据内容和长度。
|