A collection of CLI tools for receiving and transmitting CAN frames using Linux SocketCAN
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
Use make
to build all tools or make cangw
etc.
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
cxxopts for parsing command line options