Pythoncan
Pythoncan
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.
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, motorcycles, 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:
1 #!/usr/bin/env python
2
3 """
4 This example shows how sending a single message works.
5 """
6
7 import can
8
9
10 def send_one():
11 """Sends a single message."""
12
13 # this uses the default configuration (for example from the config file)
14 # see https://python-can.readthedocs.io/en/stable/configuration.html
15 with can.Bus() as bus:
16 # Using specific buses works similar:
17 # bus = can.Bus(interface='socketcan', channel='vcan0', bitrate=250000)
18 # bus = can.Bus(interface='pcan', channel='PCAN_USBBUS1', bitrate=250000)
19 # bus = can.Bus(interface='ixxat', channel=0, bitrate=250000)
20 # bus = can.Bus(interface='vector', app_name='CANalyzer', channel=0, bitrate=250
21 # ...
22
23 msg = can.Message(
24 arbitration_id=0xC0FFEE, data=[0, 25, 0, 1, 3, 1, 4, 1], is_extended_id=True
25 )
26
27 try:
28 bus.send(msg)
29 print(f"Message sent on {bus.channel_info}")
30 except can.CanError:
31 print("Message NOT sent")
32
33
34 if __name__ == "__main__":
35 send_one()
Contents:
Installation
Configuration
Library API
Hardware Interfaces
Virtual Interfaces
Plugin Interface
Other CAN bus tools
Scripts
Developer’s Overview
History
Known Bugs
See the project bug tracker on github. Patches and pull requests very welcome!
Documentation generated
Copyright ©
Made with Sphinx and @pradyunsg's Furo