Comment créer un port CAN virtuel sous Linux ?(C++)
Question
Je souhaite créer un programme qui émulerait le port CAN à des fins de test pour une autre grande application.Le programme doit envoyer les données précédemment enregistrées via ce CAN virtuel.Quelqu'un a-t-il une expérience avec une telle chose ?
Je pense établir un COM virtuel et envoyer via celui-ci des données emballées dans des trames CAN.Est-ce que ça pourrait marcher ?Et comment puis-je établir un COM virtuel sous Linux ?J'ai trouvé ce fil Port série virtuel pour Linuxmais malheureusement, je ne comprends pas comment cela pourrait être implémenté dans le code source du programme (utilisateur Linux débutant et programmeur sous Linux).
J'adorerais lire votre expérience et vos suggestions.
La solution
Vous avez besoin SocketCAN pilote, disponible sur les distributions Linux modernes comme Ubuntu, etc.SocketCAN fournit un pilote de port CAN virtuel :
sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0
Vous pouvez désormais envoyer et recevoir des trames CAN via vcan0
appareil.L'article Wikipédia fournit un exemple de code simple sur la façon d'utiliser SocketCAN.
Vous aurez également besoin can-utils à des fins de tests.
Vous trouverez plus d'informations sur SocketCAN et son utilisation sur eLinux.org