Forum: PC-Programmierung can database files (.dbc) -> xml


von Vlad T. (vlad_tepesch)


Lesenswert?

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
von Rolf Magnus (Gast)


Lesenswert?

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.

von Vlad T. (vlad_tepesch)


Lesenswert?

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.

von Jay (Gast)


Lesenswert?

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.

von Vlad T. (vlad_tepesch)


Lesenswert?

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.

von Frank Gerlach (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.