Other CAN bus tools#
In order to keep the project maintainable, the scope of the package is limited to providing common abstractions to different hardware devices, and a basic suite of utilities for sending and receiving messages on a CAN bus. Other tools are available that either extend the functionality of python-can, or provide complementary features that python-can users might find useful.
Some of these tools are listed below for convenience.
CAN Message protocols (implemented in Python)#
- CIA CANopen
The canopen module provides an implementation of the CIA CANopen protocol, aiming to be used for automation and testing purposes
- ISO 15765-2 (ISO TP)
The can-isotp module provides an implementation of the ISO TP CAN protocol for sending data packets via a CAN transport layer.
The python-uds module is a communication protocol agnostic implementation of the Unified Diagnostic Services (UDS) protocol defined in ISO 14229-1, although it does have extensions for performing UDS over CAN utilising the ISO TP protocol. This module has not been updated for some time.
The uds module is another tool that implements the UDS protocol, although it does have extensions for performing UDS over CAN utilising the ISO TP protocol. This module has not been updated for some time.
The pyxcp module implements the Universal Measurement and Calibration Protocol (XCP). The purpose of XCP is to adjust parameters and acquire current values of internal variables in an ECU.
CAN Frame Parsing tools etc. (implemented in Python)#
- CAN Message / Database scripting
The cantools package provides multiple methods for interacting with can message database files, and using these files to monitor live busses with a command line monitor tool.
- CAN Message / Log Decoding
The canmatrix module provides methods for converting between multiple popular message frame definition file formats (e.g. .DBC files, .KCD files, .ARXML files etc.).
The pretty_j1939 module can be used to post-process CAN logs of J1939 traffic into human readable terminal prints or into a JSON file for consumption elsewhere in your scripts.