python-can backend for Waveshare 2-CH-CAN-TO-ETH (13-byte TCP wire format over TCP)
Project description
can-waveshare
python-can backend for the Waveshare 2-CH-CAN-TO-ETH bridge that uses a fixed 13‑byte TCP wire format.
Works with python -m can.viewer/logger/player and plain can.Bus(...).
Transport: TCP server on the device (e.g.,
:20001for CAN1,:20002for CAN2).
Frames: 13 bytes:[flags/dlc][id:4][data:0..8 padded]
References
- python-can documentation: python-can.readthedocs.io — see Bus API, Command Line Tools, and Configuration.
- Waveshare product page: 2-CH-CAN-TO-ETH and vendor Wiki.
Install
pip install can-waveshare
# or from source (editable):
pip install -e .[dev]
Use with CLI
# Most portable: pass channel as host:port
python -m can.viewer -i waveshare -c 172.31.11.67:20001
# Or forward kwargs directly to the bus:
python -m can.viewer -i waveshare --bus-kwargs host=172.31.11.67 port=20001
Config via ~/.canrc
The stock CLIs read only the [default] section. Put this in ~/.canrc:
[default]
interface = waveshare
channel = 172.31.11.67:20001
Then:
python -m can.viewer
If you want multiple profiles, either (a) swap rc files or (b) write a tiny launcher in code and use Bus(config_context="waveshare2") to select other sections.
Use in code
import can
# explicit kwargs:
with can.Bus(interface="waveshare", host="172.31.11.67", port=20001) as bus:
bus.send(can.Message(arbitration_id=0x123, data=b"\x11\x22\x33", is_extended_id=False))
print(bus.recv(1.0))
# or via channel (parses host:port, tcp://host:port, [ipv6]:port, or aliases can1/can2):
with can.Bus(interface="waveshare", channel="172.31.11.67:20001") as bus:
print(bus.recv(1.0))
Features & Notes
- CAN 2.0 (0..8 data bytes). CAN‑FD not supported by Waveshare wire format.
- Software filters (
can_filters) supported in the backend. - Best‑effort own‑echo suppression when
receive_own_messages=False(default). SetTrueto see echoes. - Periodic TX via
bus.send_periodic(...)works (python-can broadcast manager callssend()repeatedly).
License
Apache 2.0
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters