Die für die Topographie wesentlichen Dateien sind m_steerg.cpp, m_steerg.h m_topo.cpp und
m_topo.h. Letztere übernehmen dabei die Fensterdarstellung und Speicherung von einstellbaren Werten,
während die eigentliche Steuerfunktionalität durch m_steerg.* realisiert wird. Allerdings enthält
m_steerg.* nicht nur topographiespezifische Funktionen, sondern realisiert auch andere spezielle und allgemeine
Steuerfunktionen.
Zum Einlesen der Standarddaten wird die Ini-Datei develop.ini benötigt. Hier findet sich der
für die Topographie relevante Ini-Datei Abschnitt.
Für das Einstellen des Arbeitspunktes bei Einfachbelichtung wird ein Makro benötigt,
welches der Makrodatei (standard.mak) entnommen wird. Hier ist der entsprechende
Makrodateiausschnitt dargestellt .
In m_topo.* gibt es drei Klassen: TTopographyExecute, TTopographySetParam und TTopography. Letztere Klasse dient der Datenspeicherung, während TTopographyExecute und TTopographySetParam die jeweilige Fensterdarstellung realisieren und auf die Daten von TTopography zugreifen. TTopographyExecute implementiert das "Topographie Ausführen"-Fenster und TTopographySetParam das "Topographie Einstellen"-Fenster. Die im "Topographie Einstellen"-Fenster eingegebenen Werte werden in TTopography gespeichert und auch vor ihrer Darstellung von dort übernommen.
Die in der Topographie verwendeten Werte werden in der Klasse TTopography gespeichert. Ihre Initialisierung erfolgt zum Teil im Konstruktor von TTopography mit fest vorgegebenen Standardwerten und zum anderen durch Einlesen der entsprechenden Werte aus der Ini-Datei. Für das Einlesen der Werte aus der Ini-Datei werden immer auch Standardwertangaben benötigt, die verwendet werden, falls der entsprechende Eintrag in der Ini-Datei fehlt oder das Einlesen fehlschlägt. Somit existieren auch für die aus der Ini-Datei eingelesenen Werte Standardangaben im Programm.
Konstruktor | Ini-Datei |
---|---|
fMoveStep = 3 | fWorkPoint = 0.6 |
fMaxAngleEscape = 50 | bSmallAngleSide = TRUE |
lMesurementTime = 600 | fControlRange = 0.03 |
nNumberCycle = 1 | fControlStep = 0.2 |
bMultibleShot = FALSE | fMaxTime = 10.0 |
dStartAngle = -20.0 | dwMaxCounts = 10000 |
fAngleBetweenShots = 3.0 | |
fFailure = 0.02 | |
bMonitorUsed = FALSE | |
Sensor = NULL | |
Monitor = NULL | |
nMotor = -1 |
Für die Ansteuerung der Motoren und das Einlesen der Detektorwerte bedient sich die Topographie der Klasse TSteering aus m_steerg.*. In m_steerg.* ist unter anderem die Möglichkeit der Makro-Steuerung implementiert (siehe auch Beschreibung Makrosprache ). Jeder Makrobefehl ist dabei als eigene Klasse implementiert, d.h. zu jedem Makrobefehl existiert eine entsprechende Klasse. Diese Makrobefehlsklassen leiten sich von der Basisklasse TCmd ab, die die Grundzüge eines Makrobefehls beschreibt. Werden mehrere Makrobefehle nacheinander ausgeführt, so entsteht eine Makrosequenz. m_steerg.* ermöglicht es, im RTK-Programm nutzerdefinierte Makrosequenzen auszuführen. Neben dieser zusätzlich für die Anwendung bereitgestellten Funktionalität, werden Makrosequenzen aber auch programmintern genutzt.
Für die Topographie ergeben sich folgende Möglichkeiten der Nutzung der Makrofähigkeit:
Variante 1 wird bei der Mehrfachbelichtung für das Einstellen des Arbeitspunktes und das Anfahren der nächsten Belichtungsposition verwendet. Der genutzte Makrobefehl ist "MoveToPoint".
Die Topographiefunktionalität "Nachregeln während der Einfachbelichtung" wird durch einen eigenen Makrobefehl "ControlFlank" realisiert. Dieser Makrobefehl ist speziell für die Topographiefunktionalität "Nachregeln während der Messung" entwickelt. Er kann aber auch für nutzerdefinierte Makrosequenz verwendet werden, in denen diese Funktionalität benötigt wird.
Für die Topographiefunktion "Arbeitspunkt anfahren bei Einfachbelichtung" gibt es eine Makrosequenz ("SetupTopography"), die in dem von dem RTK-Programm standardmäßig verwendeten Makrodatei beschrieben ist. Der entsprechende Abschnitt aus zwei standardmäßig verwendeten Makrodateien findet sich hier. Dieser Abschnitt wird durch Aufruf von Steering.GetMakroByName("SetupTopography") durch die m_topo.* Funktion TTopographyExecute::Dlg_OnInit eingelesen. Anschließend werden für den zweiten Makrobefehl die Parameter für die Seite vom Peak und die anzufahrende Arbeitspunktintensität entsprechend der Topographieeinstellungen geändert - das Makro wird sozusagen auf die aktuellen Einstellungen angepaßt.
Leider werden nicht alle die Motoren betreffenden Zugriffe über m_steerg.* realisiert. So setzt die Topographie den aktuellen Motor mit mlSetAxis direkt über eine m_layer.* Funktion. Ebenso erfolgt das Rückschreiben der Motorenwerte mittels mPushSettings(). Auch die Schrittweite des Motors wird durch die Topographie mittels (Width,Topography.fControlStep) gesetzt. m_steerg.* greift dann später bei der Ausführung wieder auf die Motorenvariable Width zu.