Diplomarbeit DA-22 || 2004-06-05
Dr. H. Högl, $<$Hubert.Hoegl@fh-augsburg.de$>$

Eine XML-basierte Beschreibungssprache für User-Interfaces auf kleinen alphanumerischen Displays mit 20 x 4 Zeichen.


Diese Arbeit stützt sich auf Software, die ich vor einigen Jahren zur bequemen Spezifikation von User-Interfaces geschrieben habe. Zum einen handelt es sich um die Beschreibungssprache ,,MEL``, mit der man Menüstrukturen auf kleinen LCD-Displays beschreiben kann. Programme in dieser Sprache werden mit einem Compiler auf einen Bytecode abgebildet, der dann von einem Mikroprozessor ausgeführt wird. An den Prozessor ist das LCD Display geschaltet, das dann die Menüs anzeigt. Ausserdem sind einige Tasten vorhanden, mit denen man die Navigation und die Eingabe von Werten erledigen kann. Der Interpreter ,,MEX``, der den Bytecode auf dem Mikroprozessor ausführt, ist in C geschrieben. Der folgende Quelltext zeigt einen kleinen Ausschnitt aus einem MEL Programm.

(menu-line 
   (menu-id luftk1 )
   (format
         (string 
            (blink    off)
            (value    'sw_rueck_max')
            (access   ro)
            (update   0)
         ) 
         (hfill 0)     
         (float
            (blink    off)
            (type     sii.f)
            (access   rw)
            (update   3)
            (min      '18.0')
            (max      '23.0')
            (step     '0.1')
            (default  '20.0')
            (var      'm_sw_rueck_max')
         )
   )
)

Der Ausschnitt beschreibt genau eine Zeile der Anzeige, die wie folgt aussieht:

sw_rueck_max.....20.0

Die momentane Syntax der Sprache MEL verwendet eine LISP-ähnliche Klammerung. In Zukunft - das wird Ihre Aufgabe sein - wird die Syntax als eine XML-Anwendung beschrieben werden. Diese Sprache wird dann MEL2 genannt werden.

Ihre Aufgaben sind:

Genauere Informationen zu MEL und MEX entnehmen Sie bitte der Dokumentation mel.html und mex.html.


Im folgenden sind einige Fotos einer beispielhaften Menüsteuerung aus menu.m zu sehen. Positionsangaben schreibe ich als Paar (Zeile, Zeichen), die Zeilen gehen von 1 bis 4, die Zeichen von 1 bis 20:

  1. Das Top-Level Menü. Am linken Rand sieht man an (2,1) den Pfeil, der die momentan aktive Zeile markiert. An der Stelle (1,17) ist ein Stern (*) zu sehen, der angibt, dass die aktive Zeile nur lesbare Komponenten enthält. Untermenüs werden am rechten Rand durch ein > Symbol markiert. Drückt man auf so einer Zeile auf den ,,nach rechts`` Navigationsknopf, dann öffnet sich das Untermenü. Die Zahl an der Stelle (1,19) ist die momentan aktive Zeile. Das Plus-Zeichen an (1,20) sagt aus, dass es nach der aktuellen Zeile eine weitere Zeile zum Ansehen gibt. Wenn man auf der letzten Menüzeile steht, dann wird ein Ausrufezeichen angezeigt - oder gar kein Zeichen, falls das Menü weniger als drei Zeilen hat.

    Image .//l2.jpg

    Auf der ersten Zeile steht links immer der Name des Menüs.

  2. Hier hat sich das ,,Status`` Untermenü geöffnet. Man sieht, dass man es wieder mit mehreren Untermenüs zu tun hat.

    Image .//l3.jpg

  3. Das CAN Statusmenü enthält zwei ganze Zahlen als Ausgabewerte. Man beachte, dass der Menüname aus zwei Teilnamen zusammengesetzt ist, die durch einen Punkt getrennt sind (Status.CAN).

    Image .//l4.jpg

  4. Hier sieht man ein Optionsfeld. Das Feld ist nur lesbar. Das Programm bestimmt, ob ein Ein oder Aus angezeigt wird.

    Image .//l5.jpg

  5. Die Zeilenmarkierung (Pfeil) steht auf der letzten Zeile (Ausrufezeichen!).

    Image .//l6.jpg

  6. Diese zwei Werte im Parameter-Menü ,,Luftkühler`` sind Eingabewerte (angezeigt durch den Doppelpunkt). Die Werte können ein Vorzeichen, zwei Ziffern vor dem Dezimalpunkt und eine Ziffer nach dem Dezimalpunkt haben. Das ist das sogenannte ,,sii.f`` Format.

    Image .//l7.jpg

  7. Ein anderes Parametermenü. Der Zeilencursor (Pfeil) steht auf der letzten Zeile (5!).

    Image .//l12.jpg

  8. Das Sensormenü zeigt nur-lesbare Werte an (in diesem Fall Temperaturen).

    Image .//l8.jpg

  9. Dieses Menü zeigt mehrere Eingabefelder vom Typ ,,Switchbox``. Jeder Unterstrich _ entspricht einem Bit, das auf 0 (das ist der Unterstrich) oder 1 gesetzt werden kann. Jeder Leistungsausgang wird durch ein Bit dargestellt.

    Image .//l9.jpg

  10. Bei diesem Menüeintrag wird die Uhr gesetzt.

    Image .//l10.jpg

  11. Auch beliebige Texte lassen sich darstellen.

    Image .//l11.jpg



Hubert Hoegl 2004-06-13