首页 > 解决方案 > 尝试发送数据 Python CAN

问题描述

我正在使用 python can 库。我正在运行以下示例代码,但无法使其工作

from __future__ import print_function

import can

def send_one():

bus = can.interface.Bus(bustype='socketcan', channel='vcan0', bitrate=250000)

msg = can.Message(arbitration_id=0xc0ffee,
                  data=[0, 25, 0, 1, 3, 1, 4, 1],
                  is_extended_id=True)

try:
    bus.send(msg)
    print("Message sent on {}".format(bus.channel_info))
except can.CanError:
    print("Message NOT sent")

if __name__ == '__main__':
    send_one()

这是错误消息:

OSError: [WinError 10047] An address incompatible with the requested protocol was used

我不确定我哪里出错了。我对使用 CAN 接收和发送数据完全陌生。我目前的测试设置如下:

笔记本电脑 -> USB 线 -> CANable 适配器 -> CAN 线 -> CANable 适配器 -> USB 线 -> RaspberryPi

我似乎也找不到任何具有清晰简洁示例的文档。感谢所有提前回复的人。

链接到文档:https ://buildmedia.readthedocs.org/media/pdf/python-can/develop/python-can.pdf

标签: python-3.xcan-bus

解决方案


在您的代码中,您尝试使用在 Windows 上不可用的 socketcan 接口。

您的 CANable 适配器提供串行接口。尝试以下行:

bus = can.interface.Bus(bustype='serial', channel='COM1', bitrate=250000)

也许您必须使用不同的 COM 端口号而不是COM1

查看 python-can 文档章节CAN over serial以获取更多详细信息。


推荐阅读