File: INCLUDE\TOPOGRFY\TP_FUNK.H

    1 //##############################################################################
    2 //                                                                            //
    3 // TP_FUNK.H                                                                  //
    4 //                                                                            //
    5 // Subsystem : Topographie / Funktionalität                                   //
    6 // Benutzung durch andere Subsysteme erforderlich: NEIN                       //
    7 //----------------------------------------------------------------------------//
    8 // Autoren:  Thomas Kullmann, Günther Reinecker (2002)                        //
    9 //                                                                            //
   10 // Stand  : 11.01.2003                                                        //
   11 // letzter vollständiger Test: 11.01.2003                                     //
   12 //                                                                            //
   13 //##############################################################################
   14 
   15 #ifndef _TP_FUNK_H
   16 #define _TP_FUNK_H
   17 
   18 #include "utils\u_utils.h"
   19 #pragma hdrstop
   20 
   21 #include "detecuse\detecuse.h" // TDetector
   22 //#include "datavisa\datavisa.h"
   23 #include "workflow\workflow.h" // extern Steering
   24 #include "motrstrg\motrstrg.h"
   25 
   26 //--||--\\--||--//--||--\\--||--//--||--\\--||--//--||--\\--||--//--||--\\--||--
   27 
   28 //##############################################################################
   29 // globale Typdeklarationen
   30 //##############################################################################
   31 
   32 enum EFormat { eDF= 1, eSF= 2 };
   33 
   34 //##############################################################################
   35 // TTopography
   36 //##############################################################################
   37 
   38 class TTopography : private IMainEvents // neu! Kullmann+Reinecker (31.01.2004) Singleton-Objekt freigeben, wenn Hauptprogramm beendet wird
   39 {
   40         //------------------------------------------------------------------------------
   41         // Konstruktoren
   42 private:
   43         TTopography( void );
   44         TTopography( const TTopography& ) {} // kein Copy-Konstruktor
   45         TTopography& operator= ( const TTopography& ); // kein Zuweisungsoperator
   46         //------------------------------------------------------------------------------
   47         // Methode zur Erzeugung einer Singleton-Instanz
   48 public:
   49         static TTopography *GetInstance();
   50         //------------------------------------------------------------------------------
   51         // Accessor-Methoden
   52 public:
   53         TDetector *GetDetector ( void )
   54         {
   55                 return m_lnkDetector;
   56         };
   57         TDetector *GetActDetector ( void ); // gibt Zeiger auf den aktuellen Detektor zurück
   58         TDetector *GetMonitor ( void )
   59         {
   60                 return m_lnkMonitor;
   61         };
   62         TMacroTag *GetMWorkPoint ( void )
   63         {
   64                 return m_lnkMWorkPoint;
   65         };
   66 
   67         int GetMotor ( void )
   68         {
   69                 return m_Motor;
   70         };
   71         LPCSTR GetMotorName ( int );  // Rückgabe der Antriebsbezeichnung
   72         LPCSTR GetMotorUnit ( void ); // Rückgabe der Einheit des aktuellen Motors
   73         LPCSTR GetDigitFormat ( const EFormat ); // Rückgabe eines Zahlenformats mit Digits oder Digits+1 Nachkommastellen des aktuellen Motors
   74         int GetActMotor ( void ); // gibt den Index des aktuellen Motors zurück
   75         int GetMotorCount ( void ); // gibt die Anzahl der verfuegbaren Motoren zurück
   76         double GetStartAngle ( void )
   77         {
   78                 return m_dStartAngle;
   79         };
   80         double GetAngle ( void ); // gibt die Winkelposition des aktuellen Motors zurück
   81         UINT GetMotorDigits ( const EFormat ); // Rückgabe der Nachkommastellengenauigkeit des ausgewählten Antriebs; entweder Digits (für Positionsangaben) oder Digits+1 (für Schrittweiten)
   82 
   83         LONG GetMeasurementTime ( void )
   84         {
   85                 return m_lMeasurementTime;
   86         };
   87         DWORD GetCurTime ( void )
   88         {
   89                 return m_dwCurrentTime;
   90         };
   91         DWORD GetStartTime ( void )
   92         {
   93                 return m_dwStartTime;
   94         };
   95         float GetMaxTime ( void )
   96         {
   97                 return m_fMaxTime;
   98         };
   99 
  100         DWORD GetMaxCounts ( void )
  101         {
  102                 return m_dwMaxCounts;
  103         };
  104         WORD GetNumberCycle ( void )
  105         {
  106                 return m_nNumberCycle;
  107         };
  108         WORD GetRestShots ( void )
  109         {
  110                 return m_nRestShots;
  111         };
  112 
  113         float GetControlStep ( void )
  114         {
  115                 return m_fControlStep;
  116         };
  117         float GetControlRange ( void )
  118         {
  119                 return m_fControlRange;
  120         };
  121         float GetMoveStep ( void )
  122         {
  123                 return m_fMoveStep;
  124         };
  125         float GetMaxAngleEscape ( void )
  126         {
  127                 return m_fMaxAngleEscape;
  128         };
  129         float GetWorkPoint ( void )
  130         {
  131                 return m_fWorkPoint;
  132         };
  133         float GetAngleBetweenShots ( void )
  134         {
  135                 return m_fAngleBetweenShots;
  136         };
  137         //------------------------------------------------------------------------------
  138         // Mutator-Methoden
  139 public:
  140         BOOL SetMotor( EAxisType );
  141         BOOL SetMotor( int );
  142         void SetDetector( TDetector *aDetector )
  143         {
  144                 m_lnkDetector= aDetector;
  145         };
  146         void SetMonitor ( TDetector *aMonitor )
  147         {
  148                 m_lnkMonitor= aMonitor;
  149         };
  150 
  151         BOOL SetMeasurementTime( LONG );
  152         void SetStartTime ( DWORD aTime )
  153         {
  154                 m_dwStartTime= aTime;
  155         };
  156         void SetCurrentTime ( DWORD aTime )
  157         {
  158                 m_dwCurrentTime= aTime;
  159         };
  160         BOOL SetMaxTime ( float );
  161 
  162         BOOL SetNumberCycle ( WORD );
  163         BOOL SetMaxCounts ( LONG );
  164         void SetRestShots ( WORD aShots )
  165         {
  166                 m_nRestShots= aShots;
  167         };
  168 
  169         BOOL SetControlRange ( float );
  170         BOOL SetAngleBetweenShots( float );
  171         BOOL SetStartAngle ( double );
  172         BOOL SetControlStep ( float );
  173         BOOL SetMoveStep ( float );
  174         BOOL SetAngleWidth ( float );
  175         BOOL SetMaxAngleEscape ( float );
  176         BOOL SetWorkPoint ( float );
  177         //------------------------------------------------------------------------------
  178         // Setzen logischer Ausdrücke
  179 public:
  180         void SetTimeFinish ( BOOL aValid )
  181         {
  182                 m_bTimeFinish= aValid;
  183         };
  184         void SetTimeRunning ( BOOL aValid )
  185         {
  186                 m_bTimeRunning= aValid;
  187         };
  188         void SetAdditionalTime ( BOOL aValid )
  189         {
  190                 m_bAdditionalTime= aValid;
  191         };
  192         void SetStartPointOk ( BOOL aValid )
  193         {
  194                 m_bStartPointOk= aValid;
  195         };
  196         void SetExceptionOccured( BOOL aValid )
  197         {
  198                 m_bExceptionOccured= aValid;
  199         };
  200         void SetControlActive ( BOOL aValid )
  201         {
  202                 m_bControlActive= aValid;
  203         };
  204         void SetMonitorUsed ( BOOL aValid )
  205         {
  206                 m_bMonitorUsed= aValid;
  207         };
  208         void SetMultipleShot ( BOOL aValid )
  209         {
  210                 m_bMultipleShot= aValid;
  211         };
  212         void SetSmallAngleSide ( BOOL aValid )
  213         {
  214                 m_bSmallAngleSide= aValid;
  215         };
  216         //------------------------------------------------------------------------------
  217         // Lesen logischer Ausdrücke
  218 public:
  219         BOOL HasMotor ( void )
  220         {
  221                 return (m_Motor != -1);
  222         };
  223         BOOL HasAdditionalTime( void )
  224         {
  225                 return m_bAdditionalTime;
  226         };
  227         BOOL IsMultipleShot ( void )
  228         {
  229                 return m_bMultipleShot;
  230         };
  231         BOOL IsControlActive ( void )
  232         {
  233                 return m_bControlActive;
  234         };
  235         BOOL IsSmallAngleSide ( void )
  236         {
  237                 return m_bSmallAngleSide;
  238         };
  239         BOOL IsSetupOk ( void )
  240         {
  241                 return m_bSetupOk;
  242         };
  243         BOOL IsStartPointOk ( void )
  244         {
  245                 return m_bStartPointOk;
  246         };
  247         BOOL IsMonitorUsed ( void )
  248         {
  249                 return m_bMonitorUsed;
  250         };
  251         BOOL IsTimeRunning ( void )
  252         {
  253                 return m_bTimeRunning;
  254         };
  255         BOOL IsExeptionOccured( void )
  256         {
  257                 return m_bExceptionOccured;
  258         };
  259         //------------------------------------------------------------------------------
  260         // Lesen und Setzen von Attributen der Ablaufsteuerung
  261 public:
  262         void SetStrngStartPoint ( double );
  263 
  264         double GetStrngStartPoint ( void );
  265         double GetStrngDistance ( void );
  266         BOOL DetectorRequest ( void );
  267         float GetStrngPeakIntensity( void );
  268         float GetStrngStartIntensity( void );
  269         float GetStrngIntensity ( void );
  270         double GetStrngHwb ( void );
  271         //------------------------------------------------------------------------------
  272         // Auslösen von Aktionen
  273 public:
  274         BOOL DoInitDetectors( void );  // Initialisierung des aktuellen Detektors und Monitors
  275         BOOL DoInitMotor( void );            // Initialisierung des Motors (bevorzugt Omega)
  276         void DoInitWorkPoint( void );        // Ablaufsteuerung initialisieren
  277         BOOL DoStartMeasure ( ECmdId, int, int, LPSTR, HWND ); // Durchführung einer Messung mittels Kommandoverarbeitung
  278         BOOL DoStartMeasure ( TMacroTag*, HWND ); // Durchführung einer Messung mittels Macroverarbeitung
  279         BOOL DoStopMeasure( void );     // Unterbrechung einer Messung
  280         void DoSetDetectorParams ( float, DWORD, BOOL ); // setzt Parameter für die Belichtung
  281         void DoResetDetectorParams( void );  // löschen der im Detektor gespeicherten Daten zur Topography
  282         BOOL DoSaveMonitorSignal( void );
  283         BOOL DoSaveMotorSettings( void ); // Settings des aktuellen Motors sichern
  284         BOOL DoLoadMotorSettings( void ); // Settings des aktuellen Motors zurückschreiben
  285 
  286         //------------------------------------------------------------------------------
  287         // privates
  288 private:
  289         BOOL DoInitMotor( EAxisType, BOOL ); // angegebenen Antrieb initialisieren
  290         virtual void  OnLeave ( ); // neu! Kullmann+Reinecker (31.01.2004) Singleton-Objekt freigeben, wenn Hauptprogramm beendet wird
  291 
  292         //------------------------------------------------------------------------------
  293         // Attribute
  294 private:
  295         TDetector *m_lnkDetector;      // Messgeraet
  296         TDetector *m_lnkMonitor;       // Zweiter Zaehler fuer Monitor-Signal
  297         TMacroTag *m_lnkMWorkPoint;    // Makro zum Arbeitspunkt anfahren
  298 
  299         WORD m_nNumberCycle;       // Anzahl der Mess-Zyklen
  300         float m_fWorkPoint;         // Arbeitspunkt
  301         float m_fControlRange;      // Regel-Bereich nach Intensitaet
  302         float m_fControlStep;       // Regel-Schrittweite
  303         float m_fMoveStep;          // Schrittweite zum Anfahren des Arbeitspunktes
  304         float m_fMaxAngleEscape;    // Bei Weglaufen der Regelung
  305         int m_Motor;              // Regelmotor
  306         DWORD m_dwMaxCounts;        // Maximale Anzahl Impulse
  307         double m_dStartAngle;        // Startwinkel relativ zum Peak
  308         float m_fAngleBetweenShots; // Abstand bei Mehrfachbelichtung
  309         LONG m_lMeasurementTime;   // Mess-Zeit in Sekunden je Zyklus
  310         float m_fMaxTime;           // Maximale Messzeit
  311         DWORD m_dwCurrentTime;      // aktuelle Zeit einer Messung
  312         DWORD m_dwStartTime;        // Startzeit einer Messung
  313 
  314         BOOL m_bSmallAngleSide;    // Klein-Winkel= TRUE
  315         BOOL m_bMonitorUsed;       // ob Monitor-Detektor genutzt werden soll
  316         BOOL m_bMultipleShot;      // Mehrfach-Belichtungen
  317         BOOL m_bControlActive;     // ob die Messung laeuft
  318         BOOL m_bSetupOk;           // ob Motor und Detektor korrekt gesetzt
  319         BOOL m_bStartPointOk;      // ob der Arbeitspunkt angefahren wurde
  320         WORD m_nRestShots;         // Anzahl der restlichen Zyklen
  321         BOOL m_bTimeFinish;
  322         BOOL m_bAdditionalTime;    // ob zusaetzliche Zeit entstanden ist
  323         BOOL m_bExceptionOccured;  // ob Fehler aufgetreten
  324         BOOL m_bTimeRunning;
  325 
  326         static TTopography *s_Instance; // enthält die EINZIGE Instanz
  327 };
  328 
  329 #endif //_TP_FUNK_H 
  330 //------------------------------------------------------------------------------
  331 // __LastLine__
  332