cantools
November 23, 2021 · View on GitHub
A collection of CLI tools for receiving and transmitting CAN frames using Linux SocketCAN
Description
These tools can be used - and were developed - using a Raspberry Pi 3 with a PiCAN2 HAT.
- cantx: one-time or cyclic transmission of a single frame
- canprint: printing frames into the console
- cangw: routing frames between CAN and UDP
Build
Use make to build all tools or make cangw etc.
Usage
| Tool | Options | Short | Required | Default | Description |
|---|---|---|---|---|---|
| cantx | device id payload cycle realtime | -d-i-p-c-r | ✓ | can0 00 -1 (send once) false | CAN device Frame ID Hex data string Repetition time in ms Enable realtime scheduling policy |
| canprint | device | -d | can0 | CAN device | |
| cangw | listen send realtime timestamp device ip port | -l-s-r-t-d-i-p | -l ∨ -s-l ∨ -s✓ ✓ | false false can0 | Route frames from CAN to UDP Route frames from UDP to CAN Enable realtime scheduling policy Prefix payload with 8-byte timestamp (ms) CAN device IP of remote device UDP port |
Examples:
# Send frame each 100 ms
$ ./cantx --device=can0 --id=42 --data=0807060504030201 --cycle=100
# Route frames from CAN to UDP
$ ./cangw --listen --ip=192.168.1.5 --port=30001
# Same but using short options
$ ./cangw -li 192.168.1.5 -p 30001
# Route frames between interfaces and add timestamps to UDP payload
$ ./cangw -lsti 192.168.1.5 -p 30001
Acknowledgements
cxxopts for parsing command line options