2014-01-09 5 views
11

Ich möchte ein Programm erstellen, das CAN-Port für Testzwecke für eine andere große Anwendung emulieren würde. Das Programm sollte zuvor aufgezeichnete Daten über dieses virtuelle CAN senden. Hat jemand Erfahrung mit so etwas?Wie erstellt man einen virtuellen CAN-Port auf Linux? (C++)

Ich denke, um virtuelle COM zu etablieren, und senden Sie Daten in CAN-Frames verpackt. Könnte es funktionieren? Und wie könnte ich virtuelles COM auf Linux einrichten? Found this thread Virtual Serial Port for Linux aber leider bekomme ich nicht, wie es in Quellcode des Programms (Anfänger Linux-Benutzer und Programmierer unter Linux) implementiert werden könnte.

Würde gerne Ihre Erfahrungen und Vorschläge lesen.

+1

'AF_CAN' ist ganz ähnlich finden' AF_UNIX' .... Sie könnten nur Sockets verwenden ... –

Antwort

30

Sie benötigen SocketCAN Treiber, das heißt auf modernen Linux-Distributionen wie Ubuntu usw. SocketCAN stellt einen virtuellen CAN-Port-Treiber:

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

Jetzt können Sie CAN-Frames über vcan0 Gerät senden und empfangen. Der Wikipedia-Artikel enthält ein einfaches Beispiel für die Verwendung von SocketCAN.

Sie werden auch can-utils zu Testzwecken benötigen.

Sie finden weitere Informationen über SocketCAN und seine Verwendung auf eLinux.org