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 [2021/01/31 12:47] – [can-utils Tipps] 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. 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 15: 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>
public/can-utils_tipps.1612097249.txt.gz · Zuletzt geändert: von geier99