我试图通过CAN通信协议读取来自一个设备的数据。我正在使用Kvaser CAN-USB连接器和python-can,但在发送消息后,我得到以下内容:
这是我的代码:
import can
import time
bus=can.interface.Bus(bustype='kvaser',channel=0, bitrate=250000)
print (bus)
time.sleep(1)
msg =can.Message(arbitration_id=0x032)
print(msg)
time.sleep(1)
while True:
bus.send(msg)
recvMsg = bus.recv(timeout=0.5)
print (recvMsg)
time.sleep(1)
这是我得到的回应:
Kvaser Leaf Light v2, S/N 54781 (#1)
Timestamp: 0.000000 ID: 00000032 X DLC: 0
Timestamp: 1546613346.010231 ID: 0000 S E DLC: 4 00 01 00 00 Channel: 0
根据手册,我必须使用以下内容:
这是我第一次使用这个通信协议,我已经阅读了python-can 3.0描述,但我仍然不清楚如何解决这个问题。有什么建议?
ID:0000表示错误帧!
在脚本中设置了arbitration_id = 0x032,但手册中说明了11位标识符:0x031
这是一个错字吗?
您的网络如何?你有几个节点?
你有没有终止CAN总线?
你有没有理由不使用Kvaser的PyCANlib?