Python Socketcan / python-can 中是否有等价物,它允许将 CAN 消息发送到特定的目标设备 ID,就像它在 Arduino 设备上的操作方式一样?Arduino CAN 总线板使用 MCP_CAN 库,它允许在命令 sendMsgBuf(ID, EXT, DLC, DATA) 中定义协议控制器的 ID 过滤模式。我连接了多个设备,可以发送 ID 字段设置为... CAN.sendMsgBuf(0x01...)、CAN.sendMsgBuf(0x02...)、CAN.sendMsgBuf(0x03...) 的特定 CAN 消息。但是,当在 Linux 板上运行 socketcan 时,没有与 cansend 命令等效的 Python-can。
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, 0, 1, 3, 1, 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, DLC, DATA)
...sendMsgBuf(0x01, DLC, DATA) //Send to Device ID 0x01
...sendMsgBuf(0x02, DLC, DATA) //Send to Device ID 0x02
...sendMsgBuf(0x02, DLC, DATA) //Send to Device ID 0x03
在一个标准的 socketcan 示例中,can.Message() 命令为发送设备设置了仲裁 ID,但是当我有多个连接到 canbus 的设备时,它没有定义我尝试将其发送到的设备的 can_id正在等待消息。我将如何发送 CAN 消息来假设设备 0x01、设备 0x02 和设备 0x03?