vcan0 接口 linux 通信

vcan0 interface linux communication

Linux支持虚拟can接口。它由以下人员启用:

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

同时使用 cam-utils 例如 camsniffercansend

cansend vcan0 321#1212
cansniffer vcan0

我能看到can数据包;但仅限于同一主机内。我试过 Ubuntu VirtualBox 机器。来宾和主机 OS 都使用仅主机适配器 vboxnet0 互连。

也尝试了 SocketCAN socket(PF_CAN, SOCK_RAW, CAN_RAW) 但无法在其他机器上接收(在同一台机器上工作)在尝试使用广播管理器 socket(PF_CAN, SOCK_DGRAM, CAN_BCM) 执行 stderr 时说不支持操作

简单地说,可以在 Linux 主机之间发送和接收 CAN 数据包吗?它的虚拟机(vboxnet0)或物理连接(以太网)无关紧要。

注意:我分别使用 Ubuntu 16.04 和 12.04 作为 Host 和 Guest OS。

CAN 使用自己的物理总线。 vcan 设备设计用于测试通过总线通信而无需实际物理连接的软件,它们实际上并非由管理程序提供,而是 SocketCAN 的一部分。

从外观上看,您正试图在 Virtualbox 中建立虚拟 CAN 总线,将多台机器连接在一起,就好像它们都有 CAN 控制器并连接到物理总线一样。我看过了,但似乎不存在这样的功能,而且除了为 VirtualBox 编写扩展之外,可能不太可能。

您希望使用 CAN 有什么具体原因吗?试图从 ECU 中提取数据或与具有 CAN 控制器的嵌入式硬件通信?就台式机通信而言,以太网更方便、更快速,并且得到很好的支持。