Quiero crear un programa que emule el puerto CAN con fines de prueba para otra gran aplicación. El programa debe enviar los datos registrados previamente a través de este CAN virtual. ¿Alguien tiene alguna experiencia con algo así?
Estoy pensando en establecer COM virtual y enviar a través de él datos empaquetados en CAN Frames. ¿Podría funcionar? ¿Y cómo podría establecer COM virtual en Linux? Encontré este hilo Puerto serie virtual para Linux , pero lamentablemente no entiendo cómo podría implementarse en el código fuente del programa (usuario principiante de Linux y programador en Linux).
Me encantaría leer tu experiencia y sugerencias.
Necesita el controlador SocketCAN , que está disponible en las distribuciones modernas de Linux como Ubuntu, etc. SocketCAN proporciona un controlador de puerto CAN virtual:
sudo modprobe vcan sudo ip link add dev vcan0 type vcan sudo ip link set up vcan0 Ahora puede enviar y recibir tramas CAN a través del dispositivo vcan0 . El artículo de Wikipedia proporciona un ejemplo de código simple sobre cómo usar SocketCAN.
También necesitará can-utils para fines de prueba.
Encontrará más información sobre SocketCAN y su uso en eLinux.org
Puede usar el siguiente programa bash para crear un puerto CAN virtual (vcan) en Linux:
setup_vcan.sh
#!/bin/bash # Using can1 as an example CAN_PORT="can1" sudo modprobe vcan sudo ip link add dev $CAN_PORT type vcan sudo ip link set up $CAN_PORTHaga que el programa bash sea ejecutable:
chmod +x setup_vcan.shEjecute el programa bash:
./setup_vcan.sh Grabe los mensajes CAN en un archivo de registro ( $CAN_PORT con el nombre de su puerto CAN):
candump -L $CAN_PORT > myfile.logReproduzca los mensajes CAN del archivo de registro:
canplayer -I myfile.log Puede verificar la reproducción comprobando la salida de candump :
candump $CAN_PORT