微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在类似于 MCP_CAN Arduino 库的 Socketcan / Python-can 中向多个指定设备 ID 发送 CAN 消息?

如何解决在类似于 MCP_CAN Arduino 库的 Socketcan / Python-can 中向多个指定设备 ID 发送 CAN 消息?

Python Socketcan / python-can 中是否有等效项允许将 CAN 消息发送到特定的目标设备 ID,就像它在 Arduino 设备上的处理方式一样? Arduino CAN 总线板使用 MCP_CAN 库,它允许在命令 sendMsgBuf(ID,EXT,DLC,DATA) 中定义协议控制器的 ID 过滤器模式。我连接了多个设备,我可以发送 ID 字段设置为...的特定 CAN 消息... CAN.sendMsgBuf(0x01...)、CAN.sendMsgBuf(0x02...)、CAN.sendMsgBuf(0x03...)。但是,当在运行 socketcan 的 Linux 板上时,没有等效的 Python-can 与 cansend 命令。

Python-Can / Linux

  import can
  def send_one()
      bus = can.interface.Bus(bustype='socketcan',channel='can0',bitrate=500000)
      msg = can.Message(arbitration_id=0xc0ffee,data=[0,25,1,3,4,1],is_extended_id=False)
     try:
         bus.send(msg)
         print("Message sent on {}".format(bus.channel_info))
     except can.CanError:
        print("Message NOT sent")

 if __name__ == '__main__':
     send_one()

Arduino 的 MCP_CAN 库

//sendMsgBuf(ID,DATA)
...sendMsgBuf(0x01,DATA) //Send to Device ID 0x01
...sendMsgBuf(0x02,DATA) //Send to Device ID 0x02
...sendMsgBuf(0x02,DATA) //Send to Device ID 0x03

在标准的 socketcan 示例中,can.Message() 命令为传输设备设置了仲裁 ID,但是当我连接了多个设备时,它没有定义我尝试将其发送到的设备的 can_id到正在等待消息的canbus。我将如何发送 CAN 消息以假设设备 0x01、设备 0x02 和设备 0x03 可以?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。