OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 308|回复: 0

【JSDuino】RS485

[复制链接]

  离线 

45

主题

115

帖子

1

精华

版主

Rank: 7Rank: 7Rank: 7

积分
612
金钱
612
注册时间
2013-9-23
在线时间
80 小时
发表于 2017-6-24 10:40:12 | 显示全部楼层 |阅读模式
正点原子公众号
    通过本节的学习,您将了解到如何使用JavaScript代码来实现485通信JSDuino开发板上有一个485端子接口,分别标记为ABG,其中A表示485的正级接线、B表示负极接线、G表示共地线(一般不用接)。在js代码中注册485读取的回调函数,当有数据接收到时,代码会进入到回调函数。

    之前大家可能了解到了模块的使用方法,通过require函数将模块的入口赋值给一个变量。这个时候,这个变量我们可以给它一个专业的名称:对象。JS对象调用对象成员(其实就是变量或者函数)的时候都是这个样子的:a.xxxx可以是变量或者函数)。对于了解C++或者Java的朋友都知道,调用的对象成员必须是已经定义过的,如果没有定义则会报错。但是JavaScript语言不是这么设计的,即使你调用的对象成员没有定义,仍然不会报错。只是在运行的时候会提示你一下没有这个函数或者根本就不运行这行代码,系统也不会因为这个问题而终止。例如下面代码中的rs485.init,你把代码改成rs485.abcd,程序编译仍然通过并且可以运行。JavaScript语言为什么这么设计呢,其实像C++或者Java这类强类型语言必须先声明再使用,但是JS语言是一种弱类型动态语言,对象的成员随时都会发生变化,你也不知道什么时候对象成员会被哪个家伙改得面目全非。这样的设计非常灵活,但是需要设计人员规划好,以免出现因为运行中改变了对象成员导致某些程序运行出错的问题。但是,JavaScript永远都不会因为自己的问题而死机!

    rs485模块封装了如下几个API可供使用:
on(function)
注册485接受到数据的回调函数
参数
描述
function
注册485收到数据的回调函数,回调函数传递2个参数:bufferstring类型数据、数据长度。

init(baudrate, dataBits, stopBits, parity)
485初始化
参数
描述
Baudrate
波特率,数字型,一般有4800960019200115200
dataBits
数据位,数字型,89
StopBits
停止位,数字型,11.5
Parity
校验位,字符串型,evenodd或者none

write(string | buffer, size)
485发送数据
参数
描述
String | buffer
字符串数据或者buffer数据。当为字符串数据时,此时可以不需要指明数据长度
Size
数据长度。

[JavaScript] 纯文本查看 复制代码
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();

实验结果
当按485接收到数据后,打印数据内容和长度。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则




QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2017-11-19 16:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表
/* */