Benutzer-Werkzeuge

Webseiten-Werkzeuge


public:can-utils_tipps

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
public:can-utils_tipps [2020/01/04 13:07] – [candump] geier99public:can-utils_tipps [2026/03/16 13:47] (aktuell) – [Senden - cansend] geier99
Zeile 1: Zeile 1:
 ====== can-utils Tipps ====== ====== can-utils Tipps ======
 +Ist eigentlich nur eine Ansammlung von Stichwörten welche mir als Gedankenhilfe zu den can-utils dienen.
 +
 +Und hier noch der Hinweis zum aktullen Release (... cansniffer jetzt mit canfd..):
 +  * [[https://github.com/linux-can/can-utils/releases/tag/v2023.03|can-utils v2023.03]] - aktueller Debian Release (Kernel Version beachten)
 ===== Senden - cansend ===== ===== Senden - cansend =====
  
Zeile 14: Zeile 18:
 bestimmte Botschaften aus Logfile senden (geht auch mit canplayer): bestimmte Botschaften aus Logfile senden (geht auch mit canplayer):
 candump vcan0 | grep " 244 " | while read line; do cansend vcan0 244#00000011F6; done candump vcan0 | grep " 244 " | while read line; do cansend vcan0 244#00000011F6; done
 +
 +3 Botschaften gleichzeitig:
 + while true; do cansend can0 122#04020000; sleep 0.1; cansend can0 2FA#0120C8180000C801; sleep 0.1; cansend can0 34E#107F287F05480000; sleep 0.1; done
 </code> </code>
 +bzw. eine Text-Datei einlesen und dann mit Pythonskript senden:\\ 
 +send_can.py
 +<sxh py>#!/usr/bin/env python3
 +import time
 +import subprocess
  
 +MESSAGE_FILE = "messages.txt"
 +
 +def send_can_message(interface, frame):
 +    subprocess.run(["cansend", interface, frame])
 +
 +def main():
 +    messages = []
 +
 +    # Datei einlesen
 +    with open(MESSAGE_FILE, "r") as f:
 +        for line in f:
 +            line = line.strip()
 +            if not line or line.startswith("#"):
 +                continue
 +
 +            parts = line.split()
 +            if len(parts) != 3:
 +                print(f"Überspringe ungültige Zeile: {line}")
 +                continue
 +
 +            iface, frame, delay_ms = parts
 +            messages.append((iface, frame, int(delay_ms)))
 +
 +    print(f"{len(messages)} CAN‑Nachrichten geladen. Starte Endlosschleife...")
 +
 +    # Endlosschleife
 +    while True:
 +        for iface, frame, delay in messages:
 +            send_can_message(iface, frame)
 +            time.sleep(delay / 1000.0)
 +
 +if __name__ == "__main__":
 +    main()
 +</sxh>und message.txt<code># Interface   Frame                         Delay_ms
 +can0          122#04020000                  100
 +can0          2FA#0120C8180000C801          100
 +can0          34E#107F287F05480000          100
 +</code>dann noch<code> chmod +x send_can.py
 +./send_can.py
 +</code>
 ===== Senden - canplayer ===== ===== Senden - canplayer =====
 <code> <code>
Zeile 24: Zeile 76:
 oder oder
 canplayer vcan0=can0 < candump-2013-05-06_190603.log canplayer vcan0=can0 < candump-2013-05-06_190603.log
 +
 +weitere Beispiele:
 +canplayer -v -I candump-2019-01-16_193032.log can0=can0 can0=vcan1    # alle Botschaften von can0 und vcan1 auf can0 abspielen
 +canplayer -v -I candump-2019-01-16_193032.log can0=can0       #  alle can0 Botschaften aus dem Log auf can0 abspielen
 +
 +egrep -v "12d#" candump-2019-01-16_193032.log | canplayer can0=can0   # Alle IDs ausser 0x12D aus dem Log-File abspielen
 +egrep "12d#" candump-2019-01-16_193032.log | canplayer can0=can0       # Nur die ID 0x12D aus dem Log-File abspielen
 +egrep "(133#|401#)" acc_rev.log |canplayer      # Nur die IDs 0x133 u. 0x401 aus dem Logfile abspielen
  
 </code> </code>
Zeile 94: Zeile 154:
  
 2)alles außerr 1B8 routen: 2)alles außerr 1B8 routen:
-  sudo cangw -A can0 -f 1B8~C00007FF -d can1+  sudo cangw -A -s can0 -f 1B8~C00007FF -d can1
  
 D0,D2,D3 lassen, D1=22 setzen D0,D2,D3 lassen, D1=22 setzen
Zeile 170: Zeile 230:
 candump vcan2,123:C00007FF (matches CAN ID 123 - only SFF and non-RTR frames) candump vcan2,123:C00007FF (matches CAN ID 123 - only SFF and non-RTR frames)
  
 +Alle IDs bis auf 0x122 und 0x2FA aufzeichnen:
 +candump can0,122~7FF,j,2fa~7FF,j
  
 +Alle VW-Digagnose IDs >0x700 , ausser die 0x700 Broadcast ID:
 +candump -ta -a can0,700~7FF,j,700:700
 </code> </code>
  
Zeile 176: Zeile 240:
   * <code>candump -L can0 | split -C 500MB</code> Falls die Logfiles zu groß werden, kann man sie hiermit aufsplitten.   * <code>candump -L can0 | split -C 500MB</code> Falls die Logfiles zu groß werden, kann man sie hiermit aufsplitten.
   * <code>candump -L any | log2long can0, can1</code> Alle CAN-Boschaften (CAN0,CAN1) etwas schöner formatiert anzeigen   * <code>candump -L any | log2long can0, can1</code> Alle CAN-Boschaften (CAN0,CAN1) etwas schöner formatiert anzeigen
 +
 +===== cansniffer =====
 +to do
 +
  
 todo... obiges dirket auf den Wiki-Seiten hinzufügen todo... obiges dirket auf den Wiki-Seiten hinzufügen
public/can-utils_tipps.1578143254.txt.gz · Zuletzt geändert: von geier99