Ein Service repräsentiert im wesentlichen eine Funktionseinheit eines Gerätes, z.B. die Höhensteuerung der Targets oder die Heizung des Temperaturkontrollers. Die wesentlichen Eigenschaften der Basisklasse MpxServiceC sind deshalb, daß sie den Namen des Services enthält und dessen Untereinheiten verwalten kann. Die wichtigsten Funktionen sind demzufolge das Hinzufügen (add) und das Auf''|finden (find_action) von Aktionen des Services.
Der DevService erweitert diese Eigenschaften wiederum um Bedürfnisse der Experiment-Steuerung. Beim Erzeugen des Services werden standardmäßig zwei Aktionen INIT und TERM für das Feld PROZESS eingetragen, die die init- bzw. deinit-Funktion dieses Services aufrufen. Diese Funktionen init und deinit kann der Programmierer dafür verwenden, Standardwerte einzustellen, Geräte zu initialisieren oder Datenbankwerte neu einzulesen. Die init-Funktion wird direkt vor der ersten Aktion einmal ausgeführt. Mit der Folge PROCESS TERM, PROCESS INIT ist dies aber auch jederzeit möglich, um z.B. im laufenden Betrieb die Höhengrenzwerte der Targetsteuerung zu ändern.
Um einen eigenen Service zu programmieren, wird eine neue Klasse
definiert, die alle Eigenschaften von DevService erbt (vergl.
Anhang ). Zusätzlich werden hier die
servicespezifischen Eigenschaften definiert, z.B. Platzhalter
für Geräteparameter, Einstellwerte oder Messagesystemnamen oder
Funktionen, die für das Gerät als ganzes gelten. Mit der
obengenannten init-Funktion kann man diese Variablen z.B. aus
der Datenbank initialisieren. Im Konstruktor der neuen Klasse werden
die zugehörigen Felder und Aktionen angemeldet. Eine Instanz der
Klasse wird mittels der Memberfunktion add der Klasse DevServiceSet in das ServiceSet eingetragen.