我的程序在 pcan can-bus 上发送了近 50 条消息,所有消息都具有不同的 ID。然后再次连续循环,从第一个 ID 的新数据开始。
我已经能够初始化并发送单个 ID 消息,但我无法在总线上发送任何其他 ID。我正在使用示波器分析总线信号,因此我可以看到总线上有哪些消息。
这是代码的一部分,显示了我如何尝试在总线上发送 2 条连续消息,但它只发送 id=100 消息而不发送下一个消息。为此,我只导入了 python-can 库。
for i in range(self.n_param):
if self.headers[i] == 'StoreNo': # ID 100 byte size = 3
to_can_msg = []
byte_size = 3
hex_data = '0x{0:0{1}X}'.format(int(self.row_data[i], 10), byte_size * 2)
to_can_msg = [int(hex_data[2:4], 16), int(hex_data[5:6], 16), int(hex_data[7:8], 16)]
bus_send.send(Message(arbitration_id=100, data=to_can_msg))
elif self.headers[i] == 'Date': # ID 101 byte size = 4
to_can_msg = []
byte_size = 4
date_play = int(self.row_data[i].replace("/", ""), 10)
hex_data = '0x{0:0{1}X}'.format(date_play, byte_size * 2)
to_can_msg = message_array(hex_data)
bus_send.send(Message(arbitration_id=101, data=to_can_msg))
我正在关闭每个循环bus_send.reset()
以清除队列中的所有未完成消息并在下一个循环中重新开始。
非常感谢!