← Portfolio

python-can-cando

Questo pacchetto è disponibile su PyPI e il suo codice sorgente sul mio GitHub.

Descrizione

Questo modulo è un plugin che permette di usare gli adattatori CAN di netronics (nello specifico i dispositivi CANdo e CANdoISO) attraverso l’interfaccia plugin di python-can.

Installazione

Prima di usare questa libreria è necessario installare i driver CANdo di netronics; in caso contrario si otterrà un errore di DLL (oppure, sotto Linux, un errore di libreria condivisa).

pip install python-can-cando

Utilizzo

Come per qualsiasi altro plugin di python-can, è possibile accedere alla classe in questo modo:

import can
bus = can.Bus(interface="cando", channel=0)
# All of your other python-can code...

Oppure è possibile istanziarla direttamente:

from can_cando import CANdoBus
bus = CANdoBus(channel=0)
# All of your other python-can code...

Informazioni aggiuntive

Questo dispositivo presenta alcune limitazioni intrinseche; conviene davvero consultare la guida del programmatore e l’implementazione effettiva di alcuni metodi, come cando_transmit, la cui documentazione spiega come usare i buffer di ripetizione interni del dispositivo; il numero di buffer disponibili e la periodicità temporale dei messaggi sono fissi e limitati. Per questo motivo l’implementazione di BusABC.send_periodic è intenzionalmente sovrascritta con una versione fittizia.

In ogni caso, la guida del programmatore e tutti i datasheet relativi ai dispositivi possono essere scaricati dalla pagina di download di netronics.

Una nota sul carico del bus

Ho notato che il dispositivo tende ad andare in stato CANDO_CAN_RX_OVERRUN quando il carico del bus è eccessivo o presenta picchi improvvisi (perdendo quindi alcuni messaggi CAN); se nella rete sono presenti altri nodi che inviano molti messaggi periodici con un periodo breve, conviene valutare l’uso dei filtri appropriati, piuttosto che leggere tutti i messaggi e filtrarli via software.

Compatibilità

Ho sviluppato questa libreria con un dispositivo CANdoISO; non possiedo un dispositivo CANdo per testarla, ma dovrebbe funzionare altrettanto bene. Ci sono alcune piccole differenze tra i due (ad esempio una diversa frequenza di clock), ma dal punto di vista software le interfacce sono molto simili.

Questa libreria è stata sviluppata e testata su Windows 10 e Python 3.12, ma dovrebbe funzionare con versioni di Python fino alla 3.6 (verificato con vermin) e su sistemi operativi diversi da Windows.

In ogni caso, qualsiasi feedback è apprezzato e benvenuto; basta aprire una issue o una pull request e le darò volentieri un’occhiata.

Licenza

python-can-cando è distribuito secondo i termini della licenza LGPL-3.0-or-later.