在矢量硬件上使用 python-can 库在 CAN FD 上发送长消息
Sending long messages on CAN FD using python-can library on vector hardware
我正在尝试在 CAN FD 上发送一条很长的消息 (DLC=70),但没有成功。我已成功发送较短的消息 (DLC=8)
我使用 python-can 包按如下方式设置总线:
can.interface.Bus(bustype='vector', app_name='CANoe', channel=[0], bitrate=500000, data_bitrate=2000000, fd=True)
只要消息简短,一切正常。
CANoe 的日志文件显示除了前 8 位之外没有写入任何内容。我真的很感激在这件事上的任何帮助。如果问题更清楚更详细,请告诉我
这些是我要发送的消息
msg6 = can.Message(arbitration_id=0x74A, dlc=64, data=messagedata1,
extended_id=False)
task6 = bus.send(msg6)
time.sleep(5)
msg7 = can.Message(arbitration_id=0x74A, dlc=9, data=trailingbits,
extended_id=False)
task7 = bus.send(msg7)
time.sleep(5)
您已在 can-bus 的设置中指出它是 CAN-FD,但您还需要通过设置 is_fd=True
将其包含在您构造的消息中。
所以不用
msg6 = can.Message(arbitration_id=0x74A, dlc=15, data=messagedata1, extended_id=False)
task6 = bus.send(msg6)
time.sleep(5)
msg7 = can.Message(arbitration_id=0x74A, dlc=9, data=trailingbits, extended_id=False)
task7 = bus.send(msg7)
time.sleep(5)
你能试试吗
msg6 = can.Message(arbitration_id=0x74A, dlc=15, data=messagedata1, is_fd=True, extended_id=False)
task6 = bus.send(msg6)
time.sleep(5)
msg7 = can.Message(arbitration_id=0x74A, dlc=9, data=trailingbits, is_fd=True, extended_id=False)
task7 = bus.send(msg7)
time.sleep(5)
供您参考,请查看第 3.3 节。 python-can documentation.
的
我知道这是旧的,但事实证明在总线配置中设置 fd 标志也让我开始发送 CAN FD 消息。像这样将“fd=True”添加到总线
busA=can.interface.Bus(bustype='socketcan',channel='vcan0',bitrate=500000, fd=True)
我正在尝试在 CAN FD 上发送一条很长的消息 (DLC=70),但没有成功。我已成功发送较短的消息 (DLC=8)
我使用 python-can 包按如下方式设置总线:
can.interface.Bus(bustype='vector', app_name='CANoe', channel=[0], bitrate=500000, data_bitrate=2000000, fd=True)
只要消息简短,一切正常。
CANoe 的日志文件显示除了前 8 位之外没有写入任何内容。我真的很感激在这件事上的任何帮助。如果问题更清楚更详细,请告诉我
这些是我要发送的消息
msg6 = can.Message(arbitration_id=0x74A, dlc=64, data=messagedata1,
extended_id=False)
task6 = bus.send(msg6)
time.sleep(5)
msg7 = can.Message(arbitration_id=0x74A, dlc=9, data=trailingbits,
extended_id=False)
task7 = bus.send(msg7)
time.sleep(5)
您已在 can-bus 的设置中指出它是 CAN-FD,但您还需要通过设置 is_fd=True
将其包含在您构造的消息中。
所以不用
msg6 = can.Message(arbitration_id=0x74A, dlc=15, data=messagedata1, extended_id=False)
task6 = bus.send(msg6)
time.sleep(5)
msg7 = can.Message(arbitration_id=0x74A, dlc=9, data=trailingbits, extended_id=False)
task7 = bus.send(msg7)
time.sleep(5)
你能试试吗
msg6 = can.Message(arbitration_id=0x74A, dlc=15, data=messagedata1, is_fd=True, extended_id=False)
task6 = bus.send(msg6)
time.sleep(5)
msg7 = can.Message(arbitration_id=0x74A, dlc=9, data=trailingbits, is_fd=True, extended_id=False)
task7 = bus.send(msg7)
time.sleep(5)
供您参考,请查看第 3.3 节。 python-can documentation.
的我知道这是旧的,但事实证明在总线配置中设置 fd 标志也让我开始发送 CAN FD 消息。像这样将“fd=True”添加到总线
busA=can.interface.Bus(bustype='socketcan',channel='vcan0',bitrate=500000, fd=True)