Попытка получить данные через Python CAN - PullRequest
0 голосов
/ 14 мая 2019

Я пытаюсь получить данные по шине CAN. Я отправляю данные с моего ноутбука Windows на Raspberry Pi. По какой-то причине скрипт python на raspberry pi просто бесконечно зависает и не отображает сообщение. Я взял пример кода из документации, но мне не повезло.

Код для получения:

"""Connect to CANable; print and echo any received frames"""
from canard import can
from canard.hw import cantact

dev = cantact.CantactDev("/dev/ttyACM0") # Connect to CANable that enumerated as ttyACM0
dev.set_bitrate(1000000) # Set the bitrate to a 1Mbaud
dev.start() # Go on the bus
count = 0

while True:
    count += 1
    frame = dev.recv() # Receive a CAN frame
    dev.send(frame) # Echo the CAN frame back out on the bus
    print(str(count) + ": " + str(frame)) # Print out the received frame

Код для отправки:

from __future__ import print_function
import can
def send_one():

    bus = can.interface.Bus(bustype='serial', channel='COM4', bitrate=1000000)

    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()

Я не уверен, что я делаю неправильно.

Вот моя реализация:

Портативный компьютер (Windows, используя код для отправки) -> USB-провод -> CANable-адаптер -> CAN-линия -> CANable-адаптер -> USB-кабель -> RaspberryPi (Linux, используя код для получения)

Спасибо всем, кто ответил заранее.

...