Wie erstelle ich einen virtuellen CAN-Port unter Linux?(C++)
Frage
Ich möchte ein Programm erstellen, das den CAN-Port zu Testzwecken für eine andere große Anwendung emuliert.Das Programm sollte zuvor aufgezeichnete Daten über diesen virtuellen CAN senden.Hat jemand Erfahrung mit so etwas?
Ich denke darüber nach, ein virtuelles COM einzurichten und in CAN-Frames verpackte Daten darüber zu senden.Könnte es funktionieren?Und wie könnte ich virtuelles COM unter Linux einrichten?Habe diesen Thread gefunden Virtueller serieller Port für Linuxaber leider verstehe ich nicht, wie es in den Quellcode des Programms implementiert werden könnte (Linux-Anfänger und Programmierer unter Linux).
Ich würde gerne Ihre Erfahrungen und Vorschläge lesen.
Lösung
Du brauchst SocketCAN Treiber, der auf modernen Linux-Distributionen wie Ubuntu usw. verfügbar ist.SocketCAN bietet 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 senden und empfangen vcan0
Gerät.Der Wikipedia-Artikel enthält ein einfaches Codebeispiel zur Verwendung von SocketCAN.
Sie benötigen auch can-utils zu Testzwecken.
Weitere Informationen zu SocketCAN und seiner Verwendung finden Sie auf eLinux.org