EPJ17 S. 16: XML & XSLT: C-Code Generierung einer Finite State Machine

Gast #3246474

Dieser Artikel erschien im Embedded Projects Journal 17 auf Seite 16.

In der 13ten Ausgabe von Embedded Projects Journal wurden im Artikel Implementierung einer Finite State Machine die Grundlagen zu endlichen Automaten vermittelt und unterschiedliche Implementierungsmöglichkeiten aufgezeigt. Darauf aufbauend zeigt dieser Beitrag, wie mit Hilfe von XML endliche Automaten beschrieben und mit XSLT der zugehörige C-Code automatisch generiert werden können. Als Anwendungsbeispiel wird eine einfache Temperaturregelung modelliert und mit einem Arduino realisiert....

Zum Heft (PDF)

Gast
Ja, der XML-Hype ist vorbei, aber viele Entwickler scheinen sich gar 
nicht bewusst zu sein, wieviel Arbeit man sich mit einer einfachen 
selbstdefinierten "Sprache" (als eigendefinierter XML-Dialekt) sparen 
kann.
Wir machen uns mit einem ähnlichen Ansatz (a la IP-XACT) das Leben 
leicht und erzeugen auch gleich noch VHDL und PDF-Doku aus dem 
XML-Quellcode. Nervige Fehler beim falschen Kopieren oder Umrechnen von 
Registertabellen, etc. gehören der Vergangenheit an. Warum Code von Hand 
schreiben, wenn man ihn elegant generieren kann?
Hallo Fitzebutze,

den Beitrag von "troll" nicht sooo ernst nehmen. Das hat ihm auch einige 
Tafeln Schokolade gekostet...

Aber ich kann dir voll zustimmen. Der XML-Hype ist vorbei, es wird aber 
dafür (so empfinde ich es) immer mehr und überall eingesetzt.

Ich denke, dass XML in der Allgemeinheit die Akzeptanz nicht gefunden 
hat, da keiner XML direkt zuordnen kann. DOC is klar, PDF is klar, aber 
XML da und XML dort, was nun???

Nett finde ich es, wenn man z.B. eine DOCX Datei in ZIP umbenennt und 
diese dann öffnet. Das ZIP-Archiv ist voll mit XML und man kann darin 
auch mehr oder weniger einfach direkt auf den Inhalt zugreifen ohne VBA 
oder ähnliches zu verwenden.

Was mir persönlich fehlt ist etwas XForms ähnliches, wo man jedoch 
direkt die Daten wieder lokal speichern kann. Eine Art Access im 
Browser, wo XML die Datenbank ist (von XML-Spy und InfoPath mal 
abgesehen).

Sicher könnte man sich mit JavaScript und Flash austoben um eine Datei 
editierbar zu machen (hab ich auch schon probiert), aber so richtig 
produktiv (und einfach) geht das nicht von der Hand.

Vielleicht kennt jemand einen besseren Ansatz dazu.

Mfg, Klaus
Gast
Der Mensch spart sich Arbeitsschritte durch Automatisierung und das 
funktioniert nunmal für die C-Codegenerierung mit XML ganz gut. Einen 
vernünftigen Codegenerator zu schreiben ist allerdings alles andere als 
trivial...

Im Automotivebereich gibt es mit dem AUTOSAR standard auch ein eigenes 
XML-Format aus dessen Beschreibungsdateien dann mit einem Codegenerator 
mehr oder weniger C-Code generiert wird. Die Beschreibungsdateien sind 
aufgrund des geschwätzigen XML so groß, dass man sie nicht mehr ohne 
Editor (XMLspy) lesen kann. Auch werden die Daten nicht prozedural 
eingelesen, sondern aus zig verschiedenen Stellen. Mit jedem Standard 
release ändern sich auch die Schemata, in denen die Beschreibung 
vorgegeben wird.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.