Как создать виртуальный порт CAN в Linux? (С++)

Я хочу создать программу, которая будет эмулировать порт CAN для тестирования для другого большого приложения. Программа должна отправлять ранее записанные данные через эту виртуальную CAN. У кого-нибудь есть опыт с такой вещью?

Я собираюсь установить виртуальный COM и отправить через него данные, упакованные в CAN-фреймы. Может ли это сработать? И как я могу установить виртуальный COM на Linux? Найден этот поток Виртуальный последовательный порт для Linux но, к сожалению, я не понимаю, как это можно реализовать в исходном коде программы (начинающий пользователь Linux и программист под Linux).

Хотелось бы прочитать ваш опыт и предложения.

Ответ 1

Вам нужен SocketCAN драйвер, который доступен в современных дистрибутивах Linux, таких как Ubuntu и т.д. SocketCAN предоставляет виртуальный драйвер порта CAN:

sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0

Теперь вы можете отправлять и получать кадры CAN через устройство vcan0. Статья в Википедии содержит простой пример кода о том, как использовать SocketCAN.

Вам также понадобится can-utils для тестирования.

Вы найдете более подробную информацию о SocketCAN и его использовании на eLinux.org