================================================================================ Changing : Datei-Verwaltung Date : 6.1.96 Modul : m_main.cpp Function : BOOL TMDIWindow::SaveFile(int ask); Changed : Das Speichern mit der jeweiligen Erweiterung wird erzwungen. Tested : No ================================================================================ Changing : Datei-Verwaltung Date : 6.1.96 Modul : m_ascan.cpp Function(s) : BOOL TAreaScan::SaveFile(int ask); Comment : Doppelte Abfrage für das Überschreiben wird beseitigt. Die Datei- Verwaltung wird in die TMDIWindow-Klasse verlagert. Tested : Yes ================================================================================ Changing : Datei-Verwaltung Date : 6.1.96 Modul : m_scan.cpp Function(s) : BOOL TScan::SaveFile(int ask); Comment : Doppelte Abfrage für das Überschreiben wird beseitigt. Die Datei- Verwaltung wird in die TMDIWindow-Klasse verlagert. Tested : Yes ================================================================================ Changing : Datei-Verwaltung Date : 6.1.96 Modul : m_main.cpp Function : BOOL TMDIWindow::New(void); Comment : Neue Funktion, um Klassenprinzip zu wahren und Test zu vereinfachen. Alle abgeleiteten Klassen rufen beit return die jeweilige Basisklas- se auf. Ein Test erfolgt über den Menü-Punkt Datei->Neu. Es müssen die Daten und der File-Name gelöscht werden. Weiterhin sollte das Fenster neu gezeichnet werden. Tested : yes ================================================================================ Changing : Datei-Verwaltung Date : 6.1.96 Modul : m_ascan.cpp Function : BOOL TAreaScan::SaveMeasurementInfo(BOOL UpdateHeader); Comment : Es werden die Variablen FirstColumn und LastColumn in den Header mit aufgenommen. Tested : Yes ================================================================================ ================================================================================ =================== Notizen vor dem 31.12.95 =================================== ================================================================================ ================================================================================ Problem: Nach einem erfolgreich ausgeführten Scan wird vor dem Speichern nicht vor dem Überschreiben alter Meßdaten nicht gewarnt. Problem: Wenn der Kollimator aktiviert ist, wird nach einer HWB-Messung der Kollimator zwar angezeig, aber Beugung fein bleibt aktiv. Problem: In allen Dialogen müssen die Shortcut-Buchstaben eindeutig sein. Weiterhin ist zu beachten, daß auch zur Laufzeit Dialoge verändert werden. Zum Beispiel wird aus "&Halfwith" --> "&Measure stop". Problem: Der Zähler (Generic) liefert bei bestimmten Intensitäten falsche Ergebnisse. Das tritt auf, wenn die Abbruchbedingungen Zeit und Impulse etwa zur gleichen Zeit zutreffen. Problem: Die Dialoge müssen auf die entsprechenden Bildschirm auflösungen angepaßt werden. Liste aller Motor-Spezifischen Funktionen außerhalb der Motors.DLL Es müssen alle Verweise auf Motoren von Pointern auf Id's umgesetzt werden Es müssen in der Datei m_layer.h Modul Main Zu TMList lpMList->SetAxis(int) mlSetAxis() lpMList->InquireReferencePointDlg(99); mlInquireReferencePointDlg() lpMList->PositionControlDlg(); mlPositionControlDlg() lpMList->SetParametersDlg(); mlSetParametersDlg() lpMList->SetAngleDefault(); mlSetAngleDefault() lpMList->SaveModuleSettings(); mlSaveModuleSettings() zu TMotor lpMList->MP()->OptimizingDlg(); mOptimizingDlg() Anmerkungen - Bei C++ Kompatibilität sind alle Optionen deaktiviert. - Die Einstellungen über Schablone "Standard" und über Optionen/IDE sind äquivalent. Hier werden Pfade und Einstellungen getroffen, die alle Knoten betreffen. Einbinden von Debug-Informationen und Aktivieren von Optimierungen werden im EXE- bzw. DLL-Knoten festgelegt. - IDE bricht bei unendlicher Schleife und CAD mit Windows ab - Speichermodell: large - Wortausrichtung sollte wegen schnelleren Zugriff "WORD" sein. - Dynamische Linkbibliotheken müssen ohne Exception-Handling auskommen (BC 4.0), wenn sie auch von Programmen genutzt werden sollen, die mit anderen Compilern erstellt wurden. Das schließt wahrscheinlich auch die früheren Borland C-Compiler ein. - Konstante Strings nicht im Code-Segment speichern - in der Datei windows.h wurden die Makros für LOWORD und HIWORD modifiziert - Bei Einbindung von Assembler ist auf mögliche Interrupt-Unterbrechung zu achten. - Um ein Meßgerät benutzen zu können, muß es erst über den Dialog TCommonDevParam angezeigt werden. - mit cm_StopAll kann auf eine Unterbrechung mit Esc reagiert werden - Im Allgemeinen werden die Meldungen WM_KEYDOWN mit der MDI-Client-Fenster- funktion verarbeitet und beziehen sich damit auf das aktivierte Fenster. - Für Topographie wird als Regelbereich ein symmetrisches Fenster in Prozent vom Startwert angegeben. - Für den PSD gilt entweder das Counter-Fenster (TCounterWindow) oder das Diffraktometrie-Fenster (TGlanceIncidence) als Display. Entsprechend wird die Variable hDisplayWnd belegt. - Mittwoch 23.6.94 Gespräch mit Herrn Dietrich (IPP) Zi. 241 Tel. 149 + timeGetTime (MMSystem) verwenden, Möglichkeit im Millisekundenbereich Aufrufe auszuführen mit timeSetEvent + Timer immer an das betreffende Fenster binden + Umsteigen auf ObjectWindows bringt keine Geschwindigkeitseinbußen + Schreiben in MemDC für Darstellung + MessageQueue vergrößern - Für eine Psd-Kurve ist Punkt 0 stets der Kanal, Punkt 1 die Intensität und Punkt 2 stets der Winkel bezüglich 2Theta - Sind für ein Meßgerät hWndDisplay und hWndControl gesetzt, so wird nur an das Fenster mit hWndControl eine Meldung geschickt. Das Kontrolfenster sorgt dann für das Weiterleiten einer entsprechenden Meldung an das darstellende Fenster. - Für AreaScan's wird jedesmal ein Report-File erstellt. Wert 0: Omega Wert 1: Absorber Position bzw. OverflowChannel Wert 2: 2Theta - Vom Psd-Interface wird nur ein Teil der 4096 Kanäle ausgelesen; Dabei wird dem Kanal MaxChannel der Kanal 0 zugewiesen; - Für das Koordinatensystem der Anzeige hat stets eine X- und eine Y-Achse. Die Intensitäten sind stets die y-Werte von TCurve. Benutzen der Library Commdlg.dll Beispiel für Filter: char szTemp[] = "All Files (*.*)\0*.*\0Text Files (*.txt)\0*.txt\0"; Note the initialization method of the above string. The GetOpenFileName() function expects to find a string in the OPENFILENAME structure that has a '\0' terminator between strings and an extra '\0' that terminates the entire filter data set. Using the technique shown below will fail because "X" is really 'X' '\0' '\0' '\0' in memory. When the GetOpenFileName() function scans szTemp it will stop after finding the extra trailing '\0' characters. char szTemp[][4] = { "X", "*.*", "ABC", "*.*", "" }; The string should be "X\0*.*\0ABC\0*.*\0". Remember that in C or C++ a quoted string is automatically terminated with a '\0' character so char "X\0"; would result in 'X' '\0' '\0' which provides the extra '\0' that GetOpenFileName() needs to see in order to terminate the scan of the string. Just 'char ch "X";' would result in 'X' '\0' and GetOpenFileName() would wander off in memory until it lucked into a '\0' '\0' character sequence. Some Windows structures require the size of themselves in an effort to provide backward compatibility with future versions of Windows. If the lStructSize member is not set the call to GetOpenFileName() will fail. Ideen: Modul Device: Frage: Wird mit First- und Last-Channel stets aus einer festen Anzahl von Kanälen des Psd ausgewählt? Die Funktion GetData(); sollte nur bei Verarbeitung der Meldung cm_CounterSet aufgerufen werden, um die Konsistenz der Daten zu gewährleisten. Modul Topographie: Schnittstelle über die Aufrufe der Dialoge TTopographyExecute(); und TTopographyParam(); Zugehörige Dateien sind rtk_topo.cpp und rtk_topo.h Modul Ablaufsteuerung: Schnittstelle über die Aufrufe der Dialoge TTopographyExecute(); und TTopographyParam(); Zugehörige Dateien sind rtk_ctrl.cpp und rtk_ctrl.h Modul Bildverarbeitung: Schnittstelle über die Aufrufe der Dialoge TTopographyExecute(); und TTopographyParam(); Zugehörige Dateien sind rtk_bv.cpp und rtk_bv.h Modul Diffraktometrie: Schnittstelle über die Aufrufe der Dialoge TTopographyExecute(); und TTopographyParam(); Zugehörige Dateien sind rtk_topo.cpp und rtk_topo.h Modul Motorsteuerung: Schnittstelle über die Aufrufe der Dialoge TTopographyExecute(); und TTopographyParam(); Zugehörige Dateien sind rtk_mot.cpp und rtk_mot.h