File: INCLUDE\DIFRKMTY\S_EXTERN.H

    1 //##############################################################################
    2 //                                                                            //
    3 // S_EXTERN.H                                                                 //
    4 //                                                                            //
    5 // Subsystem: Diffraktometrie/ Reflektometrie                                 //
    6 //            DAS MDI-Fenster für Continious-, Step- und DynamicStepScan      //
    7 // Benutzung durch andere Subsysteme erforderlich: JA                         //
    8 //                                                                            //
    9 //##############################################################################
   10 
   11 #ifndef _S_EXTERN_H
   12 #define _S_EXTERN_H
   13 
   14 #include "difrkmty\d_extern.h" // TPlotWindow, TSaveFormat
   15 
   16 #include "detecuse\detecuse.h" // TDetector
   17 
   18 //--||--\\--||--//--||--\\--||--//--||--\\--||--//--||--\\--||--//--||--\\--||--
   19 
   20 //! Anzahl der max. unterschiedlichen Schrittweiten (dyn. Schrittweite)
   21 const int nMaxScaleIdx= 10;
   22 
   23 //##############################################################################
   24 // TScanParameters
   25 //##############################################################################
   26 //! Datenhaltung für Continious-, Step- und DynamicStepScan
   27 
   28 class TScanParameters
   29 {
   30         //! einlesen der Ini-Daten zu [Scan] und setzen von Defaultwerten für StepScan
   31 public:
   32         TScanParameters( void );
   33 
   34 //ATTRIBUT(E)
   35 public:
   36         //! aktueller Detektor zum Messen
   37         TDetector *Detector; // nicht im Destruktor freigeben, wird durch Detektorsubsystem verwaltet
   38         //! Detektor fuer Monitor
   39         TDetector *Monitor; // nicht im Destruktor freigeben, wird durch Detektorsubsystem verwaltet
   40 
   41         //! beinhaltet Nummer der aktuellen Achse
   42         int nMotor;
   43 
   44         //! Speicherformat fuer Kurven
   45         EFileFormat eSaveFormat;
   46 
   47         //! Art des aktuellen Scan(StandardScan, Omegea2Theta o. ContinuousScan)
   48         ExScanType eScanType;
   49 
   50         //! Speichern nach Beendigung der Messung
   51         BOOL bSaveOnReady;
   52 
   53         //! Anzahl der Messpunkte(nur bei Cont.Scan)
   54         int nCollectionAmount;
   55 
   56 // Omega
   57         //! Startwinkel des Scans
   58         double dArgumentMin, dArgumentMax, dArgumentWidth;
   59         //! Geschwindigkeit des aktuellen Motors
   60         double dSpeed;
   61 
   62         //! gibt 2ThetaStartposition fuer einen zu fahrenden Stepscan an beim O2T-Scan an
   63         double d2ThetaStart;
   64 
   65         WORD nNumberCycle; // Anzahl der Mess-Zyklen
   66         float fMaxTime; // Maximale Messzeit
   67         DWORD dwMaxCounts; // Maximale Anzahl Impulse
   68 
   69         //! Speichern waehrend der Messung
   70         BOOL bSaveContinuous;
   71 
   72         //! gibt an ob dynamische Schrittweitensteuerung aktiv
   73         BOOL bDynamicStepWidth;
   74         //! Anzahl der verschied. Schrittweiten
   75         int nStepScaleLevels;
   76 
   77         //! Liste enthaelt in den ersten 10 werten die intensitaeten und in den
   78         //! zweiten 10 werten den zughoer. Schrittweitenfaktor
   79         TFloatList Scaler;
   80 };
   81 
   82 //##############################################################################
   83 // TScanWindow
   84 //##############################################################################
   85 // DAS MDI-Fenster für Continious-, Step- und DynamicStepScan
   86 
   87 class TScanWindow : public TScanParameters, public TPlotWindow
   88 {
   89         //Kullmann+Reinecker: zahlreiche unnötige friend-Deklarationen entfernt
   90         friend class TScanCmd;
   91         friend class TSaveDataCmd;
   92 
   93 public:
   94         TScanWindow( HINSTANCE );
   95         virtual  ~TScanWindow();
   96 
   97 // Überschriebenes aus der (Fenster-)Basisklasse
   98 private:
   99         virtual void OnCreate();
  100         virtual LRESULT OnCommand(WPARAM wParam, LPARAM lParam);
  101 
  102         virtual void OnPopupMenuInit ( WPARAM, LPARAM );
  103 
  104         virtual BOOL SetTitle( void );
  105 
  106         virtual BOOL CanNew()
  107         { return !bLineScanStarted || bInterrupted; /*Messung beendet*/ }
  108         virtual BOOL CanOpenFile()
  109         { return !bLineScanStarted || bInterrupted; /*Messung beendet*/ }
  110         virtual BOOL CanSave()
  111         { return !bLineScanStarted || bInterrupted; /*Messung beendet*/ } 
  112         virtual BOOL IsScanning(BOOL &PsdContinious) 
  113         { PsdContinious= FALSE; return bLineScanStarted; }
  114 
  115         virtual BOOL New( void );
  116         virtual BOOL LoadOldData();
  117         //! speichern einer .crv Datei
  118         //! ask== NoAskForSave(0x9900) => speichert unter Namen aus FileName
  119         //! ohne Abfrage
  120         //! == SaveWithNewName(0x9901) => speichert unter Namen, der in der
  121         //! Dialogbox erst noch enzugeben ist
  122         //! Rueckkehrcode False wenn Fehler bei anlegen der Datei oder bei
  123         //! speichern der Headerinfo. sonst true
  124         virtual BOOL SaveFile( EAskType );
  125         //! haengt aktuelles tripel der Messkurve an Datei mit FileName an
  126         //! aufruf nur bei kontinuierlichem Speichern
  127         //! Rueckkehrcode False wenn fehler bei oeffnen der Datei sonst true
  128         virtual BOOL UpdateFile();
  129 
  130         //! Ablaufsteuerung
  131         virtual void SteeringReady( LPARAM ); // Ende
  132         virtual void SteeringReset( LPARAM ); // Abbruch        
  133         virtual void Interrupt(); //! unterbricht Scanvorgang
  134 
  135         //! erhaelt Messpunkt, stellt ihn dar, speichert ihn ggf.
  136         virtual void CounterSetRequest( LPARAM );
  137 
  138         //! passt x+y-Scale des Koord.sys an neue Werte an
  139         virtual void SetRanges( void );
  140 
  141         //! liefert Klassennamen
  142         virtual LPCSTR ClassName()
  143         {
  144                 return "Scan";
  145         };
  146 
  147         //! liefert Charakteristik
  148         virtual LPCSTR GetCharacteristic()
  149         {
  150                 return "Curve";
  151         };
  152 
  153 // Überschriebenes aus TPlotWindow
  154 private:
  155         // gibt die Beschriftung der X- und Y-Achse zurück
  156         virtual void GetTitleX(int, int, char *, bool);
  157         virtual void GetTitleY(int, int, char *, bool);
  158 
  159         //! sichert Koordinatensystem in AltCoorsys
  160         //! m_main.cpp im Falle von cm_MoveScanReady
  161         virtual void SetKSProperties( TKSProperties* );
  162 
  163 // Laden+Speichern
  164 private:
  165         //! laden der Messungsdaten aus einer .crv bzw. .bk datei
  166         //! wird von TScanWindow::LoadOldData() in m_scan.cpp aufgerufen
  167         //! hFile ist Filehandle der Messdatei
  168         //! Rueckkehrcode False wenn Datei zu kurz oder [HEADER] nicht vorhanden
  169         //! sonst true
  170         BOOL LoadMeasurementInfo( TTxtRead& );
  171         //BOOL LoadMeasurementInfo( HFILE );
  172 
  173         //! Speichern bzw. Aktualisieren der Headerinformation
  174         //! Par.==0 => neu erstellen
  175         //! ==1 => aktualisieren
  176         //! Rueckkehrcode False wenn Fehler bei speichern sonst true
  177         BOOL SaveMeasurementInfo( BOOL );
  178 
  179 // Protokollbuch
  180 private:
  181         //! klier 01.03.2003 Protokollbuch
  182         //! Initialisiert Speicherung im Protokollbuch
  183         void InitializeMeasurementProtocol( void );
  184 
  185         //! klier 01.03.2003 Protokollbuch
  186         //! Speichert Informationen im Protokollbuch
  187         void SetMeasurementProtocolParameter( void );
  188 
  189 // Sonstiges
  190 private:
  191         // Methoden fuer die Initialisierung verschiedener Scan-Tasks
  192         void InitializeStandardScanTask();
  193         void InitializeOmega2ThetaScanTask();
  194         void InitializeContinuousScanTask();
  195 
  196         // 21.04.2004 BOOL SaveDataBase( void );
  197         // 21.04.2004 void StopMeasurement();
  198         // 21.04.2004 void ExecuteNextCmd( void );
  199 
  200 //ATTRIBUT(E)
  201 private:
  202         // wie bMeasurementActive, aber bereits beim Anfahren der Startposition == TRUE 
  203         BOOL bLineScanStarted;
  204 
  205         //! soll Scanstart vor Aufruf einer Einstellungsbox verhindern
  206         //! (Fehler 2)
  207         BOOL bScanSetupOk;
  208 
  209         TDetector *oldDetector; // nicht im Destruktor freigegeben, wird durch das Detektorsubsystem verwaltet
  210 };
  211 
  212 #endif // _S_EXTERN_H
  213 
  214 //#############################################################################
  215 // LastLine
  216 //#############################################################################
  217