File: INCLUDE\WORKFLOW\TAreaScanCmd.h
1 #ifndef _TAREASCANCMD_H
2 #define _TAREASCANCMD_H
3
4 #include "workflow\TCmd.h"
5 #include "difrkmty\s_extern.h" // für TScanWindow
6 #include "difrkmty\a_extern.h" // für TAreaScanWindow
7
8 /** @file TAreaScanCmd.h
9 * Ablaufsteuerung eines AreaScan's.
10 * Ablaufsteuerung für AreaScan (mit einem 0-dim-Detektor).
11 */
12
13 /** Beschreibt die Durchführung eines 0-dimensionalen AreaScans.
14 *
15 * @author David Damm
16 * @date 04.07.2004
17 * @version 0.1
18 * Doxygen-Kommentare hinzugefügt und teilweise toten Code entfernt.
19 */
20 class TAreaScanCmd : public TCmd
21 {
22
23 // Konstruktor und Destruktor
24 public:
25
26 /** Konstruktor.
27 * Initialisierung und Anfahren der Startposition, damit der AreaScan
28 * durchgeführt werden kann.
29 * @param ct Das eingelesene Kommando mit Parametern.
30 */
31 TAreaScanCmd ( TCmdTag );
32
33 // Warum gibt es keinen Destruktor?
34
35 // Fortschritt- und Kommandoinformtionen
36 public:
37
38 //* @copydoc TCmd::GetShowData()
39 virtual bool GetShowData ( LPSTR );
40
41 //* @copydoc TCmd::GetName()
42 virtual void GetName ( LPSTR aName );
43
44 // Schritte der Kommandoverarbeitung
45 public:
46
47 //* @copydoc TCmd::FirstStep()
48 ECmdCode FirstStep ( void );
49
50 //* @copydoc TCmd::ControlStep()
51 ECmdCode ControlStep ( void );
52
53 //* @copydoc TCmd::ReadyStep()
54 ECmdCode ReadyStep ( void );
55
56 // Attribute
57 private:
58
59 //* Pointer auf zugehöriges Areascanfenster.
60 TAreaScanWindow *AreaScanW;
61
62 //* Nummer des Omegamotors.
63 int nOmega;
64
65 //* Nummer des Thetamotors.
66 int nTheta;
67
68 //* Thetagesamtbereich.
69 double dThetaWindow;
70
71 //* Thetaschrittweite.
72 double dThetaWidth;
73
74 //* Omegastartposition.
75 double dOmegaMin;
76
77 //* Omegaendposition.
78 double dOmegaMax;
79
80 //* Omegaschrittweite.
81 double dOmegaWidth;
82
83 //* Omegaposition vor dem Scanstart.
84 double dStartPointOmega;
85
86 //* Thetaposition vor dem Scanstart.
87 double dStartPointTheta;
88
89 /** Gibt Verhältnis an, um das der Thetamotor bewegt werden soll, wenn sich
90 * der Omegamotor um einen Schritt bewegt.
91 * @warning Wird nur bei Omega2Theta verwendet.
92 */
93 double dMoveRelation;
94
95 //* Omegaposition der nächsten Messung.
96 double dOmega;
97
98 //* Thetaposition der nächsten Messung.
99 double dTheta;
100
101 //* Letzer Schritt für Theta.
102 int nMaxThetaPoint;
103
104 //* Aktueller Schritt für Theta.
105 int nThetaPoint;
106
107 //* Letzer Schritt für Omega.
108 int nMaxOmegaPoint;
109
110 //* Aktueller Schritt für Omega.
111 int nOmegaPoint;
112
113 //* Enthält Wert für 2Theta-Startposition des aktuellen Spektrums.
114 double d2ThetaStart;
115 };
116
117 #endif
118