Skip to content

Python wrapper around common Linux SocketCAN commands

License

Notifications You must be signed in to change notification settings

Tbruno25/pysocketcan

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PySocketCAN

The pysocketcan module provides a class to quickly modify Linux SocketCAN parameters directly from Python.

For example, to change the baudrate in Linux you need to run

$ sudo ip link set can0 down
$ sudo ip link set can0 type can bitrate 250000
$ sudo ip link set can0 up

The pysocketcan equivalent is

>>> can0.baud = 250000

Installation

Use pip to install

$ pip install pysocketcan

Usage

import pysocketcan as pysc

>>> pysc.view_available() # returns available interfaces
'can0'
>>> can0 = pysc.Interface("can0") # instantiate interface object

>>> can0.on() # set interface up
>>> can0.off() # set interface down
>>> can0.state # returns current state of interface
'STOPPED'

>>> can0.baud = 250000 # sets the baudrate
>>> can0.baud # returns current baudrate
'250000'

>>> can0.status # returns currently active modes
'LOOPBACK,LISTEN-ONLY,TRIPLE-SAMPLING'
>>> can0.listen_only = False # turns mode off
>>> can0.status
'LOOPBACK,TRIPLE-SAMPLING'

If can-utils is installed you can also use

>>> can0.receive() # returns bus message
>>> can0.send(100, 12345678) # adds message to bus

Note:

To function correctly Python needs root priveleges

$ sudo python3
     # or
$ sudo venv/bin/python3

Contributing

Pull requests are welcome! For major changes, please open an issue first to discuss what you would like to change.

About

Python wrapper around common Linux SocketCAN commands

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages