Пытаюсь отправить данные Python CAN - PullRequest
0 голосов
/ 13 мая 2019

Я использую библиотеку 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

1 Ответ

0 голосов
/ 14 мая 2019

В вашем коде вы пытаетесь использовать интерфейс socketcan, который недоступен в Windows.

Адаптер CANable обеспечивает последовательный интерфейс.Попробуйте следующую строку:

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

Возможно, вам придется использовать другой номер COM-порта вместо COM1

Более подробную информацию смотрите в главе документации по питон-банке CAN over serial.

...