Was ist das? YADRO benutzen Im Detail |
Software DRO:ddisp zur Digitalanzeige im DetailNormalerweise muss man diesen Teil nicht lesen. Er existiert mehr oder weniger nur als Referenz oder für diejenigen, die sich für die Funktion interessieren oder sich eigene Macros schreiben wollen. DRO:ddisp ist mehr ein Automat als ein klassiches "festverdrahtetes" Programm das nur eine Aufgabe erfüllen kann. Bei der Planung der Digitalanzeige wurde schnell klar, dass sich nicht alle Anforderungen vorhersehen lassen können. Der offensichtliche und sehr interessante (für mich) Lösungsansatz war, einen Anzeige-Automaten und eine eigene Programmiersprache zu schreiben die das Bindeglied zwischen den Messleisten-Werten und der Anzeige bzw. dem Verhalten der Anzeige ist. Die DOS-Seite (oder "client-side") der Digitalanzeige besteht hauptsächlich aus folgenden Teilen: Die Lösung verfolgt (nicht strikt) das MVC-Konzept (Model View Container).
Übersicht:Wie gesagt, hat DRO:ddisp eine eigene Programmiersprache. Diese Sprache ist etwas an C angelehnt. Ich nenne sie YPL (für YADRO Programming Language oder Yet Another Digital Readout Programming Language). Der Code der die Anzeige treibt, besteht aus einigen Codeteilen oder Macros die zusammenarbeiten. Es gibt einen großen Variablen "Haufen" auf den jedes Codestück zugreifen kann. Es gibt einige spezielle Funktionen die mit der Anzeige zusammenarbeiten. Die Anzeige selbst ist reichlich dumm und hat keine Ahnung von Achsenverschiebungen, Skalierungen o.ä. Hier ist eine Skizze:
Die Wolke die "var-pool" bezeichnet ist, ist ein Speicher der alle Variablen hält. Jeder Programmteil kann darauf zugreifen und sie modifizieren. In der aktuellen Version ist noch eine Erweiterung, die nicht in der Zeichnung erscheint. YADRO macht folgendes:
I Kommunikation mit DRO:int4Der Kommunikationsteil von DRO:ddisp übernimmt das Lesen von und Schreiben an DRO:int4. Er liest einfach die Werte vom Interface und wandelt die hexadezimale Darstellung in einen ganzzahligen Wert um. Er wandelt nicht in tatsächliche Werte um. Nachdem es zwei verschiedene Protokolle der Messleisten gibt, muss der Kommunikationsteil diese erkennen (was er auch tut) und sie entsprechend konvertieren. Der Kommunikationsteil behandelt auch Zeitüberschreitungen.
Anzeige-AutomatOder auch "Display-Engine". Die Display-Engine ist die "glue-logic" oder Schnittstellenlogik die die beiden Teile verbindet. Sie weiß wo Achsen dargestellt werden müssen, weiß wie sie Werte von der Schnittstelle bekommt, weiß wie Tastendrücke zu behandeln sind, weiß wie Benutzeraufgerufene Makros ausgeführt werden und weiß welche Makros ausgeführt werden müssen, um konvertierte und skalierte Werte für die Achsen zu bekommen. Sie weiß aber nicht was eine Fräsmaschine oder Drehbank ist und wie die Werte umgewandelt werden müssen. Das übernehmen die Makros.
InterpreterDer Interpreter ist der Teil der Macros ausführt die entweder von der "display-engine" oder durch Benutzeranforderung angefordert wurden. Die Sprache ist etwas C-ähnlich. Ich habe versucht die Sprache einfach zu halten und sie enthält nur, was man braucht um damit eine Digitalanzeige zu betrieben. Sollte etwas fahlen, lässt sie sich durchaus erweitern. Das Wort "Interpreter" ruft möglicherweise ein Bild langsamer Programme hervor, was aber falsch ist. Die Macros die häufig aufgerufen werden, lassen sich einfach halten und die Teile die rechenintensiv sind, werden von der "display-engine" übernommen. Der DRO:ddisp Interpreter führt ca. 100000 Instrukionen pro Sekunde auf einem 3GHz AMD64 aus. |