python-can#
Controller Area Network (CAN) support for Python. The python-can package is a python library that provides a high-level and a low-level API for communicating with CAN bus devices. It provides a pythonic interface to the SocketCAN implementation found in the Linux kernel, and it supports multiple platforms and CAN interfaces. The high-level API provides a simple, pythonic interface to the common functionality required to interact with a CAN bus. This includes sending and receiving messages, filtering, and error handling. The low-level API provides direct access to the raw message data and allows more fine-grained control over the CAN bus communication. The package also provides a set of utility functions and classes for common tasks such as bit-level manipulation, error detection and handling, and message parsing.
Provides a common abstraction to different hardware devices
Has utilities for logging, replaying, and viewing
Implements a custom virtual interface, based on python message queues
Wide variety of supported interfaces:
SocketCAN
Kvaser’s CANLIB
CAN over Serial / SLCAN
IXXAT Virtual CAN Interface
PCAN Basic API
USB2CAN Interface
NI-CAN
isCAN
NEOVI Interface
Vector
CANalyst-II
SYSTEC interface
…
Runs on Linux, Mac OSX and Windows
Does not provide sockets or message queues. Only one application can exclusively use a CAN device
Python global interpreter lock
Depends on dll from manufacturer