控制器局域网络-can
描述
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) 是否为远程帧 |