为什么我不能使用kvaser CAN-USB连接器从CAN消息接收数据?

问题描述 投票:0回答:1

我试图通过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

根据手册,我必须使用以下内容:

  • 比特率:250 kbs
  • 11位标识符:0x031
  • 默认设置仅限TX
  • 8字节消息结构:字节:1,描述:充电状态[%],类型:无符号字符,值:0-200 LSB = 0.5%SOC。

这是我第一次使用这个通信协议,我已经阅读了python-can 3.0描述,但我仍然不清楚如何解决这个问题。有什么建议?

python-3.x can-bus
1个回答
0
投票

ID:0000表示错误帧!

在脚本中设置了arbitration_id = 0x032,但手册中说明了11位标识符:0x031

这是一个错字吗?

您的网络如何?你有几个节点?

你有没有终止CAN总线?

你有没有理由不使用Kvaser的PyCANlib

© www.soinside.com 2019 - 2024. All rights reserved.