1

Linux は仮想缶インターフェースをサポートしています。それは以下によって有効にされました:

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

cam-utilsなどcamsnifferを使用しながらcansend

cansend vcan0 321#1212
cansniffer vcan0

缶のパケットを見ることができました。ただし、同じホスト内のみ。Ubuntu VirtualBox マシンを試しました。ゲスト OS とホスト 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 をそれぞれホストとゲスト OS として使用しました。

4

1 に答える 1

4

CAN は独自の物理バスを使用します。これらのvcanデバイスは、実際の物理接続を必要とせずにバス経由で通信するソフトウェアをテストするために設計されており、実際にはハイパーバイザーによって提供されるのではなく、SocketCAN の一部です。

一見すると、Virtualbox で仮想 CAN バスを確立しようとしており、複数のマシンがすべて CAN コントローラーを持ち、物理バスに接続されているかのように接続されています。私は調べましたが、そのような機能は存在しないようであり、VirtualBox の拡張機能を作成する以上のことはおそらくありません。

CANの使用を検討している特定の理由はありますか? ECU からデータを取得したり、CAN コントローラーを備えた組み込みハードウェアと通信したりしようとしていますか? デスクトップ PC 通信に関しては、イーサネットの方がはるかに便利で、高速で、サポートも充実しています。

于 2016-05-10T02:59:03.880 に答える