File: INCLUDE\AUTOJUST\AUTOJUST.H
1 #ifndef __AUTOJUST_H
2 #define __AUTOJUST_H
3
4 // Struktur, die die Positionen der Motoren der
5 // bestimmten Antriebsachsen aufnimmt (OrigDF/TL/CC)
6 // zusätzlich werden die Intervallschranken, innerhalb
7 // derer die Optimierung durchgeführt wird, gespeichert
8 // (Min/MaxDF/TL/CC)
9 struct TMotorPositionsWerte
10 {
11 double MinDF;
12 double MaxDF;
13 double OrigDF;
14 double MinTL;
15 double MaxTL;
16 double OrigTL;
17 double MinCC;
18 double MaxCC;
19 double OrigCC;
20 };
21
22 // Struktur, in der die Intensität (Intensity)
23 // an einer bestimmten Position (DF,TL,CC) gespeichert wird
24 struct TIntensityPosition
25 {
26 double DF;
27 double TL;
28 double CC;
29 float Intensity;
30 };
31
32 // mögliche Arbeitsschritte während der automatischen Justage
33 enum EJustagePoints { jpSetParameters, jpInitialize, jpChooseAxis, jpOptimizingCC, jpOptimizingTL, jpOptimizingDF, jpCalculate, jpPostProcessing };
34
35 class TransformationClass;
36
37 // Dialogklasse der Automatischen Justage
38 class TAutomaticAngleControlDlg : public TModalDlg, public ITimer
39 {
40 public:
41 TAutomaticAngleControlDlg();
42 virtual ~TAutomaticAngleControlDlg();
43
44 // überschriebenes aus der (Fenster-)Basiaklasse
45 public:
46 virtual BOOL Dlg_OnInit ( HWND, HWND, LPARAM );
47 virtual void Dlg_OnCommand( HWND, int, HWND, UINT );
48 virtual void LeaveDialog(void);
49
50 // sorgt für eine sequenzielle Abarbeitung der Arbeitsschritte (dazwischen Systemzeit freigeben)
51 // nächster Schritt in <m_NextStep>
52 virtual void OnTimer ( TBasicTimer *const );
53
54 private:
55 void NextStep(EJustagePoints aNext, BOOL= FALSE);
56 TIntList m_NextStep; // Liste von EJustagePoints
57 TInterfaceTimer *m_lnkTimer;
58
59 // Tranformationsobjekt als Member definiert
60 TransformationClass *Transform;
61
62 TDetector *Sensor;
63
64
65 // Temporäre Buffer zur Stringzusammensetzung
66 char *buf, *buf1;
67
68 // Inhalt des Statusfeldes
69 char *status;
70
71 // maximale Groesse fuer das Status-Textfeld
72 unsigned nMaxString;
73
74 //Aktivierung der Abbruchkriteriums Intensitätsdifferenz
75 bool bIntensityDiffActive;
76
77 // Laufvariablen
78 int durchlauf, step, step1, count;
79
80 // Anzahl der Zeilen im Status-Textfeld
81 DWORD dwStatusZeilen;
82
83 // Zahl der durchzuführenden Messungen pro Position
84 unsigned nMeasureCount;
85
86 // Positionsvariablen, Intensitätsvariablen
87 double fPosition, intervall_li, intervall_re, x, y, z, x2, y2, z2;
88 double MaxTL, MaxDF, MaxCC;
89 float fIntenseDifferenz;
90
91 // Variablen zur Ausgabe der Justagedauer
92 SYSTEMTIME datum;
93 SYSTEMTIME zeit;
94 int justageanfang, justageende, justagezeit;
95
96 // Variablen zur Speicherung der Wertebereiche & Intensitätspositionen
97 TMotorPositionsWerte Wertebereich, aktWertebereich;
98 TIntensityPosition MaxIntensity, LastIntensity, ActIntensity;
99 };
100
101 #endif
102