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

results matching ""

    No results matching ""