0% found this document useful (0 votes)
30 views

Pythoncan

The python-can library provides Controller Area Network (CAN) support for Python. It provides common abstractions for different hardware devices and utilities for sending and receiving CAN bus messages. The library works on various devices from high-powered computers to low-powered devices like Raspberry Pi. It can be used for passively logging CAN bus data, testing hardware that uses CAN, prototyping new hardware/software with CAN, and creating virtual CAN modules. A brief example shows connecting to a CAN bus and sending a message.

Uploaded by

Mandeep Singh
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
30 views

Pythoncan

The python-can library provides Controller Area Network (CAN) support for Python. It provides common abstractions for different hardware devices and utilities for sending and receiving CAN bus messages. The library works on various devices from high-powered computers to low-powered devices like Raspberry Pi. It can be used for passively logging CAN bus data, testing hardware that uses CAN, prototyping new hardware/software with CAN, and creating virtual CAN modules. A brief example shows connecting to a CAN bus and sending a message.

Uploaded by

Mandeep Singh
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

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, 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

Jun 18, 2023

Copyright ©
Made with Sphinx and @pradyunsg's Furo

You might also like