python-3.x - 尝试发送数据 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
解决方案
在您的代码中,您尝试使用在 Windows 上不可用的 socketcan 接口。
您的 CANable 适配器提供串行接口。尝试以下行:
bus = can.interface.Bus(bustype='serial', channel='COM1', bitrate=250000)
也许您必须使用不同的 COM 端口号而不是COM1
查看 python-can 文档章节CAN over serial
以获取更多详细信息。
推荐阅读
- html - 使用 CSS 为透明图像上的白色着色
- vue.js - Http Headers vue-apollo
- codenameone - 代号一中的 San Francisco 和 Roboto 字体
- java - 如何用休眠映射外键?
- reactjs - React useState 改变了我不变的初始状态
- firebase - 我想将我的电子商务应用的购物车详细信息保存到本地存储中
- java - 有没有办法返回调用者不可见的 API 调用元素?
- javascript - 有return语句并且什么都不返回
- sql - 如何从 WHERE 子句引用的表中获取行数据
- javascript - 我如何添加关闭按钮并调整 jQuery 模式的大小