我正在使用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 Line-> CANable适配器-> USB Wire-> RaspberryPi
我似乎也找不到任何具有清晰简洁示例的文档。感谢所有提前答复的人。
链接到文档:https://buildmedia.readthedocs.org/media/pdf/python-can/develop/python-can.pdf
答案 0 :(得分:0)
在您的代码中,您尝试使用socketcan接口,该接口在Windows上不可用。
您的CANable适配器提供了一个串行接口。尝试以下行:
bus = can.interface.Bus(bustype='serial', channel='COM1', bitrate=250000)
也许您必须使用其他COM端口号而不是COM1
有关详细信息,请参阅python-can文档章节CAN over serial
。