Я работал над проектом и столкнулся с проблемой команды порта, но прежде чем задать вопрос, мне нужно объяснить настройку, мою цель и мою проблему.

Настроить:

Итак, у меня Raspberry Pi 3 B+ подключен к CAN-интерфейсу CAN через USB. В Pi установлено программное обеспечение Raspian, и я использую рабочий стол для управления файлами, командную строку для выполнения программ и связи с интерфейсом CAN. Я также установил can-utils и python-can с помощью команд:

apt-get install can-utils

pip install python-can

На CANable установлено программное обеспечение Candlelight, которое позволяет мне использовать команды can-utils для связи с ним.

Цель:

Мне нужно иметь возможность воспроизводить (отправлять) сообщения CAN, хранящиеся в моих файлах .asc, с моего Pi через мой интерфейс CANable CAN, которые будут получены другим узлом CAN.

Проблема:

Таким образом, я смог настроить порт can0, подключив CANable с USB и затем используя эту команду:

ip link sudo set can0 up type может битрейт 1000000 restart-ms 100;

Я хотел проверить can0, поэтому я открыл две командной строки. Один для отправки CAN-сообщений, а другой для мониторинга полученных сообщений. Для мониторинга я использовал:

Candump -e любой, 0:0, # FFFFFFFF

и отправлять случайные сообщения на can0:

cangen can0

Вот результаты:

Результаты отправки сообщений

Мониторинг сообщений

Также, если я открываю статус can0 с помощью « ip -det -stats link show can0 », это показывает, что он находится в режиме "Error Passive" и что 10 пакетов были отброшены в TX. Таким образом, похоже, что существует проблема с подтверждением, а также проблема с буферным пространством TX. Я предположил, что это сообщение должно быть подтверждено, и если это не так, то буфер заполняется, а затем соединение разрывается. Чтобы обойти это, я активировал функцию обратной петли:

sudo ifconfig can0 down;

sudo ip link set can0 up тип может битрейт 1000000 restart-ms 100 loopback on;

Когда я делаю это, ошибок нет, и я могу видеть сообщения, используя Candump, но проблема в том, что каждая строка сообщения отображается на can0, и я вижу две одинаковые строки, повторяемые в Candump. Кроме того, я не могу найти способ сброса can0 для очистки буфера, кроме отключения CANable или выключения Pi. Я старался:

sudo ip link set can0 type может перезапуститься;

Я получаю: «Ответы RTNETLINK: неверный аргумент»

Я не получаю этих проблем, если я создаю и использую виртуальный порт CAN (vcan0) вместо того, чтобы использовать реальный физический узел CAN, такой как CANable (can0).

Вопросы

Есть ли способ передать проблему подтверждения без использования функции обратной связи, чтобы я мог отправлять нужные сообщения без эха? (Как, может быть, использование виртуального узла CAN для подтверждения сообщений)

Если я подключу другую CANable к моей CANable, будут ли подтверждаться сообщения?

Почему я не могу сбросить, даже если у меня в команде «restart-ms 100»?

Почему я не могу сбросить буфер или информацию о пакетах с помощью команды restart?

Любая помощь будет оценена.

0