Guten Tag,
ich habe mittels Suchfunktion leider nichts derartiges gefunden, sofern bereits ein Thema diesbezüglich besteht, bitte dies zu entschuldigen.
Ich stehe vor folgendem Problem: Ich habe ein aufgezeichnetes CAN Datenfile. Dieses liegt mir in Form eines .asc oder aber auch als .blf File vor.
Dieses File möchte ich nun mittels dem zugehörigen .dbc file entschlüsseln und danach visualisieren. Mein Problem liegt nun darin, dass ich in keines der bestehenden Pakete für Python eine solche Funktion, wie sie beispielsweise in Matlab besteht (canMessageImport(*.asc ,zb. 'Vector', *.dbc)), gefunden habe. Ich habe schon verschiedene durchsucht wie python-can oder caneton, etc. Darin habe ich leider bisher nichts gefunden, oder nur schlampig gesucht / übersehen?!?
Gibt es denn eine solche "einfache" Möglichkeit? In Matlab erhalte ich dann eine Datenstruktur, sowas würde mir schon helfen, aber alles selbst entschlüsseln zu müssen, würde vermutlich meine Programmierkenntnisse überschreiten.
Oder hättet ihr eine andere Idee, bzw hattet ihr schon Erfahrung mit sowas?
Vielen Dank schon mal für eure Hilfe,
mfg
soeintyp
CAN Daten auslesen mittels dbc File
Ich kenne mich mit CAN nicht aus, aber so wie ich das verstehe sind die dbc-Dateien ein Art Beschreibung des Verkehrs, der dann zu diskreten Messages wird. Auf Anhieb habe ich da auch nichts gefunden, aber python-can kommt mit einer Liste von CAN-Devices:
http://python-can.readthedocs.io/en/lat ... faces.html
Ggf. reicht es einfach aus rauszufinden, welches davon deines ist, und dann kannst du dir die DBC-Nummer sparen.
http://python-can.readthedocs.io/en/lat ... faces.html
Ggf. reicht es einfach aus rauszufinden, welches davon deines ist, und dann kannst du dir die DBC-Nummer sparen.
Danke für die Antwort!
Genau, so kann man es sagen. So sehen übrigens die Daten aus dem .asc file aus:
0.000000 1 D4x Rx d 8 4D 03 00 00 00 00 00 00
0.000307 1 D5x Rx d 8 00 00 00 00 00 00 00 00
0.000599 1 D6x Rx d 8 12 DF 31 01 00 00 00 00
0.000907 1 D7x Rx d 8 00 00 00 00 00 00 00 00
0.008895 1 D0x Rx d 8 2F BE 2A 74 00 80 FF 7F
0.050001 1 D4x Rx d 8 E7 03 00 00 00 00 00 00
0.050308 1 D5x Rx d 8 00 00 00 00 00 00 00 00
0.050596 1 D6x Rx d 8 6E F7 44 01 00 00 00 00
0.050898 1 D7x Rx d 8 00 00 00 00 00 00 00 00
0.058934 1 D0x Rx d 8 BD BE 4A 72 FF 7F FF 7F ....
Mich interessieren hier eigentlich nur die die erste Spalte mit Timestamp die dritte mit ChannelID und die Daten (4D 03 ... 00 )
Wenn ich das richtig verstehe bei den verschiedenen CAN-Modulen, dann kann ich das ja nur verwenden wenn ich direkt das Modul auch verwende aber nicht aus einem Datenfile heraus oder?
Ideal wäre es, wenn ich mich nicht direkt für ein Interface entscheiden muss.
mfg
soeintyp
Genau, so kann man es sagen. So sehen übrigens die Daten aus dem .asc file aus:
0.000000 1 D4x Rx d 8 4D 03 00 00 00 00 00 00
0.000307 1 D5x Rx d 8 00 00 00 00 00 00 00 00
0.000599 1 D6x Rx d 8 12 DF 31 01 00 00 00 00
0.000907 1 D7x Rx d 8 00 00 00 00 00 00 00 00
0.008895 1 D0x Rx d 8 2F BE 2A 74 00 80 FF 7F
0.050001 1 D4x Rx d 8 E7 03 00 00 00 00 00 00
0.050308 1 D5x Rx d 8 00 00 00 00 00 00 00 00
0.050596 1 D6x Rx d 8 6E F7 44 01 00 00 00 00
0.050898 1 D7x Rx d 8 00 00 00 00 00 00 00 00
0.058934 1 D0x Rx d 8 BD BE 4A 72 FF 7F FF 7F ....
Mich interessieren hier eigentlich nur die die erste Spalte mit Timestamp die dritte mit ChannelID und die Daten (4D 03 ... 00 )
Wenn ich das richtig verstehe bei den verschiedenen CAN-Modulen, dann kann ich das ja nur verwenden wenn ich direkt das Modul auch verwende aber nicht aus einem Datenfile heraus oder?
Ideal wäre es, wenn ich mich nicht direkt für ein Interface entscheiden muss.
mfg
soeintyp
Ja, scheint so als ob dieses Python CAN nicht die Lösung ist.
Eine andere habe ich aber auch nicht. Die Daten so wie du sie gezeigt hast einzulesen ist trivial bezüglich timestamp, Kanal und Payload. Aber eine ‚Feinstruktur‘ des letzteren ist dann der Kicker. Keine Ahnung ob und was da passieren muss.
Aber wenn du das in matlab schon hinbekommst, warum machst du das nicht einfach damit?
Eine andere habe ich aber auch nicht. Die Daten so wie du sie gezeigt hast einzulesen ist trivial bezüglich timestamp, Kanal und Payload. Aber eine ‚Feinstruktur‘ des letzteren ist dann der Kicker. Keine Ahnung ob und was da passieren muss.
Aber wenn du das in matlab schon hinbekommst, warum machst du das nicht einfach damit?
Ich habe noch den hier gefunden: https://github.com/ebroecker/canmatrix
Das versteht DBC (und andere), wobei es glaube ich nicht in der Lage ist Nachrichten zu dekodieren. Aber der Entwickler ist sehr aktiv, vielleicht kann er dir helfen.
Das versteht DBC (und andere), wobei es glaube ich nicht in der Lage ist Nachrichten zu dekodieren. Aber der Entwickler ist sehr aktiv, vielleicht kann er dir helfen.
Das Problem ist Matlab ist sehr teuer und ich will mir keine Lizenz mehr kaufen. Darum seh ich mich nach alternativen um in bester Form gratis oder zumindest günstig und das ist Matlab leider nicht.
Danke für den Tipp und deine Mühen, ich versuch den Entwickler mal anzuschreiben.
mfg
soeintyp
Danke für den Tipp und deine Mühen, ich versuch den Entwickler mal anzuschreiben.
mfg
soeintyp