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