控制器局域网络-can

描述

_image CAN,父对象为device.net,无子对象。


事件

  • receive: 接收到帧时触发,事件函数定义: onReceive(id, data, flag), id为帧标识,data为帧数据,值为字节数组(如果是远程帧,长度为0),flag为帧标志,可通过 device.net.can-name.isExtendedFrame(flag)判断是否为扩展帧,也可通过device.net.can-name.isRemoteFrame(flag)判断是否为远程帧

  • send:帧发送成功时触发,事件函数定义: onSend(length),length为发送的帧数据长度(如果是远程帧,长度为0)

  • error: 发生错误时触发,事件函数定义: onError(error),error为错误原因,值为”tx timeout”,”no ack”,”bus off”,”bus error”,”restarted”


属性

名称

功能说明

脚本例子

rate

波特率,单位为bps, 最大值1000000 (1Mbps)

无。只能在属性面板设置,不能通过脚本修改

mode

模式:0-Normal(正常),1-ListenOnly(只听,只接收总线的数据,不发送任何信号在总线上线,适用于监听总线),2-Loopback(本地回环,本地发送的帧自己本地接收,适用于调试时使用)

无。只能在属性面板设置,不能通过脚本修改

frameTrack

帧跟踪,发送出去的帧,如果有从机接收到,自己也会收到,用于踪自己发送的帧是否被从机正常接收

device.net.can0.frameTrack=true 使能帧跟踪

方法

名称

功能说明

脚本例子

isSupported()

查询CAN是否支持,返回为布尔值

var supported = device.net.can0.isSupported() 查询是否支持

setReceiveFilter(std_ids)

设置接收过滤器,参数std_ids是标准帧ID列表,值为数组

device.net.can0.setReceiveFilter([0x123, 0x456]) 设置只接收标准帧0x123和0x456

setReceiveFilter(std_ids, ext_ids)

设置接收过滤器,参数std_ids是标准帧ID列表,值为数组;参数ext_ids是扩展帧ID列表,值为数组

device.net.can0.setReceiveFilter([0x123], [0x456]) 设置只接收标准帧0x123和扩展帧0x456

writeFrame(id)

发送标准远程帧

device.net.can0.writeFrame(0x123) 发送标准远程帧0x123

writeFrame(id, data)

发送标准数据帧,参数data为字节数组,最大长度为8

device.net.can0.writeFrame(0x123, [0xaa, 0xbb, 0xcc]) 发送标准数据帧,帧id 0x123,数据为3个字节

writeExtFrame(id)

发送扩展远程帧

device.net.can0.writeExtFrame(0x123) 发送扩展远程帧0x00000123

writeExtFrame(id, data)

发送扩展数据帧,参数data为字节数组,最大长度为8

device.net.can0.writeExtFrame(0x123, [0xaa, 0xbb, 0xcc]) 发送扩展数据帧,帧id 0x00000123,数据为3个字节

readFrame()

主动读取一帧数据,返回字节数组。一般情况下可以不调用此方法,直接从onReceive(id, data,flag)中使用参数data,值为字节数组

device.net.can0.readFrame() 读取一帧数据

isExtendedFrame(flag)

判断是否为扩展帧,返回布尔值

var extened = device.net.can0.isExtendedFame(flag) 是否为扩展帧

isRemoteFrame(flag)

判断是否为远程帧,返回布尔值

var remote = device.net.can0.isRemoteFrame(flag) 是否为远程帧