Hauptseite | Klassenhierarchie | Auflistung der Klassen | Auflistung der Dateien | Klassen-Elemente | Datei-Elemente | Zusätzliche Informationen

DATAVISA.H

gehe zur Dokumentation dieser Datei
00001 //############################################################################# 00002 // // 00003 // DATAVISA.H // 00004 // Subsystem: Utilities - Datenbank (Diffraktometrie/ Reflektometrie) // 00005 // Benutzung durch andere Subsysteme erforderlich: JA // 00006 // Implementation: M_CURVE.CPP, M_DATA.CPP // 00007 // // 00008 //############################################################################# 00009 00010 #ifndef __DATAVISA_H 00011 #define __DATAVISA_H 00012 00013 #include "internls\evrythng.h" // TScaleType 00014 00015 00016 //############################################################################## 00017 // globale Deklarationen 00018 //############################################################################## 00019 00020 // gibt an nach welchem Kriterium die Kurve sortiert ist 00021 /* enum TOrder 00022 { 00023 X_Sorted = 1, Y_Sorted = 2, Z_Sorted = 3, Incoming = 4 00024 }; 00025 00026 // Fehlertype bei DatenBasis 00027 enum TCFault 00028 { 00029 // max. Anzahl speicherbarer Kurven ist erreicht 00030 MaxScanExceeded = 1, 00031 // kein ausreich. Speicherplatz verfuegbar 00032 NoMemory = 2 00033 }; 00034 */ 00035 00036 // Struktur eines Elements der Kurve 00037 struct CPoint 00038 { 00039 float Pt[3]; 00040 BOOL Valid; 00041 }; 00042 00043 const int MAXCURVE = 5000; // maximal speicherbare Kurven 00044 // const int GROWUNIT = 50; // Punkte, um die die Kurve erweitert wird 00045 00046 00047 //############################################################################## 00048 // TCurve 00049 //############################################################################## 00050 00051 // Klasse zum Verwalten einer Folge von Messwerten und zugehoeriger Parametern 00052 class _CURVECLASS TCurve 00053 { 00054 public: 00055 // Konstruktor 00056 TCurve( void ); 00057 ~TCurve( void ); 00058 00059 // haengt einen Punkt(Tripel) an Kurve an 00060 // false wenn Fehler, sonst true 00061 BOOL PAdd( float &x, float &y, float &z ); 00062 00063 // liest ein Wertetripel der Kurve aus 00064 // false wenn nicht moeglich, sonst true 00065 BOOL PGet( float &x, float &y, float &z ); 00066 00067 // wie PAdd (um schneller hintereinander Punkte anzuhaengen) 00068 // false bei Fehler, sonst true 00069 // BOOL FastPAdd( float &x, float &y, float &z ); 00070 00071 // wie PGet (fuer schnellen Zugriff) 00072 // Rueckkehrcode false bei Fehler, 00073 // z.B. Kurve hat keine Punkte, Speicherfehler, usw, 00074 // sonst true 00075 // BOOL FastPGet( float &x, float &y, float &z ); 00076 00077 // 'oeffnet' Kurve, macht Zugriffe auf Punkte erst moeglich 00078 // Rueckkehrcode false bei Fehler sonst true 00079 // BOOL FastOpen( void ); 00080 00081 // 'schliesst' Kurve, kein Zugriff auf die Punkte moeglich 00082 // Rueckkehrcode immer true 00083 // BOOL FastClose( void ); 00084 00085 // geht in der Kurve einen Punkt zurueck (Index zurück setzen) 00086 void BackStep( void ); 00087 00088 // setzt Kurve auf Initialwerte zurueck 00089 // Rueckkehrcode gibt an, ob neuer Speicher alloziert wurde 00090 BOOL New( void ); 00091 00092 // markiert alle Punkte der Kurve als ungueltig, deren Y-wert <= (Level*100) 00093 // Prozent von maximaler intensitaet der Kurve sind 00094 // Rueckkehrcode false bei fehler sonst true 00095 // (nur von GetPeakProperties benutzt) 00096 BOOL DeleteUnderGround( float Level ); 00097 00098 // setzt achse, nach welcher die Kurve geordnet ist 00099 // (x,y,z oder messreihenf.) 00100 // void SetOrder( TOrder order ) { m_eOrder = order; }; 00101 00102 // setzt internen zeiger auf den (pos). Wert der Kurve falls moeglich 00103 // bei unzulaess. pos auf 1. bzw. letzten Wert 00104 // Rueckkehrcode false wenn Kurve keine Punkte hat sonst true 00105 BOOL SetPP( int pos= 0 ); 00106 BOOL SetPPLast(); // auf letzten Eintrag setzen 00107 00108 // liefert die Anzahl der Punkte der Kurve als Rueckkehrcode 00109 int GetPNumber( void ) { return m_PointList.GetCount(); }; 00110 00111 // berechnet eine durch den letzen Param. bestimmte Fkt 00112 // (max. Intensitaet/Schwerpunkt) 00113 // 1.Param(ausg.) x enthaelt nach aufruf je nach funktion berechneten Wert 00114 // 2.Param(ausg.) y enthaelt nach aufruf je nach funktion berechneten Wert 00115 // 3.Param(ausg.) z enthaelt nach aufruf je nach funktion berechneten Wert 00116 // 4.Param(eing.) func ermoeglicht verschieden funktionen aufzurufen 00117 // (nur 2 implementiert) 00118 // func=2 dann x,y,z tripel ermitteln, fuer das y (die 00119 // Intensitaet) maximal ist 00120 // func<>2 dann x,y,z Schwerpunkt der Kurve ermitteln 00121 // (wird scheinbar nicht benutzt) 00122 // Rueckkehrcode false wenn Fehler sonst true 00123 BOOL GetGravityCenter( float&, float&, float& ); 00124 00125 // liefert den in der Kurve vorhandenen dem Param 'search' naehsten X-wert 00126 // (den indexwert) als Rueckkehrcode zurueck und den zugehoerigen Y-Wert 00127 // sowie den abstand zwischen X-wert und search 00128 // 1.param (eingabe) search in Kurve soll nach einem X-punkt gesucht 00129 // werden, der zu search den geringsten abstand besitzt 00130 // 2.Param (ausgabe) delta enthaelt nach aufruf den Abstand von search 00131 // zum naehsten X-wert 00132 // 3.Param (ausgabe) value enthaelt nach aufruf den zum naehsten X-wert 00133 // gehoerigen Y-wert(Intensitaet) 00134 // Rueckkehrcode ist der Index fuer den gilt X[Index] ist naehster X-wert 00135 // zu search, wenn search im inneren des x-bereichs der Kurve ist sonst 00136 // (wenn ausserhalb dieses bereiches oder bei fehler) den Wert 0 00137 // voraussetzung ist, dass die X-werte der kurve von klein nach gross 00138 // sortiert sind 00139 int GetValueByValue( float, float&, float& ); 00140 00141 // Zuweisungsoperator fuer Kurven 00142 // alle x,y,z,v werte sowie max und min werden kopiert 00143 TCurve& operator=( const TCurve& ); 00144 00145 float GetMax( int Idx ) { return m_MaxList.GetAt(Idx); }; 00146 float GetMin( int Idx ) { return m_MinList.GetAt(Idx); }; 00147 00148 // markiert alle Punkte der Kurve als ungueltig, 00149 // laesst nur lokal. Maxima uebrig 00150 // Rueckkehrcode false bei Fehler, sonst true 00151 // 07.04.2004 ToterCode da nicht benutzt und scheinbar nicht fertig impl. 00152 // BOOL DeleteFlanks(); 00153 00154 // speichert alle Punkte der Kurve in Datei (Parameter) ab 00155 // Rueckkehrcode false bei fehler, sonst true 00156 // 07.04.2004 ToterCode da nicht benutzt 00157 // BOOL Save( LPCSTR ); 00158 00159 // speichert Kurve in Datei (1.Parameter), 2. Param. gibt Art der 00160 // Speicherung an (nur eine Option impl., diese speichert y-werte), 00161 // 3. Param. nicht benutzt 00162 // 07.04.2004 ToterCode da nicht benutzt 00163 // BOOL Save( LPCSTR, int, int ); 00164 00165 // 07.04.2004 ToterCode da nicht impl. 00166 // void SetLastPoint( void ); 00167 00168 // addiert val zum Y-wert des akt. Punktes der Kurve 00169 // Rueckkehrcode false bei Fehler, sonst true 00170 // 07.04.2004 ToterCode, da nicht benutzt 00171 // BOOL ValueAdd( float &val ); 00172 00173 // liefert akt. Pos. des internen Zeiger der Kurve als Rueckkehrcode 00174 // 07.04.2004 ToterCode da nicht benutzt 00175 // int GetPP( void ) { return ActualIdx; }; 00176 00177 // 07.04.2004 ToterCode da nicht benutzt 00178 // BOOL GetReflection( int order, LPCPoint ); 00179 00180 // liefert die Breite des 1.Bereiches, in dem alle y-werte des Tripels 00181 // die Haelfte des Intensitaetbereichs(Y(max)-Y(min)) uebersteigen, sowie 00182 // aus diesem Bereich x-wert,y-wert des Tripels fuer das Y-wert 00183 // (Intensitaet) maximal ist 00184 // 1. bereich bedeutet der am weitesten links liegende Bereich der obige 00185 // Eigenschaften erfuellt 00186 // 1.Param(ausgabe) hw enthaelt nach aufruf breite des Bereichs 00187 // 2.Param(ausgabe) pos enthaelt nach aufruf X-wert an der max. y-wert 00188 // (intensitaet) in diesem Bereich 00189 // 3.Param(ausgabe) intens enthaelt nach aufruf max.y-wert(intensitaet) 00190 // in diesem Bereich 00191 // Rueckkehrcode false wenn fehler sonst true 00192 // anmerkung: dieser Bereich darf nicht bis ans ende der Kurve reichen 00193 // d.h. kurve darf nicht monoton wachsend sein (sonst return false) 00194 // 07.04.2004 ToterCode da nicht benutzt 00195 // BOOL GetPeakProperties( float&, float&, float& ); 00196 00197 private: 00198 00199 // enthalten die min und max Werte der 3 Achsen [0=x,1=y,2=z] 00200 TFloatList m_MinList; 00201 TFloatList m_MaxList; 00202 00203 TPointList m_PointList; 00204 00205 int m_ActualIdx; // indiziert den aktuellen Eintrag 00206 BOOL m_bEnd; // Ende-Erkennung 00207 00208 // HGLOBAL m_hMemX; // handle auf globales speicherobjekt (x-werte) 00209 00210 // Ordnung der Kurve X_sorted, Y_sorted, Z_sorted oder Incoming 00211 // TOrder m_eOrder; 00212 00213 // zeigt an ob kurve gerade im speicher fix. und somit zugriffe moeglich 00214 // BOOL m_bStreamOpen; 00215 00216 // int m_MaxPointIdx; // indiziert den letzten Eintrag 00217 // int m_MaxMemIdx; // indiziert den maximal moeglichen Eintrag 00218 // CPoint FAR *m_lpPX; // Zeiger auf Datenfeld von X 00219 }; 00220 00221 typedef TCurve FAR *LPCurve; 00222 00223 //############################################################################## 00224 // TDataBase 00225 //############################################################################## 00226 00227 // Klasse zum Verwalten von mehreren Kurven (Areascan) 00228 class _CURVECLASS TDataBase : protected TIndList { 00229 public: 00230 TDataBase( void ); 00231 ~TDataBase( void ); 00232 00233 // setzt internen Kurvenindex auf 0 00234 void Reset( void ) { m_ActualIdx = 0; }; 00235 00236 // liefert die Kurve als Rueckkehrcode deren Nummer gleich dem 00237 // uebergebenen Param. ist 00238 TCurve *GetCurve( int ); 00239 TCurve *GetLastCurve(); // letzte Curve 00240 00241 // liefert als Rueckkehrcode akt. Kurvenindex 00242 int GetCurveIdx( void ) { return m_ActualIdx; }; 00243 00244 // setzt Kurvenindex auf angegebenen Wert (Parameter) 00245 BOOL SetCurveIdx( int ); 00246 00247 // Rueckkehrcode = Anzahl der Kurven 00248 int GetCNumber( void ) { 00249 return GetCount(); 00250 }; 00251 00252 // liefert als Rueckkehrcode die Scanreportcurve 00253 TCurve *GetScanReport( void ) { return m_ScanReport; }; 00254 00255 // fuegt eine Kurve der angegebenen Groesse zur Datenbasis hinzu 00256 // Rueckkehrcode true wenn erfolgreich 00257 BOOL AddCurve( void ); 00258 00259 // loescht alle Kurven der Datenbasis und setzt Indizes zurueck 00260 BOOL New( void ); 00261 00262 // liefert als Rueckkehrcode die Anzahl maximal speicherbarer Kurven pro Datenbasis 00263 int GetMaxScanNumber( void ) 00264 { 00265 return MAXCURVE - 1; // eigentlich unbegrenzt, soll aber sicherstellen, dass im AreaScan nicht nahezu unendliche viele Schritte durchgeführt werden 00266 }; 00267 00268 // liefert als Rueckkehrcode den zuletzt aufgetretenen Fehler 00269 //24.03.2004 TCFault GetFault( void ) { return m_eFault; }; 00270 00271 // neu akk 00272 // entfernt die letzte Kurve in der Datenbasis 00273 // Rueckkehrcode FALSE wenn Datenbasis leer 00274 // sonst TRUE 00275 BOOL DelCurve( void); 00276 00277 private: 00278 // zuletzt aufgetretenen Fehler 00279 //24.03.2004 TCFault m_eFault; 00280 int m_ActualIdx; // indiziert die aktuelle Kurve 00281 00282 // Kurve enthaelt Werte zu jeder Kurve der Datenbasis 00283 // Omegawinkel,Thetawinkel(absoluten winkel) und je nach modus einen 00284 // dritten wert (monitorintens., absorberpos.,integrale intens. ,...) 00285 TCurve *m_ScanReport; 00286 }; 00287 00288 typedef TDataBase FAR * LPDataBase; 00289 00290 #endif 00291 //DATAVISA_H 00292 // __LastLine__

Erzeugt am Sat Nov 13 12:48:05 2004 für XCTL32 von doxygen 1.3.7