hat zufälliger weise jemand von euch schonmal ein Tool geschrieben, um dbc files in ein XML dokument zu überführen? Ich hab im Netz ein dbc2c.awk script eines Uni-Projektes gefunden. Aber die Templates und die Sprache ist nicht so schön. Auch wenn es an sich benutzbar ist. Mit einer ordentlichen XML-Repräsentierung ließe sich aber sicher leichter arbeiten und bessere Generatoren basteln, zb auf Basis von XSLT oder dem Perl Template Toolkit, oder vergleichbarem. Für sehr einfach gestrickte DBCs mag das ganze ja relativ einfach sein, aber ich vermute der Teufel steckt wie immer im Detail. Stichwort Bytesex, Floating points, ... Das merkt man auch an dem oben genannten Skript. Meist muss man ziemlich viel Zeug aus der dbc-Datei rauskicken, befor das script sich nicht mehr daran verschluckt. Weiß jemand wie das rechtlich aussieht? Darf man SW veröffentlichen, die das Fileformat von Vector liest? Obwohl CAN relativ verbreitet ist, findet man fast nix dazu.
:
Bearbeitet durch User
Vlad Tepesch schrieb: > hat zufälliger weise jemand von euch schonmal ein Tool geschrieben, um > dbc files in ein XML dokument zu überführen? In XML noch nicht, nur in CSV. > Mit einer ordentlichen XML-Repräsentierung ließe sich aber sicher > leichter arbeiten und bessere Generatoren basteln, zb auf Basis von XSLT > oder dem Perl Template Toolkit, oder vergleichbarem. Kommt drauf an. Teils wird statt DBC heute AUTOSAR XML verwendet. Das ist auch XML, aber kompliziert und groß und umständlich zu parsen. > Für sehr einfach gestrickte DBCs mag das ganze ja relativ einfach sein, > aber ich vermute der Teufel steckt wie immer im Detail. > Stichwort Bytesex, Floating points, ... Ja, da gibt es viele Hürden. Vor allem bei der Byteorder ("Motorola" vs. "Intel") kriegt man einen Knoten im Hirn, wenn man das für jeden Fall korrekt abbilden will, also z.B. auch ein 17 Bit langes Signal an Bit-Position 25. > Weiß jemand wie das rechtlich aussieht? Darf man SW veröffentlichen, die > das Fileformat von Vector liest? Davon gibt es viel Software. Ich hab da noch nie von irgendwelchen Problemen gehört.
Rolf Magnus schrieb: > In XML noch nicht, nur in CSV. das kann das candb++ ja auch, hab mich aber auch noch nicht getraut, das zu probieren ;) Da kann ja nix vernünftiges rauskommen, wenn man versucht eine hierarchische und verlinkte Struktur in csv zu pressen. ... Ok, habs jetzt doch mal probiert. Das Ergebnis ist ja noch schlechter als erwartet. er exportiert nur die aktuelle Ansicht als Liste. Also komplett wertlos. Rolf Magnus schrieb: > Davon gibt es viel Software. Also ich hab nicht viel gefunden, was Bibliotheken oder Parser angeht. cantools zum einen und hsk-libs mit dem dbc2c.awk zum anderen. Beides unterschiedliche Ansätze. Das eine parst die dbc zur Laufzeit und ruft ein callback für alle signale einer Nachricht, das andere erzeugt einen Header mit Konstanten und Zugriffsmacros. Der 2. Ansatz ist für meinen Anwendungsfall der praktischere, allerdings ist die Trennung von script und Template nicht sehr strikt und das script extrem langsam. > Ich hab da noch nie von irgendwelchen Problemen gehört.
Ich habe mal in den Code von dbc2c.awk reingesehen. Eigentlich ist es ziemlich sauber geschrieben, nur nutzt es praktisch AWKs Hauptfeature, zeilenweises Patternmatching, gar nicht. Da ist nicht sehr verwunderlich dass das langsam ist. Das lässt sich auch nicht auf die Schnelle durch ein paar Änderungen umstellen. Die Architektur des Programmes passt nicht für AWK. Es sieht auf den ersten Blick aber so aus, dass man "nur" die END-Regel umschreiben müsste, um XML zu erzeugen. Das dürfte auch nicht ganz einfach sein, weil man verstehen muss wie und wo der vorherige Parser geparste Daten in Variablen und Arrays abgelegt hat. Aber es könnte ein Anfang sein. Bez. der Geschwindigkeit könnte man auch mal a2p versuchen um das AWK-Skript in Perl umzuwandeln.
Jay schrieb: > Ich habe mal in den Code von dbc2c.awk reingesehen. Eigentlich ist es > ziemlich sauber geschrieben, Ja, da kann man nicht meckern. Anpassungen/Erweiterungen sind relativ leicht. Jay schrieb: > a2p das kannte ich noch nicht. krieg aber eine fehler in `fetchStr`
1 | 410: while ($0 !~ "^(" rSTR ")" && i++ < 256) { |
1 | F:\Development\dbc2c\hsk-libs-a3db93f0c251e77dd58d1d1af59041dbbae96125>a2p scripts\dbc2c.awk > dbc2c.pl |
2 | syntax error in file scripts\dbc2c.awk at line 410 |
3 | Translation aborted due to syntax errors. |
Schau mal CANTOOLS an https://sourceforge.net/projects/cantools/ Funktioniert für mich bisher ziemlich gut.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.