Next: Überblick über die Up: Die Gerätetreiber-Klassenbibliothek Previous: Anforderungen an Gerätetreiber

Implementierung mit objektorientiertem Modell

Die Überlegungen des vorigen Abschnitts legen es nahe, das Treiberkonzept gemäß allen Anforderungen völlig neu zu implementieren. Dies war Aufgabe der vorliegenden Arbeit.

Der logische Aufbau der einzelnen Services läßt sich mit einem objektorientierten Modell beschreiben [Boo91]. In solch einem Modell bilden Objekte den Ausgangspunkt. Alle physikalisch vorhandenen Gegenstände, aber auch abstrakte Dinge, können als Objekt betrachtet werden. Alle gleichartigen Objekte gehören zur selben Klasse. Ein konkretes Exemplar einer Klasse nennt man eine Instanz dieser Klasse. Der Zustand einer Instanz wird durch die Werte seiner Instanzvariablen beschrieben. Methoden dienen dazu, diese Werte wiederzugeben oder zu manipulieren. Die Parallelen zum Gerätetreiberkonzept zeigen sich in der Entsprechung von Servicetyp und Klasse, Service und Instanz, Feld und Instanzvariable sowie von Aktion und Methode (siehe Tabelle ).

Als Programmiersprache wurde C++ verwandt, die als objektorientiere Erweiterung der Sprache C für diese Anwendung gut geeignet ist. C ist eine im Institut und auch allgemein weit verbreitete Sprache. Die gesamte Steuerungs- und Datenerfassungssoftware ist z.B. in C geschrieben [Kun93a][Kry93][Kra93]. Auch C++ wurde schon in einigen Arbeiten eingesetzt [Ste93][Sch93][Kra93]. Der Programmierer muß sich also lediglich mit einigen objektorientierten Erweiterungen vertraut machen. Vorteilhaft ist, daß C++ selbständig mehrere Instanzen einer Klasse verwalten kann. Dadurch können in einem Programm einmal implementierte Objekte mehrfach benutzt werden. Für neue Klassen, die ähnliche Eigenschaften wie bereits existierende haben, müssen nur die Unterschiede implementiert werden, da durch die sog. Vererbung Eigenschaften übernommen werden können. All dies ist in C nicht möglich [Lip91].

Mit dem objektorientierten Programmiermodell kann die in Abschnitt beschriebene Gerätestruktur direkt im Programmcode abgebildet werden. Mit Hilfe dieser Sprache wurde der in diesem Abschnitt beschriebene Satz von Klassen aufgebaut.

Ein Gerätetreiber implementiert eine oder mehrere verschiedene Serviceklassen und unterstützt damit einen oder mehrere Gerätetypen. Jedem dieser Gerätetypen wird ein eindeutiger Typname zugeordnet, über den die Namen der Services mit den Servicetypen verbunden werden. Die Klassen definieren Datenstrukturen, die die Einstell- oder Meßwerte enthalten, und Objekte, die die Aktionen zur Verfügung stellen, die auf die Werte angewendet werden können.

Wird ein Gerätetreiber für einen speziellen Service gestartet, erfragt er als erstes den Typ des Services und überprüft, ob er für diesen Typ eine Serviceklasse zur Verfügung stellt oder nicht. Wenn dies der Fall ist, wird eine Instanz dieser Klasse erzeugt, die dann für die Bedienung des speziellen Gerätes zur Verfügung steht.

Eine Nachricht an einen Gerätetreiber, die einen Aktionsauftrag enthält, gibt zusätzlich zum Messagesystemnamen, der dem Servicenamen entspricht, das Feld und die Aktion an und beinhaltet auch die Daten, die für die Aktion bestimmt sind. Der Gerätetreiber sucht anhand dieser Informationen die richtige Aktion, ruft deren Funktion auf, die die Aktion ausführt, und übergibt ihr die Daten.

In Anhang wird ein einfaches Beispiel für einen Gerätetreiber beschrieben.



Next: Überblick über die Up: Die Gerätetreiber-Klassenbibliothek Previous: Anforderungen an Gerätetreiber


martin@daisy.zdv.Uni-Mainz.DE
Fri Apr 21 10:02:42 MESZ 1995