Las interfaces CAN se manejan de manera diferente en macOS que en Linux. De hecho, se manejan principalmente como en Linux antes de que CAN en Linux se estandarizara en la interfaz SocketCAN.
Los dongles PCAN realmente funcionan bien en macOS y definitivamente puedes hacer que tu sistema funcione. Los he utilizado sin problemas durante años. Sin embargo, deberás codificarlo ligeramente de manera diferente a como estás acostumbrado en Linux.
En Linux, la interfaz SocketCAN significa que las interfaces CAN se enumeran como interfaces de red ordinarias con las que puedes interactuar usando comandos comunes como los comandos "ip" que también utilizas para configurar, por ejemplo, interfaces de red Ethernet. Eso no ocurre en macOS, y esta es la razón por la que no puedes ver la interfaz CAN con ifconfig -a
. No se supone que aparezca ahí.
En cambio, en macOS, al igual que en Windows, cada fabricante proporciona su propia interfaz. Por lo general, esto es en forma de una biblioteca compartida (piensa en un DLL) que enlazas junto con tu propio programa para acceder a la interfaz CAN. Por lo general, también proporcionan varias utilidades para configurar velocidades de bits, temporizaciones, manejo de errores y para hacer volcados de paquetes, monitorear la carga del bus y otras cosas.
Para los dongles PCAN, puedes descargar esa interfaz específica del fabricante aquí:
https://www.mac-can.com
En esa página también encontrarás un programa de monitorización que puedes utilizar para ver rápidamente lo que se está transfiriendo en el bus.
Para usar esta interfaz con tu programa Perl, tendrás que crear enlaces de Perl para la biblioteca PCBUSB. No estoy al tanto de ninguna implementación de libre disponibilidad en este momento; tendrás que crear la tuya propia. Afortunadamente, la interfaz realmente no es tan complicada.
Ten en cuenta que hay un proyecto llamado CANAPI en marcha para crear una interfaz común para interfaces CAN en macOS, Windows y Linux. Sin embargo, su uso no es tan extendido (por ahora).
Otra forma de hacerlo es usar Linux en Mac. Utilizas un sistema de virtualización (como VMware Fusion, Parallels Desktop o uno de los muchos sistemas gratuitos y de código abierto) para ejecutar Linux. Luego, direccionas el dongle CAN, que básicamente es un dispositivo USB, en la máquina virtual, y es detectado por Linux como en una PC Linux normal.
A partir de ahí, puedes configurarlo como cualquier otra interfaz CAN en Linux utilizando el comando `ip`. Y luego puedes ejecutar tu programa Perl sin modificaciones. Hay un sobrecosto por la virtualización, por lo que dependiendo de tus requisitos de rendimiento y latencia, tal vez no sea una solución perfecta.