1

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

我可以看到罐头数据包;但仅在同一主机内。我试过 Ubuntu VirtualBox 机器。来宾和主机操作系统都使用主机专用适配器互连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 作为主机和来宾操作系统。

4

1 回答 1

4

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

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

您希望使用 CAN 是否有特定原因?试图从 ECU 中提取数据或与具有 CAN 控制器的嵌入式硬件进行通信?就台式电脑通信而言,以太网更方便、更快捷,并且得到很好的支持。

于 2016-05-10T02:59:03.880 回答