Plugin Interface¶
External packages can register new interfaces by using the can.interface
entry point
in its project configuration. The format of the entry point depends on your project
configuration format (pyproject.toml, setup.cfg or setup.py).
In the following example module
defines the location of your bus class inside your
package e.g. my_package.subpackage.bus_module
and classname
is the name of
your can.BusABC
subclass.
# Note the quotes around can.interface in order to escape the dot .
[project.entry-points."can.interface"]
interface_name = "module:classname"
[options.entry_points]
can.interface =
interface_name = module:classname
from setuptools import setup
setup(
# ...,
entry_points = {
'can.interface': [
'interface_name = module:classname'
]
}
)
The interface_name
can be used to
create an instance of the bus in the python-can API:
import can
bus = can.Bus(interface="interface_name", channel=0)
Example Interface Plugins¶
The table below lists interface drivers that can be added by installing additional packages that utilise the plugin API. These modules are optional dependencies of python-can.
Note
The packages listed below are maintained by other authors. Any issues should be reported in their corresponding repository and not in the python-can repository.
Name |
Description |
---|---|
CAN Driver for the CANine CAN interface |
|
Cython based version of the ‘VectorBus’ |
|
CAN over network bridge |
|
CAN Driver for Sontheim CAN interfaces (e.g. CANfox) |
|
Python wrapper for zlgcan-driver-rs |
|
Python wrapper for Netronics’ CANdo and CANdoISO |