Benutzer-Werkzeuge

Webseiten-Werkzeuge


pi3_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
pi3_tipps [2022/11/19 08:09] – [CANHacker TRC2ASC Konverter] geier99pi3_tipps [2026/09/06 07:46] (aktuell) – [Links] geier99
Zeile 19: Zeile 19:
   * [[https://pi-buch.info/hdmi-aufloesung-erzwingen/|HDMI Auflösung erzwingen]] - Raspi feste Auflösung für den Monitor   * [[https://pi-buch.info/hdmi-aufloesung-erzwingen/|HDMI Auflösung erzwingen]] - Raspi feste Auflösung für den Monitor
   * [[http://www.netzmafia.de/skripten/hardware/RasPi/RasPi_Network.html|RasPi-Network]]- Raspi Netzwerk Einrichtungen   * [[http://www.netzmafia.de/skripten/hardware/RasPi/RasPi_Network.html|RasPi-Network]]- Raspi Netzwerk Einrichtungen
 +  * [[https://raspberrytips.com/update-raspberry-pi-latest-version/]] - Raspi updaten
 +  * [[https://www.pragmaticlinux.com/2021/07/automatically-bring-up-a-socketcan-interface-on-boot/?utm_content=cmp-true]]
 +  * CAN-Simulator:
 +    * [[https://github.com/carloop/simulator|simulator]]
 +    * [[https://github.com/carloop/simulator-program|simulator-program]]
 +
  
 ====== Raspi 3 - MCP-2515 - (SPI) CAN Support ====== ====== Raspi 3 - MCP-2515 - (SPI) CAN Support ======
Zeile 213: Zeile 219:
   * [[https://sgframework.readthedocs.io/en/latest/readme.html|SecureGateway Framework (python)]]   * [[https://sgframework.readthedocs.io/en/latest/readme.html|SecureGateway Framework (python)]]
   * [[https://gist.github.com/jackm/f33d6e3a023bfcc680ec3bfa7076e696|Sammlung von CAN-Tools]]   * [[https://gist.github.com/jackm/f33d6e3a023bfcc680ec3bfa7076e696|Sammlung von CAN-Tools]]
 +
 +{{ ::rpm.png?direct&200|}}
 +\\ .\\ 
 +
 +**Python cantools:** - Einsatz Beispiel um ein Signal zu plooten
 +  * [[https://pypi.org/project/cantools/]]
 +    * [[https://github.com/cantools/cantools]]\\ .
 +  * Verwendung mit einer dbc um ein Signal zu visualisieren/anzuzeigen<code>erst mal venv richten:
 +python3 -m venv venv
 +cd venv/
 +source bin/activate
 +python -m pip install cantools matplotlib        # matplotlib nur für "Plots" notwendig
 +
 +dbc mit den Signale erzeugen (am besten von Ki oder mit einem dbc-Editor)
 +
 +cat wake_rpm2000_hiace.log |grep 115# |python3 -m cantools decode rpm_125.dbc      # nur Botschaft 115  decodieren
 +
 +( Parameter: --single-line   schreibt alles in eine Zeile)
 +cat wake_rpm2000_hiace.log |grep 115# |python3 -m cantools decode --single-line rpm_125.dbc
 +
 +grafische Ausgabe:
 +cat wake_rpm2000_hiace.log |grep 115# |python3 -m cantools plot rpm_125.dbc 
 +
 +# oder am enden noch angeben welche signale geplottet werden sollten
 +
 +
 +</code>
 +    * {{ ::rpm_125.dbc |}}
 +  * Sub-Befehl Monitor um Live die Daten anzuzeigen:<code>python3 -m cantools monitor rpm_125.dbc
 +</code>
  
 ====== Raspi 2 B ====== ====== Raspi 2 B ======
Zeile 318: Zeile 354:
 </code> durchführen. </code> durchführen.
  
-Der Restart-Parameter kann auch oben beim Autostart hinzugefügt werden (/etc/network/interfaces)+Der Restart-Parameter kann auch oben beim Autostart hinzugefügt werden (/etc/network/interfaces)<code>#insert by andreas 
 +auto can0 
 +iface can0 inet manual 
 +    pre-up ip link set $IFACE type can bitrate 500000 listen-only off restart-ms 200 
 +    up /sbin/ifconfig $IFACE up 
 +    down /sbin/ifconfig $IFACE down 
 + 
 +auto can1 
 +iface can1 inet manual 
 +    pre-up ip link set $IFACE type can bitrate 500000 listen-only off restart-ms 200 
 +    up /sbin/ifconfig $IFACE up 
 +    down /sbin/ifconfig $IFACE down 
 +</code>
  
  
Zeile 821: Zeile 869:
   * [[https://forum.armbian.com/topic/11651-spi-based-canfd-driver-overlay-mcp2517mcp2518/|CAN-FD Fehler Kernel]] -   * [[https://forum.armbian.com/topic/11651-spi-based-canfd-driver-overlay-mcp2517mcp2518/|CAN-FD Fehler Kernel]] -
   * [[https://github.com/Seeed-Studio/seeed-linux-dtoverlays/tree/master/modules/CAN-HAT|Github SEED CAN-FD]]   * [[https://github.com/Seeed-Studio/seeed-linux-dtoverlays/tree/master/modules/CAN-HAT|Github SEED CAN-FD]]
 +    * [[https://wiki.seeedstudio.com/2-Channel-CAN-BUS-FD-Shield-for-Raspberry-Pi/|2-Channel-CAN-BUS-FD-Shield-for-Raspberry-Pi]]
  
  
Zeile 841: Zeile 890:
  
 Das direkte Ansteuern mit dem Device Tree geht wohl nicht, deshalb könnte man obiges verwenden. Das direkte Ansteuern mit dem Device Tree geht wohl nicht, deshalb könnte man obiges verwenden.
 +
 +===== sonstige GPIO Raspi Tipps =====
 +  * <code>sudo cat /sys/kernel/debug/gpio</code> gibt eine Liste inkl. Offset der GPIOs aus. Im aktuellen Kernel 
 +wurde beim Raspi 4 der Offset neu auf 512 gelegt.
 +  * 
 +
 +sonstige links:
 +  * [[https://www.kernel.org/doc/html/latest/driver-api/gpio/index.html|GPIO]]
 +  * [[https://docs.kernel.org/driver-api/gpio/board.html]] - GPIO Mappings
 +  * Weitere Links vom Linux-Magazin:
 +    * [[https://www.lm-online.de/39228]] - Kernel- und Treiberprogrammierung mit dem Linux-Kernel – Folge 93
 +    * [[https://www.lm-online.de/41875]] - Kernel- und Treiberprogrammierung mit dem Linux-Kernel – Folge 101
 +    * [[https://www.linux-magazin.de/ausgaben/2024/07/kern-technik/]] - Kernel- und Treiberprogrammierung mit dem Linux-Kernel – Folge 134
 +
 ====== I2C - Raspi ====== ====== I2C - Raspi ======
 Einrichtung: Einrichtung:
Zeile 856: Zeile 919:
 Hier ein kleines Beispielskript um aus einem CAN-Raw-Dump (.log-Format) eine Rx-Liste zu generieren: Hier ein kleines Beispielskript um aus einem CAN-Raw-Dump (.log-Format) eine Rx-Liste zu generieren:
  
-Skript: {{ :public:dump2rxliste.awk |dump2rxliste.awk}}+Skript: {{ :public:dump2rxliste.awk |dump2rxliste.awk}} (Achtung: hier fehlt noch die unten aufgeführte Modifikation für CAN-FD: {{ ::dump2rxliste.awk |}})
 <code> <code>
  gawk -f dump2RxListe.awk inhouse/A-Klasse_W177/movement_touch.log</code>  gawk -f dump2RxListe.awk inhouse/A-Klasse_W177/movement_touch.log</code>
Zeile 866: Zeile 929:
 BEGIN { print "Konvertiere CAN-RAW Dump zur sortierte RX-Liste  \n\nStart RX-Liste                 ", strftime("%d.%m.%Y", systime()),"\n------------------------------------------------"} BEGIN { print "Konvertiere CAN-RAW Dump zur sortierte RX-Liste  \n\nStart RX-Liste                 ", strftime("%d.%m.%Y", systime()),"\n------------------------------------------------"}
     $3 ~ /([0-9A-F]){3,8}/      $3 ~ /([0-9A-F]){3,8}/ 
 +                                gsub(/##/, "#");         # modifziert für CAN-FD 12.09.2024 by geier99, oder weglassen, dann bleiben die Datenbytes leer aber die ID wird gezaehlt
                                 split($3, arr, "#")                                 split($3, arr, "#")
                                 anzahl[arr[1]]+=1;                                  anzahl[arr[1]]+=1; 
Zeile 899: Zeile 963:
 </code>Hier bei  nicht vergessen das awk-Skript unter ~/dev abzulegen. Damit verinfacht sich der Aufruf dann zu:<code>makeRxList A-Klasse_W177/movement_touch.log </code> </code>Hier bei  nicht vergessen das awk-Skript unter ~/dev abzulegen. Damit verinfacht sich der Aufruf dann zu:<code>makeRxList A-Klasse_W177/movement_touch.log </code>
  
 +===== neue Python Variante =====
 +Hier jetzt meine neue Python-Variante welche mit Claude-Code erstellt wurde:
 +  * {{ ::makerxlist_new.py |}}
 +
 +<code>makeRxList_new.py -h
 +usage: makeRxList_new.py [-h] [--min-changes N] [--sort-changes asc|desc]
 +                         logfile [interface]
 +
 +CAN-RAW Dump → sortierte RX-Liste
 +
 +positional arguments:
 +  logfile               CAN-Log-Datei (candump-Format)
 +  interface             Interface-Filter, z.B. can0  (Default: alle)
 +
 +options:
 +  -h, --help            show this help message and exit
 +  --min-changes N       Nur IDs anzeigen mit Änd. > N  (Default: 0 = alle)
 +  --sort-changes asc|desc
 +                        Sortierung nach Änderungsanzahl:
 +                          asc  = aufsteigend
 +                          desc = absteigend
 +                          (ohne Angabe: nach CAN-ID)
 +</code>Beispiel:<code>makeRxList_new.py --s desc --m 5 can_log_125kbit_20260603_115550.log
 +Konvertiere CAN-RAW Dump zur sortierten RX-Liste
 +Interface  : alle
 +Sortierung : Änd. absteigend
 +Filter     : Änd. > 5
 +
 +Start RX-Liste                  04.06.2026
 +─────────────────────────────────────────────────────────────────────────────
 +  CAN-ID      Typ   D0 D1 D2 D3 D4 D5 D6 D7  ASCII          Anz.     Änd.
 +─────────────────────────────────────────────────────────────────────────────
 +  42C         SFF   05 51 54 00 31 00 00 00  '.QT.1...'     2012     2011
 +  04C         SFF   20 AA BF 1E C9 EF 00 00  ' .......'     1006     1005
 +  415         SFF   00 00 E4 F3 00 00 00 00  '........'     1006     1005
 +  083         SFF   7C 1B 12 03 7F FF 7E D8  '|.....~.'     1006      908
 +  40A         SFF   C0 00 00 35 C0 07 38 00  '...5..8.'      503      502
 +  3C4         SFF   F7 58 E8 41 00 00 93 1E  '.X.A....'      503      402
 +  3B6         SFF   08 00 07 00 00 00 00 00  '........'      402      401
 +  3B7         SFF   00 00 03 00 63 57 2D EE  '....cW-.'      402      401
 +  3BE         SFF   00 72 D8 CF DB 01 F4 01  '.r......'     1032      270
 +  178         SFF   00 00 02 00 0E 68 CE 67  '.....h.g'     1005      154
 +  331         SFF   C0 00 20 4D 05 C3 44 10  '.. M..D.'      201      100
 +  084         SFF   1A 00 00 9A 37 26 0B 00  '....7&..'      100       99
 +  3EB         SFF   54 14 14 00 00 1A 02 5C  'T......\'      197       96
 +  31C         SFF   2D 97 45 41 4F D9 88 14  '-.EAO...'      101       76
 +  59E         SFF   9E 10 FF FF 9E FF FF FF  '........'      101       38
 +  42A         SFF   C0 00 00 E0 00 00 00 00  '........'     2012       37
 +  3BC         SFF   0C 00 40 96 00 00 27 00  '..@...'.'     2012       26
 +  326         SFF   01 98 02 35 01 D0 00 C8  '...5....'     1006       21
 +─────────────────────────────────────────────────────────────────────────────
 +Ende RX-Liste
 +
 +Anzahl CAN-IDs (gesamt)    = 73
 +Anzahl CAN-IDs (angezeigt) = 18
 +Zeilen gesamt              = 25667
 +CAN-Frames                 = 25666
 +</code>
  
 ====== TRC2LOG Konverter ====== ====== TRC2LOG Konverter ======
Zeile 960: Zeile 1082:
 </code> </code>
  
 +====== log2trc - CANhacker ======
 +Hier mal mein vorläufiger log2trc Konverter um log-Files direkt mit der CAN-Hacker Software abzuspielen zu können.
  
 +Zur Zeit habe ich nur die Raspi-Variante und WSL2-Variante gemacht:
 +  * {{ ::log2trc_linux_aarch64.rar |}} - sollte auf Raspis (64 Bit) laufen
 +  * {{ ::log2trc_linux_x86_64.rar |}}  
 +  * {{ ::log2trc.exe |}} - Windowsvariante  (mit Cygwin64 erzeugt) hier dann '-n' weglassen wenn es direkt unter Wondows ausgeführt wird.
  
 +Bei RAR am besten beim Entpacke umbenennen in "log2trc"
  
 +Error Frames werden zur Zeit noch nicht korrekt behandelt. 
 +
 +Implementiert ist die Korrekte Umsetzung von:
 +  * STD-Frames
 +  * EXT-Frames
 +  * RTR-Frames (Da CANHacker die nicht wirklich kann werden diese dann mit DLC=0 und keine Datenbytes konvertiert)
 +
 +Hier mal ein Beipiel für den Aufruf:   (bitte die Option -n nicht vergessen um CR/OF zu aktivieren):
 +<code>log2trc can0 -I test1.log -O test1.trc -n</code>
 +<code> log2trc
 +no CAN interfaces defined!
 +Usage: log2trc [can-interfaces]
 +Options: -I <infile>  (default stdin)
 +         -O <outfile> (default stdout)
 +         -n (set newline to cr/lf - default lf)
 +            (CANHacker needs  cr/lf)
 +</code>
 +
 +Hinweis: Auch dieser Konverter basiert auf dem Quellcode von LOG2ASC aus den CAN-Utils Paket
 ====== CANHacker TRC2ASC Konverter ====== ====== CANHacker TRC2ASC Konverter ======
 Hier noch mein eigener Konverter welcher auf dem Quellcode von LOG2ASC aus den CAN-Utils basiert:\\ {{ :media:trc2asc.exe |trc2asc.exe}} - Windows Version Hier noch mein eigener Konverter welcher auf dem Quellcode von LOG2ASC aus den CAN-Utils basiert:\\ {{ :media:trc2asc.exe |trc2asc.exe}} - Windows Version
Zeile 1006: Zeile 1154:
 Hinweis:\\ mit **trc2asc   | asc2log**   kann man einen Can-Hacker-Trace auch direkt in das Log-Format konvertieren. Hinweis:\\ mit **trc2asc   | asc2log**   kann man einen Can-Hacker-Trace auch direkt in das Log-Format konvertieren.
  
-Bzw. folgendes Skript trc2log unter /usr/local/bin ablegen:<code>pi@raspberrypi4:~/canlogger/RaspiLogger_Crux/Dogde/Charger_08_21/canhacker/trc $ cat /usr/local/bin/trc2log+Bzw. folgendes Skript trc2log unter /usr/local/bin ablegen:<code>pi@raspberrypi4:~/canlogger/ $ cat /usr/local/bin/trc2log
 #!/bin/bash #!/bin/bash
 trc2asc -I $1 can0 |asc2log trc2asc -I $1 can0 |asc2log
-</code>+</code>Der Aufruf zum konvertieren eines TRC-Files zu Log-File erfolgt dann mit: <code>trc2log myLogfile.trc</code>
 ===== PEAK -TRC-Files ===== ===== PEAK -TRC-Files =====
 Peak Trace Files haben ein anderes Format und können mit dem Tool:\\ [[http://www.peak-system.com/fileadmin/media/files/peak-converter.zip|peak-converter.zip]]   \\ in das ASC-Format konvertiert werden. Peak Trace Files haben ein anderes Format und können mit dem Tool:\\ [[http://www.peak-system.com/fileadmin/media/files/peak-converter.zip|peak-converter.zip]]   \\ in das ASC-Format konvertiert werden.
  
  
 +==== Tracekonverter (BLF <--> ASC) ==== 
 +[[https://github.com/TDahlmann/can_trace_converter/tree/main|can_trace_converter]] - BLF <--> ASC CAN-Trace Konverter
 ====== ASC Logformat ====== ====== ASC Logformat ======
 Hmm oder direkt einen Konverter für das ASC Format machen: Hmm oder direkt einen Konverter für das ASC Format machen:
Zeile 1028: Zeile 1177:
 </code> </code>
  
 +===== asc2log Konverter (Python) =====
 +Mit dem Python-CAN Modul lässt sich ein einfacher ASC->LOG Format Konverter machen der auch CAN-FD konvertiert (was mein eigener Konverter (C Programm) nicht kann)\\ [[https://github.com/hardbyte/python-can/blob/main/examples/simple_log_converter.py|simple_log_converter.py]] - einfacher Python Konverter
 +<code> cat asc2log_new.py
 +#!/usr/bin/python
 +#!/usr/bin/python3
 +#!/usr/bin/env python
  
 +"""
 +Use this to convert .can/.asc files to .log files.
 +Can be easily adapted for all sorts of files.
 +
 +Usage: python3 simple_log_convert.py sourceLog.asc targetLog.log
 +"""
 +
 +import sys
 +
 +import can
 +
 +
 +def main():
 +    """The transcoder"""
 +
 +    with can.LogReader(sys.argv[1]) as reader:
 +        with can.Logger(sys.argv[2]) as writer:
 +            for msg in reader:
 +                writer.on_message_received(msg)
 +
 +
 +if __name__ == "__main__":
 +    main()
 +
 +</code>
 +  * {{ ::asc2log.py |asc2log_new}} - obiges Python Skript
 +  * {{ ::asc2logall.py |asc2logAll}} - Konvertiert alle ASC-Files in einem Ordner in die entsprechenden Unterorder "log" und "txt" welche bei Bedarf erzeugt werden. (die .py ist hier nur wegen dem Wiki angefügt, und sollte wieder entfernt wreden)
 +
 +Hierfür muss aber das pyhton-can Modul installiert sein:
 +  * <code>pip install python-can
 +bzw. wenn es systemweit sein soll, dann mit:
 +sudo apt install python3-can
 +</code>
 +  * python3
 +  * Skript für **[[https://docs.python.org/3/library/argparse.html|argparse]]** anpassen! 
 +
 +**Hinweis:** - asc2log aus den can-utils könnte man auch nehmen können (aber hier geht's ja um Pyhton :-) )
  
 ====== VS-Code auf Pi ====== ====== VS-Code auf Pi ======
Zeile 1037: Zeile 1229:
 VS-Code kann dann über die Menüs oder in der Shell mit:\\  **code-oss** \\ aufgerufen werden.\\  VS-Code kann dann über die Menüs oder in der Shell mit:\\  **code-oss** \\ aufgerufen werden.\\ 
 Quelle: [[https://pimylifeup.com/raspberry-pi-visual-studio-code/|VS-Code PI installieren]] Quelle: [[https://pimylifeup.com/raspberry-pi-visual-studio-code/|VS-Code PI installieren]]
 +
 +**obiges ist veraltet!**
 +jetzt sollte ein:<code>sudo apt update
 +sudo apt install code</code> ausreichen. 
 +Der Aufruf erfolgt dann über die grafische Oberfläche oder mit <code>code . </code> aus dem aktuellen Ordner.
  
  
Zeile 1077: Zeile 1274:
 Exec=xosview -geometry '-8+36' Exec=xosview -geometry '-8+36'
 </code> </code>
 +====== JSON Parser ======
 +jq
 +
 +hier mit dem einfachsten Filter "."  um die komplette Json-Datei anzuzeigen.
 +<code>jq . file.json     # joson file anzeigen</code>
pi3_tipps.1668845381.txt.gz · Zuletzt geändert: von geier99