# python-can

The python-can library provides Controller Area Network support for Python, providing common abstractions to different hardware devices, and a suite of utilities for sending and receiving messages on a CAN bus.

python-can runs any where Python runs; from high powered computers with commercial CAN to usb devices right down to low powered devices running linux such as a BeagleBone or RaspberryPi.

More concretely, some example uses of the library:

- Passively logging what occurs on a CAN bus. For example monitoring a commercial vehicle using its OBD-II port.
- Testing of hardware that interacts via CAN. Modules found in modern cars, motocycles, boats, and even wheelchairs have had components tested from Python using this library.
- Prototyping new hardware modules or software algorithms in-the-loop. Easily interact with an existing bus.
- Creating virtual modules to prototype CAN bus communication.

Brief example of the library in action: connecting to a CAN bus, creating and sending a message:

Contents:

- Installation
  - GNU/Linux dependencies
  - Windows dependencies
  - Installing python-can in development mode
- Configuration
  - In Code
  - Configuration File
  - Environment Variables
  - Interface Names
- Library API
  - Bus
  - Message
  - Listeners
  - Broadcast Manager
  - Utilities
  - Notifier
- CAN Interface Modules
  - Socketcan
  - Kvaser’s CANLIB
  - CAN over Serial
  - CAN over Serial / SLCAN
  - IXXAT Virtual CAN Interface
  - PCAN Basic API
  - USB2CAN Interface
  - NI-CAN
  - isCAN
  - neoVI Interface
  - Vector
  - Virtual
- Scripts
  - can.logger
  - can.player
- Developer’s Overview
  - Contributing
  - Creating a Release
  - Code Structure
- History and Roadmap
  - Background
  - Acknowledgements
  - Support for CAN within Python

## Known Bugs

See the project bug tracker on github. Patches and pull requests very welcome!

Documentation generated

Jan 07, 2018