Autoren: Gruppen projekt98 und projekt99
in Bearbeitung
<name> <datum>
(Jeder erkannte Fehler in den Quellfiles ist hier zu dokumentieren. Ist darüber hinaus eine 'problemlose' Fehlerbehebung möglich (ohne Seiteneffekte, ...), so kann diese am Quelltext vorgenommen werden. Sie ist dort kenntlich zu machen und außerdem hier als vorgenommene Korrektur zu erwähnen.)
Statusarten:
Überblick:
Fehler 1-29: LineScan
Fehler 30-69: AreaScan
ab Fehler 70: LineScan und AreaScan
letzte Änderung: 25.04.2003
Nr. | Datum | Status | Wer? | Beschreibung |
---|---|---|---|---|
1 | 21.11.2000 | 1ST | Diffr.-gruppe | Charakterisierung: bei laufendem StepScan ist
nach minimieren + wiederherstellen des Scanfensters das Koordinatensystem
verschwunden Ursache: ... Behebung:Aufgabe der Bildnerischen Darstellung ... |
2 | 28.05.2001 | FIX | Diffr.-gruppe | Charakterisierung: eine nachgeladene bk-Kurve
wird falsch dargestellt Ursache: Fehler in den I/O-Operationen Behebung: in m_data.cpp in SaveSecondCurve die Zeile sprintf(buf,"%.3f %.3f %.3f\n",x,y,z);ersetzen durch sprintf(buf,"%.3f %.3f %.3f",x,y,z); strcat(buf,EOL); |
3 | 21.11.2000 | 1ST FIX |
Diffr.-gruppe | Charakterisierung: in LoadMeasurementInfo in
m_scan.cpp muß Datei über 100 Byte haben, sonst Fehlerausschrift
Problem beim Laden von .bk-Dateien, die nur 2 Punkte haben Ursache: ... Behebung: Die Behebung ist nicht mehr nötig, da durch B.Buss der Header der bk-Dateien vergrößert wurde. Jetzt sind bis auf unrealistische Sonderfälle auch die bk-Dateien länger als 100 Byte. |
4 | . | . | Diffr.-gruppe | Charakterisierung: siehe jetzt Fehler 78
Ursache: Behebung: |
5 | 21.11.2000 11.05.2001 |
FEA FIX |
Diffr.-gruppe | Charakterisierung: in InitializeTask in
m_scan.cpp wird trotz Einstellung SaveOnReady=SaveContinuous=False bei
vorher geladener Kurve immer die Auswahl eines Dateinamens zum Speichern
verlangt (speichert also geladene Kurve unter diesem Namen ??)
Ursache: liegt an Variable bOldDataLoaded (wird bei nachladen von Kurve auf True gesetzt) Behebung:bOldDataLoaded aus der if-Anweisung entfernt: if ( bSaveContinuous || bSaveOnReady || bOldDataLoaded) SaveFile( SaveWithNewName ); |
6 | 21.11.2000 11.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: trotz erfolgreichem
Kontinuierlichem Speichern Ausgabe von Kurve nicht
gespeichert bei Schließen des Fensters Ursache: bFileChanged wurde nicht nach Beendigung des Scans auf False gesetzt Behebung: in SteeringReady in m_scan.cpp in der if (bSaveContinuous)- Anweisung die Zeile bFileChanged= False;hinzufügen |
7 | 09.05.2001 11.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: beim Speichern einer
geladenen Kurve wird ein Tripel zu wenig abgelegt Ursache: in LoadOldData wird letztes Tripel nicht in Kurve aufgenommen Behebung: in LoadOldData() Variable bReady = FALSE eingeführt for ( cnt = 0; ; cnt++ )ersetzt durch for ( cnt = 0; !bReady ; cnt++ )goto Ready ersetzt durch bReady = TRUE in case R_Overflow am Ende ein zusätzliches continue; einfügen Ready: Label entfernen |
8 | 21.11.2000 11.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: zur Dialogbox
Einstellungen StepScan Eingabe von erlaubt Ursache: in m_scan.cpp in TSetupScan::CanClose() werden die Werte auf diese Kriterien nicht überprüft Behebung:in TSetup::Dlg_OnInit() Impuls und Zeitbegrenzngs-Zeilen entfernen und diese unter Dlg_OnCommand unter case cm_ParamSet einfügen in CanClose() ist in den Tests das "!=" durch "<" zu ersetzen bzw. bei Schrittweite (0 != valueF) durch (mGetValue( Width ) <= valueF) ersetzen in Dlg_OnInit die Variable buf entfernen |
9 | 21.11.2000 11.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: zur Dialogbox
Einstellungen StepScan beim Wechsel der Scanachse sollte die zugehörige Einheit angezeigt werden, außerdem sollten event. überschreitungen des Scanbereichs (min, max) automatisch korrigiert werden Ursache: ... Behebung: in TSetupStepScan::Dlg_OnCommand in id_ChooseMotor: in case CBN_SELCHANGE das Kommando FORWARD_WM_COMMAND(GetHandle(),cm_ParamSet,0,0,PostMessage);einbinden |
10 | 21.11.2000 11.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: Nach dem Start eines Scans
wird immer eine Speichern unter-Box zuviel aufgerufen.
Ursache: ... Behebung: aus InititializeTask() erste SaveFile-Anweisung entfernen |
11 | 21.11.2000 11.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: Bei kont. Speichern
enthält die Datei den String [DATA] zweimal
Ursache: nutzen problematischer File-I/O-Befehle Behebung: in SaveMeasurementInfo() in m_scan.cpp folgende Anweisungen ersetzen: FILE* hFile; ==> int hFile; OFSTRUCT of; hFile=fopen(FileName,"rb+"); ==> hFile=OpenFile(FileName,&of,OF_WRITE); hFile=fopen(FileName,"w"); ==> hFile=OpenFile(FileName,&of,OF_CREATE); if(!hFile) ==> if(-1==hFile) fwrite(data,strlen(data),1,hFile); ==> _lwrite(hFile,data,strlen(data)); fclose(hFile); ==> _lclose(hFile); |
12 | 21.11.2000 | 1ST AEN |
Diffr.-gruppe | Charakterisierung: Die Funktionalität
"Continuous Scan" funktioniert nicht Ursache: nicht vollständig bzw. fehlerhaft implementiert Behebung: möglich(von Physik erwünscht) |
13 | 21.11.2000 | 1ST AEN |
Diffr.-gruppe | Charakterisierung: Bei aktivierter
dynamischer Schrittweitensteuerung sind die Angaben (verbleibende Zeit) in
der Statusleiste falsch. Ursache: Da sich die Schrittweite dynamisch aus der gemessenen Intensität ergibt und diese erst zur Meßzeit ermittelt wird ist eine Angabe der verbleibenden Meßzeit nie möglich. Behebung: Da von Physikern die dyn. Schrittweitensteuerung nicht mehr gewollt ist, ist eine Behebung wohl nicht erforderlich. |
14 | 21.11.2000 11.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: in loadOldData kein Test
auf richtige Extension Ursache: ... Behebung: in LoadOldData() hinter der Zeile FileOpen("Altes Datenfile laden ...",Filter,NewFileName,szDataPath);die folgenden Zeilen einfügen: if((strcmp(strupr(&(NewFileName[strlen(NewFileName)-3])),"CRV"))&& (strcmp(strupr(&(NewFileName[strlen(NewFileName)-2])),"BK"))&& (strcmp(strupr(&(NewFileName[strlen(NewFileName)-3])),"DTN"))) return FALSE; |
15 | 06.07.2001 13.07.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung:
Es werden keine Monitorintensitäten in der Crv-Datei angelegt, obwohl man einen Scan mit Monitordetektor
durchgeführt hat.
Ursache: Die Funktionalität StepScan mit Monitordetektor ist fehlerhaft. (in dieser Version werden keine Monitorintensitäten gemessen). Behebung: in m_Scan.cpp in InitializeTask() die Zeilen: if (bMonitorUsed) { Monitor->MeasureStop(); Monitor->SetHost( hWndChild ); Monitor->SetExposureValues( 0.8*fMaxTime, dwMaxCounts, fFailure ); }einfügen, sowie in CounterSetRequest() die Zeilen: if ( bMonitorUsed ) { // normalize signal Monitor->GetData( z ); Steering.SetNorm( z ); } else z = 0.0;durch die Zeilen: if ( bMonitorUsed ) { if ( lParam == Monitor->GetId() ) { // normalize signal Monitor->GetData( z ); Steering.SetNorm( z ); return; } } else z = 0.0;ersetzen. (Außerdem die Variable z als static deklarieren) in m_steering.cpp in TScanCmd-Konstruktor unter case ForScan: die Zeilen: bMonitorUsed = ScanW->bMonitorUsed; if(bMonitorUsed) Monitor = lpDList->DP(ScanW->Monitor->GetId());einfügen. |
16 | 21.11.2000 | 1ST | Diffr.-gruppe | Charakterisierung: Ursache: ... Behebung: ... |
17 | 21.11.2000 | 1ST | Diffr.-gruppe | Charakterisierung: Ursache: ... Behebung: ... |
30 | 21.11.2000 11.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: nach einem Areascan mit
0-dim. Detektor werden bei ChooseScan falsche Omega- und Thetawerte
angegeben Ursache: bei einem Areascan mit 0-dim. Detektor wird kein Scanreport angelegt (in m_arscan.cpp in CounterSetRequest()) Behebung:Variablen float x2,y2,z2 einführen unter case Omega2ThetaScan im else-Zweig von if (bPsdDevice) unter if (bThetaScanCompleted) folgende Zeilen einfügen: MainCurve->SetPP(0); MainCurve->PGet(x2,y2,z2); MainCurve->GetGravityCenter(intens,intens,peakpos,2); ScanReport->PAdd(z2,x2,intens);im else-Zweig in MainCurve->PAdd( y, intens, y ); das letzte y durch x ersetzt in SteeringReady() erweitert: switch (eScanType){ case Omega2ThetaScan:if (!bPsdDevice) { //! die Werte zu der letzten Scankurve in Report- //! kurve ablegen //! FIX Fehler 30,40 float x2,y2,z2,intens,peakpos; MainCurve->SetPP(0); MainCurve->PGet(x2,y2,z2); MainCurve->GetGravityCenter(intens,intens,peakpos,2); ScanReport->PAdd(z2,x2,intens); } break; default: ; } |
31 | 21.11.2000 11.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: bei Areascan mit 0-dim.
Detektor wird die letzte Kurve bei ChooseScan nicht dargestellt
Ursache: es wird in m_arscan.cpp in CounterSetRequest eine Kurve zuviel angelegt (diese enthält einen Punkt und wird deshalb nicht dargestellt) dadurch auch falsche Anzahl von Scans in der Statusleiste. Behebung: in m_steerg.cpp TCCode TAreaScanCmd::ControlStep(void) { if(nThetaPoint >= nMaxThetaPoint) if(nOmegaPoint >= nMaxOmegaPoint) { eStep = CReadyStep; bNoMeasure = TRUE; StartMove(nOmega,Steering.dStartPoint); StartMove(nTheta,dStartPointTheta); } else { AreaScanW->bThetaScanCompleted = TRUE; dOmega += dOmegaWidth; nOmegaPoint++; StartMove(nOmega,dOmega); nThetaPoint = 0; dTheta = dOmega * dMoveRelation - dThetaWindow / 2.0; StartMove(nTheta,dTheta); } else { nThetaPoint++; dTheta += dThetaWidth; StartMove(nTheta,dTheta); } return CRecall; };(beinhaltet gleichzeitig die Lösung von Fehler 54) |
32 | 21.11.2000 11.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: Bei Areascanstart
erscheint Box auch wenn keine Speicheroption gewählt wurde
Ursache: in m_arscan.cpp in InitializeTask() fehlt eine if-anweisung Behebung: if(SaveOnReady || SaveContinuous) SaveFile(SaveWithNewName); |
33 | 21.11.2000 | 1ST FIX |
Diffr.-gruppe Buss |
Charakterisierung: Bei speichern einer zuvor
geladenen Datenbasis enthält die zugehörige Scanreportdatei als
max.Intensitätswert für jeden Scan den Wert -1 Ursache: beim laden der Datenbasis wird die zugehörige Scanreportdatei nicht geladen der Scanreport (omega- und Thetawinkel zu jeder Kurve werden stattdessen aus den Headerinfos der *.psd datei ermittelt und der Intens.wert pauschal auf -1 gesetzt) Behebung: in m_arscan.cpp LoadOldData() vor ScanReport->FastPAdd(omega,theta,intens); folgende Zeilen einfügen TheCurve = lpDBase->GetCurve(cnt); TheCurve->GetGravityCenter(dummy,intens,dummy,2);wobei dummy noch als float-Variable einzuführen ist weiterhin die Zeile: intens = -1.0;einfügen |
34 | 21.11.2000 11.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: Lädt man eine Datenbasis
nach die bei einem Areascan mit einem 0-dim. Detektor und der
Speicheroption (Ständig sichern) entstanden ist, so erhält man eine
Datenbasis die #Thetaschritte mal #Omegaschritte viele (zum Teil sinnlose)
Kurven enthält. Ursache: in m_ascan.cpp in CounterSetRequset() wird bei 0-dim. Detektoren in jedem Thetaschritt die aktuelle Kurve an die Datei angehängt. sieht z.B. dann folgendermaßen aus 102 0 0 0 0 0 0 0 0 102 470 0 0 0 0 0 0 0 102 470 420 0 0 0 0 0 0 ... Behebung: in CounterSetRequest() Anweisung if (bSaveContinuous) UpdateFile();entfernen und in if (bThetaScanCompleted) noch vor lpDBase->AddCurve( MainCurve->GetPNumber() );einfügen |
35 | 21.11.2000 11.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: Beim Aufruf der
Calbrierungsdialogbox wenn gerade die kontinuierliche Spektrumdarstellung
(Position- oder Energiespektrum) aktiviert ist, kommt es zu einer
Fehlermeldung und nach verlassen dieser Box läßt sich die kont.
Spektrumanzeige nicht mehr ausschalten. Es ist somit auch kein Scanstart
mehr möglich. Ursache: in m_arscan.cpp in CalibratePsd() der Aufruf ShowSensorContinuous(0) soll bewirken, das zum einen die akt. Spektrumanzeige ausgeschalten wird und bei wiederholtem Aufruf die alte Spektrumanzeige wieder angeschaltet wird. Das Problem ist, das diese Funktion mit dem Argument 0 nicht implementiert ist. Behebung: in CalibratePsd() bCalibrationActive=TRUE; hinter die if-Anweisung if (bShowPsdContinuous)einfügen und an das Ende dieses if-Zweiges ein return eingefügt weiterhin wurden alle Ausdrücke und Variablen entfernt, die sich mit der kontinuierliche Anzeige beschäftigen |
36 | 21.11.2000 | 1ST AEN |
Diffr.-gruppe | Charakterisierung: Beim Fahren eines
Areascans mit einem Psd wird nicht über die gesamte Meßzeit gemessen,
sondern nach ca 5 sec ein aktuelles Spektrum ausgegeben(nicht
akkumuliert). Es wird auch nicht das Ergebnis nach Ablauf der Meßzeit
angezeigt. Ursache+Behebung: um die Anzeige des Ergebnisspektrums nach Ablauf der Meßzeit zu realisieren sind alle Device->SetSignalGrowUp(True); durch Device->SetSignalGrowUp(False);zu ersetzen. Um dagegen eine akkumulierte Anzeige zu erhalten, muß in Counters.cpp in TPsd:PollDevice() der Befehl ... = PsdReadOut(IntermediateRead); durch ... = PsdReadOut(AccumulationRead);ersetzt werden.(mit Detektorgruppe zu klären) Von Physik ist für die Zukunft eine direkte Auswahlmöglichkeit der Anzeigeart während des Scans gewünscht. |
37 | 21.11.2000 11.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: Es wird die Speicheroption
Bei Beenden speichern (SaveOnReady) zwar bei schließen des
Areascanfensters in der Ini-datei gespeichert, aber beim öffnen eines
neuen Fensters wird dieser Wert nirgendwo eingelesen.
Ursache: ... Behebung: im Konstruktor TAreaScanParameters in m_arscan.cpp die Zeile bSaveOnReady = GetPrivateProfileInt( Ident, "SaveOnReady", 1, GetCFile() );einfügen. |
38 | 21.11.2000 11.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: Bei Ändern des Detektors
in der Dialogbox zum einstellen der Scanparameter werden automatisch Werte
wie z.B. die Speicheroption (Save Each Scan), die Omegaschrittweite, der
Speicherpfad u.a. Dialogfelder zurückgesetzt. Dieses Zurücksetzen ist aber
nur für die Elemente unter Settings2Theta sinnvoll( wenn z.B. von einem
Psd auf 0-dim. Detektor umgeschaltet wird muß die Eingabe eines
Thetawindow möglich werden). Ursache: in m_arscan.cpp in TSetupAreaScan:Dlg_OnCommand() wird bei auswählen eines anderen Detektors cm_ParamSet gesendet und dieses Kommando das auch beim Start der Dialogbox gesendet wird um einige Dialogboxelemente zu initialisieren, hat diese Wirkung. Behebung: Die weniger sinnvollen Änderungsanweisungen für Schrittweite, Datenpfad und Relation unter cm_ParamSet entfernen und in TSetupAreaScan:Dlg_OnInit einfügen aus cm_ParamSet Speicheroptionen entfernen in CanClose Datenpfad neu setzen und Überprüfung von Relation und Omega-Schritt mit Korrektur bei falschen Werten |
39 | 21.11.2000 21.05.2001 08.08.2001 |
1ST FIX FIX |
Diffr.-gruppe & Buss | Charakterisierung: Beim Speichern eines
AreaScans, der mit einem 0-dim. Detektor gemacht wurde, bei dem aber vor
dem Abspeichern in der Einstellungsbox der Detektor auf Psd gestellt wird,
werden falsche Measurementinfos gespeichert. Ursache: Es wird vom Programm angenommen, daß die Kurven der Datenbasis mit dem aktuell eingestellten Detektor erstellt wurden. Das gleiche Problem tritt auf, wenn nach dem Laden einer Datenbasis der aktuelle Detektor geändert wird . Behebung: in m_data.h wird folgende Struktur eingeführt, um Informationen über eine aktuell im Speicher befindliche Datenbasis zu sichern: typedef struct { double dThetaWindow, dMoveRelation, dOmegaMin, dOmegaMax; double dThetaMinFirst, dThetaMaxFirst, dThetaMinLast, dThetaMaxLast; float fAngleRange, fAngleStep; BOOL bPsd; } TDisplay;weiterhin wird eine Variable VisualDB von diesem Typ als protected in der Klasse TPlotData deklariert Dafür gesorgt, daß alle Zugriffe auf die urspünglichen Variablen nun auf die VisualDB-Variablen erfolgen. |
40 | 21.11.2000 21.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: Ein nachgeladener
AreaScan, der mit einem 0-dim. Detektor gemacht wurde, wird falsch
dargestellt. Ursache: Da beim Abspeichern die Headerinformationen für Omegamin.,Omegamax., Thetamin. und Thetamax. aus dem Scanreport entnommen werden und dieser nicht existiert (siehe Fehler Nr.30), werden falsche Werte eingetragen, die dann beim Laden zu unsinnigen Darstellungen führen. Behebung:Dieser Fehler ist durch die Behebung der Fehler 30 und 39 glech mitbehoben worden. |
41 | . | . | Diffr.-gruppe | Charakterisierung: Ursache: Behebung: |
42 | 21.11.2000 11.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: in der
ChooseScan-Dialogbox wird statt dem Omegawinkel der Thetawinkel des
jeweiligen Spektrums angezeigt. Ursache: Behebung: in m_arscan.cpp in TChooseScan:Dlg_OnCommand() bei case cm_ParamSet: den Befehl sprintf(buf,"%.3f",y); durch sprintf(buf,"%.3f",x);ersetzen. |
43 | 21.11.2000 | 1ST FIX |
Diffr.-gruppe Buss |
Charakterisierung: beim ChooseScan einer
Psd-Kurve wird der Bereich vom letzten Thetaspektrum für alle anderen
Spektren benutzt. (x-Achse von Koordinatensystem)
Ursache: da bei einem Areascan mit einem Psd immer eine komplette Kurve vom Detektor kommt, in dieser aber keine korrekten Winkelangaben stehen können, muß dieser Fehler über einen Offset realisiert werden. Dies wird hier falsch gemacht. Behebung: in m_arscan.cpp in TAreaScan::GetThetaOffset() ist bei case curve: den Befehl ScanReport->SetPP(10000); durch ScanReport->SetPP(nActiveScan);ersetzen. |
44 | 21.11.2000 11.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: nach Laden von z.B.
p829fein.psd und anschließendem Start eines Scans von z.B. 0.0 nach 4.0
sind die Achsenbeschriftungen falsch. Ursache: ... Behebung: in m_arscan.cpp in InitializeTask() kurz vor Omegamotor-Initialisierung den Befehl dThetaOffset=0;einfügen |
45 | 21.11.2000 15.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: Das Nachladen von Bitmap
war scheinbar geplant , funktioniert aber nicht und führt häufig zum
Absturz. Ursache: in m_arscan.cpp LoadOldData() wird ProcessBitmapFile aus m_data.cpp aufgerufen (gehört zur Darstellung) Behebung: In LoadOldData() die Zeilen if ( !strcmp( strupr( &( buf[ strlen( buf ) - 3 ] ) ), "BMP" ) ) { strcpy( buf, "*.bmp" ); hFile = OpenFile( buf, &of, OF_READ ); retval = BSource->ProcessBitmapFile( hFile ); _lclose( hFile ); return retval; }entfernen. |
46 | 21.11.2000 15.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: Bei Datenbasis im Speicher
und Aktivierung der kont.Spektrumsanzeige und anschließendem Aufruf von
ChooseScan werden
Ursache: Dazu kommt es da bei ChooseScan MainCurve die aktuell betrachtete Kurve beinhaltet und bei Kont. Spektrumanzeige das neue Spektrum auch in Maincurve kommt. Behebung: in CallLocalAction() unter case cm_ChooseScan: folgende Zeilen einfügen : if(bShowPsdContinuous) { MessageBox(GetFocus(),szMsgLine017,szMessage, MBINFO); break; }Außerdem in ShowSensorContinuous() Variable TCurve* dummy = new TCurve(100) einführen und im if(bShowContinuous)-zweig die Zeile: MainCurve = dummy;und im else-zweig die Zeile: MainCurve = lpDBase->GetCurve(nActiveScan);einfügen. |
47 | 21.11.2000 11.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: Bei einem laufenden Scan
wird in der Statusleiste nicht die gesamte gewollte Information
ausgegeben. Ursache: in m_arscan.cpp in CounterSetRequest() wird versucht die Informationzeichenkette in eine kürzere zu kopieren und dabei geht die letzte Information(Nr. des akt. Spektrums) verloren. Behebung: in m_arscan.cpp in CounterSetRequest die arraygröße von buf und fmt erhöhen. z.B. auf 3*MaxString |
48 | 21.11.2000 11.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: Bei der Psd-Kalibrierung
werden veränderte Werte(Winkel je Kanal) übernommen, auch wenn man die Box
über "Abbrechen" verläßt. Ursache: in m_arscan.cpp in TCalibrate::Dlg_OnCommand() unter case cm_CounterSet: wird mit Device->SetAngleStep(val_f); der geänderte Wert gleich an den Detektor übergeben. Behebung:in TCalibrate::Dlg_OnInit() dStepWidth = Device->GetAngleStep()eingefügt in Dlg_OnCommand() in case ParamSet und cm_CounterSet Device->GetAngleStep() durch dStepWidth ersetzt in Dlg_OnCommand() in case cm_CounterSet die Zeile Device->SetAngleStep(val_f);ersetzt durch dStepWidth = val_fin CanClose() Device->SetAngleStep(dStepWidth); vor erster if-Anweisung einfügen in m_xscan.h in TCalibrate das Attribut dStepWidth von long in float ändern |
49 | 21.11.2000 11.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: beim kalibrieren wird die
Motorschrittweite auf einen anderen Wert gesetzt.
Ursache: ... Behebung: in m_arscan.cpp in TCalibrate::LeaveDialog() die alte Motorschrittweite wieder zurücksetzen. (mSetValue(Width,dOldMotorWidth)) |
50 | 21.11.2000 11.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: zur
Areascan-Einstellungsdialogbox: folgende offensichlich fehlerhaften Eingaben werden nicht abgefangen:
if ( (valueF < mlGetValue( nOmega, MaxDistance ))&& (valueF > mlGetValue( nOmega, MinDistance ))) Scan->dOmegaMax = valueF; else { Scan->dOmegaMax = ( mlGetValue( nOmega, MaxDistance ) - mlGetValue( nOmega, Width ) ); sprintf( buf, mGetDF(), Scan->dOmegaMax ); SetDlgItemText( GetHandle(), id_AngleMax, buf ); bFailure = TRUE;sowie für OmegaMin entsprechend eingefügt obiger Quellcode enthält Behebung von Fehler 52: ThetaWindow-Werte durch OmegaMax-Werte ersetzt bei Überprüfung von Theta-Schritt,-window, Meßzeit sowie Impulsbegrenzung "!=" durch "<" ersetzt Test auf OmegaMin < OmegaMax eingefügt if (Scan->dOmegaMin >= Scan->dOmegaMax) { Scan->dOmegaMax = ( mlGetValue( nOmega, MaxDistance ) - mlGetValue( nOmega, Width ) ); sprintf( buf, mGetDF(), Scan->dOmegaMax ); SetDlgItemText( GetHandle(), id_AngleMax, buf ); Scan->dOmegaMin = ( mlGetValue( nOmega, MinDistance ) + mlGetValue( nOmega, Width ) ); sprintf( buf, mGetDF(), Scan->dOmegaMin ); SetDlgItemText( GetHandle(), id_AngleMin, buf ); bFailure = TRUE; } |
51 | 21.11.2000 11.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: zur
Areascan-Einstellungsdialogbox: folgende offensichlich fehlerhaften Eingaben werden nicht abgefangen:
|
52 | 21.11.2000 11.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: Wird in der
AreaScan-Einstellungsbox für Omegamax ein zu großer Wert eingegeben und
wird versucht diese Box über OK zu verlassen, so wird statt Omegamax auf
den max. erlaubten Wert zu setzen (ähnlich wie bei Omegamin) der Wert für
Thetawindow aktualisiert.(was eigentlich keinen Sinn macht)
Ursache: in zugehöriger CanClose() fehlerhaft impl. Behebung: siehe Behebung Fehler 50 |
53 | 21.11.2000 11.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: Wenn man in der
Einstellungsbox Thetaachse fixieren einstellt, so ist diese Einstellung
nach erneutem Aufruf der Box wieder verworfen. Ursache: die Zeilen if(Scan->bPsdDevice) CheckDlgButton(GetHandle(),id_FixThetaAxis,FALSE); else CheckDlgButton(GetHandle(),id_FixThetaAxis,TRUE);in m_arscan.cpp in TSetupAreaScan::Dlg_OnInit() sorgen dafür , daß dieser Button immer unchecked ist, da ja ein Standardscan nur mit Psd möglich ist. Behebung:in TSetupAreaScan::Dlg_OnInit() den unter Ursache angegebenen Quelltext entfernen und den if-Zweig unter Dlg_OnCommand in case cm_ParamSet in case Omega2ThetaScan noch vor if (Scan->bPsdDevice) und den else-Zweig in case StandardScan einfügen |
54 | 21.11.2000 11.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: Nach Beendigung eines
Areascans mit einem 0-dim. Detektor ist die Thetamotorposition nicht
dieselbe wie vor dem Start des Scans. Ursache: in m_steerg.cpp in TAreaScanCmd::ControlStep() wird nach dem Befehl auf Startpos. zurückzufahren der Befehl gegeben den thetamotor auf eine neue Position zu bewegen. Behebung:siehe Behebung Fehler 31 in m_steerg.cpp in TAreaScanCmd::ControlStep() if ( nThetaPoint > nMaxThetaPoint ) ersetzen durch else if ( nThetaPoint > nMaxThetaPoint ) |
55 | 21.11.2000 11.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: In der
Areascan-Einstellungsbox ist trotz eingestelltem 0-dim. Detektor das
auswählen des Absorbers möglich obwohl dies nicht implementiert ist(ist
auch nicht sinnvoll) Ursache: ... Behebung: in m_arscan.cpp in TSetupAreaScan::Dlg_OnCommand in case cm_ParamSet in case Omega2ThetaScan in der if-Anweisung if (Scan->bPsdDevice) die Zeile EnableWindow(GetDlgItem(hwnd,id_AbsorberUsed),TRUE);und im else Zweig die Zeilen EnableWindow(GetDlgItem(hwnd,id_AbsorberUsed),FALSE); CheckDlgButton(hwnd,id_AbsorberUsed,FALSE);ergänzen sowie unter case StandardScan die Zeile EnableWindow(GetDlgItem(hwnd,id_AbsorberUsed),TRUE);ebenfalls ergänzen |
56 | 21.11.2000 | 1ST AEN |
Diffr.-gruppe | Charakterisierung: Bei External Synchr.
werden keine Dateien der Spektren angelegt. Ursache: Die Funktionalität External Synchronized ist unvollständig und fehlerhaft implementiert. Sie ist in der vorliegenden Version nicht funktionsfähig. Behebung: ... |
57 | 21.11.2000 21.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: Nach Einstellen eines
Reportmodus der ungleich INTEGRAL ist,(im Ini-File Report=....) kommt es
zu Fehlermeldungen, das Areascanfenster läßt sich teilweise nicht öffnen,
falsche Werte werden angezeigt bzw. abgespeichert ,....
Ursache: Nur der Reportmodus INTEGRAL ist für alle Funktionalitäten vollständig implementiert. Alle anderen Modis sind zwar über das Ini-File einstellbar aber nur im Ansatz implementiert . Behebung:In der m_arscan.cpp im Konstruktor von TAreaScanParameters die folgenden Zeilen auskommentieren: GetPrivateProfileString( Ident, "Report", "Integral", buf, MaxString, GetCFile() ); strupr( buf ); while ( 1 ) { ... }Mit den Physikern bleibt zu klären, ob diese Zeilen ganz zu entfernen sind oder ob diese Report-Modi vollständig zu implementieren sind. |
58 | 21.11.2000 11.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: Trotz der Fehlermeldung
bei der Calibrierung des Psd wenn die Kanäle für linken und rechten Peak
gleich sind, werden beide Dialogbutton disabled (Vorgang wiederholen ist
erst nach Verlassen und erneutem Aufruf der Dialogbox möglich).
Ursache: Behebung: Nach der Fehlermeldung sollten alle Parameter zurückgesetzt werden. in Dlg_OnCommand unter case cm_CounterSet hinter die Fehlermeldung "Vorgang bitte wiederholen !" jeweils alle Werte bLongMove, LeftPeak.Valid, RightPeak.Valid, bGetRightPek, bGetLeftPeak, bMoveActive auf FALSE setzen und Buttons wieder aktivieren |
59 | 11.05.2001 | 1ST FIX |
Diffr.-gruppe | Charakterisierung: das Einstellen von
Impulsbegrenzung macht bei einem Psd keinen Sinn, ist aber zugelassen
Ursache: Behebung: in TSetupAreaScan::Dlg_OnCommand unter cm_ParamSet unter case Omega2ThetaScan unter if (bPsdDevice) EnableWindow( GetDlgItem( hwnd, id_MaxCounts ), FALSE);im else Zweig EnableWindow( GetDlgItem( hwnd, id_MaxCounts ), TRUE);und unter case StandardScan EnableWindow( GetDlgItem( hwnd, id_MaxCounts ), FALSE);einfügen | 60 | 14.11.2001 | 1ST | T.Panzner |
Charakterisierung:
Während eines Areascans (SLD) bleibt der Thetamotor plötzlich (noch vor dem erreichen der Endposition)
stehen. Die Position an welcher der Motor stehen bleibt ist immer eine andere. Der Motor bleibt auch nicht jedesmal
stehen (jedoch häufig bei Scans, die über den Zeitraum von mehreren Tagen laufen). Die Motoren Omega und Theta
lassen sich im Dialog manuelle Justage auch nicht mehr bewegen (Mauszeiger ist blinkende Sanduhr). Einzige Abhilfe ist
Neustart des gesamten Programmes. Teil der Beschreibung von T.Panzner: manchmal lassen sich die Motoren nicht im Fenster Manuelle Justage bewegen. Der Mauszeiger wird zur blinkenden Sanduhr aber die Position des Motors verändert sich nich. Einzige Abhilfe : Neustart des gesamten Programms. Dummerweise ist das gestern Nacht sogar während eines Areascans passiert! Das Programm hat mitten im Scan gestoppt, da es anscheinend den nächsten 2Theta-wert nicht anfahren konnte. Ein viel dringenderes Problem ist das des Stehenbleibens eines Motors während eines Scans, weil die nächste Position nicht angefahren werden kann. Wir haben es inzwischen 3x versucht bei der derzeitigen Probe einen Scan über einen symetrischen Reflex zu fahren und immer bleibt das System irgendwann stehen. Und zwar immer an einer anderen Stelle. Ich schicke euch nachher noch eine Mail mit der Hardware.ini . Also wir haben folgende Werte für den Areascan eingestellt: aktuelle Positionen : omega= 29.7894 2Theta= 61.225 Es werden KEINE Offset verwendet. Areascan : Omega,min : -0.6 Omega,max : 0.6 Omega,step: 0.004 2Theta,min: -1.2 2Theta,step: 0.03 Relation: 2 Window: 4.2 Time/step: 1s Der Scan wird mit einem 0-dim. Detektor gefahren. Das Stehenbleiben erfolgt immer bei einem 2Theta-scan, d.h das Programm hat irgendwann Probleme die 2Theta-Achse zu bewegen. Allerdings tritt das Problem NICHT immer an der selben Stelle im Areascan auf. Merkwürdigerweise lief ein Testscan, den ich zwischen den 3Versuchen durchführte ohne Probleme zu Ende. Dabei waren folgende Werte modifiziert: Omega,step: 0,01 2Theta-window: 2.1 Ursache: Dieser Fehler ließ sich bisher von uns mithilfe der simulierten Hardware nicht reproduzieren. Einen Fehler durch die Diffr.-Erweiterungen möchten wir ausschließen, da dieses Problem (laut T.Panzner) auch in der ursprünglichen Programmversion auftrat (allerdings nicht so häufig). Wir vermuten, daß die Ursache bei der Implementation der Motorschnittstellenkarte (C832) liegt, da dieser Fehler (laut T.Panzner) auch im Dialog der manuellen Justage auftritt ohne das vorher ein Scan gefahren wurde. Da die manuelle Justage von der Diff./Refl.- Komponente unabhängig ist, ist der Fehler unserer Meinung nach auf eine Komponente, die von der Diffr./Refl. und der man. Justage benutzt wird, zurückzuführen (Motorkomponente). Da dieser Fehler scheinbar nur bei den Motoren Omega und Theta aufzutritt, könnte die Ursache bei C832 liegen (Omega und Theta sind einzige Motoren an dieser Karte laut ini-file des Laborrechners). Behebung: |
61 | 17.11.2001 | 1ST | T.Panzner | Charakterisierung:
Die Kalibrieren des Psd liefert neuerdings einen negativen Winkel/Kanal-Wert. Der Vorgang wurde durchgeführt wie immer.
Der Wert scheint dem Betrag nach korrekt zu sein (ist nur negativ).
Ursache: Der Fehler ließ sich mit simulierter Hardware nicht reproduzieren. Könnte eventuelle an den Motoren oder Hardware.ini liegen. Zu dieser Vermutung sind wir gelangt, da die Art der Berechnung bei der Psd-kalibrierung immer noch die ursprüngliche ist(diese hat früher scheinbar richtig funktioniert). Rechenvorschrift: Winkel/Kanal = (Left.Winkel-Right.Winkel)/(Right.Kanal-Left.Kanal)*(umrechnungsfaktor) wobei Left.Winkel die Thetaposition bezeichnet bei welcher der Peak am linken Fensterrand lag und Left.Kanal die Nummer des Kanals des Psd angibt, auf der dieser Peak lag (analog Right->rechts). Der umrechnungsfaktor ist eine konstante, die von der Thetawinkeleinheit abhänig ist. Bsp. Grad->3600;Minute->60;... Da der Ablauf der Kalibrierung von uns nicht geändert wurde, vermuten wir das vielleicht der Thetamotor die inversen Winkel geliefert hat. Das würde das Ergebniss und könnte eventuell auch den Fehler62 erklären. Behebung: ... |
62 | 14.11.2001 | 1ST | T.Panzner | Charakterisierung:(von T.Panzner)
Nach einem Areascan in den letzten Tagen trat
folgendes Problem auf:
Vor dem Scan waren die Werte für Omega und 2Theta :
29.6° bzw. 61° . Während des Areascan wurden diese
Werte vom Program relativ null gesetzt. Nach dem Scan
wurden diese Werte aber auf -29.6° beziehungsweise
-61° (!!!) gesetzt. Aus irgendeinem Grund wurden die
Werte mit -1 multipliziert!
Abhilfe war hier nur durch das setzen der richtigen
Werte in der Hardware.ini für die Encoderpositionen zu
erreichen.
Ursache: Der Fehler ließ sich mit simulierter Hardware nicht reproduzieren. Könnte eventuelle an den Motoren liegen.(siehe Fehler61) Behebung: ... |
63 | 14.11.2001 27.11.2001 |
1ST FIX |
T.Panzner Diffr.-gruppe |
Charakterisierung:
Bei einem Areascan mit 0-dimensionalem Detektor (SLD) ist es nicht möglich eine korrekte RL-Bitmap zu erhalten(nur in Sonderfällen).
Ursache: Beim Sld-scan wird automatisch (ohne zu fragen) beim Starten des Scans die aktuelle Position relativ Null gesetzt. Dies hat zur Folge, das alle Winkelwerte die während des Scans anfallen auch nur relative Werte sind. In der RL-Bitmap sind aber die absoluten Winkelwerte für eine korrekte Darstellung nötig. Behebung: In der Datei m_arscan.cpp in der Methode InitializeTask() das automatische Setzen der relativen Null entfernen. Diese Art der Behebung wurde mit T.Panzner abgesprochen. |
64 | 20.02.2002 | 1ST | hanisch | Charakterisierung:
Dialog "PSD Kalibrierung" lässt sich nur durch
zweimaliges Anklicken des Buttons "Beenden" schließen.
Ursache: Die Ereignisse "Beenden gedrückt" und "Eingabe eines Wertes für Winkel2Theta mit abschließendem Enter", werden über die selbe Methode TCalibratePsd::OnIDOK() behandelt. Die Dialogbox schließt erst nach zweimaligen Aufruf dieser Methode, ohne zwischenzeitlicher Wertänderung bei "Winkel2Theta". Behebung: ... |
65 | 24.06.2003 | 1ST; AEN |
sacklows; kullmann, reinecke |
Charakterisierung: Bei relativen Winkeln für Omega und Theta wurde die Meldung 'Omega ist relativ! Relativen Winkel auslassen?' ausgegeben. Sinnvoller ist ''Omega ist relativ! Offset berücksichtigen?'. Behebung: Die Meldungen (szMsgLine006 und szMsgLine007) wurden umdefiniert; die Ja/Nein-Bedeutung der Schaltflächen 'Yes'/ 'No' wurde getauscht. |
66 | 24.06.2003 | 1ST; FIX |
sacklows; kullmann, reinecke |
Charakterisierung: Bei relativen Winkeln für Theta wurde in der psd-/ Ergebnisdatei und im Koordinatensystem absolute Werte angezeigt. Ursache: Fasst bei jeder Scanart wurde beim Auslesen des Theta-Winkels das Offset subtrahiert. Damit waren die Angaben wieder absolut, trotz relativem Winkel.. Behebung: Der einzige wirkliche Schreibzugriff (in Methode TAreaScan::InitializeTask) schreibt nun 0.0 in dThetaOffset (unabhängig davon, ob ein Offset definiert ist oder nicht). |
67 | 24.06.2003 | 1ST | sacklows | Charakterisierung: Die in der psd-/ Ergebnisdatei und im Koordinatensystem angezeigten Messwerte des Braun-PSD sind um den Faktor 16.777.216 (also 2 exp 24) zu groß. Behebung: ... |
70 | 21.11.2000 11.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: Wenn man eine Kurve bzw.
einen Datensätz im speicher hat und anschließend einen neuen scan bzw.
areascan startet (mit der option Kontinuierlich speichern) so werden in
der Datei beide Kurven bzw. datensätze abgelegt . Dies kann dazu führen,
daß beim Nachladen einer solchen Datei völlig falsche Kurven entstehen.
Bei Areascan kann es sogar zum Absturz kommen. Ursache: Beim eingeben des neuen Dateinamen für den neuen Scan wird die aktuell im speicher vorhandene Kurve bzw. Datenbasis in diese Datei gespeichert und während des Scans werden immer nur die neuen Punkte bzw. Kurven an die vorhandenen Daten der Datei angehängt. Behebung: In m_scan.cpp und m_arscan.cpp in der jeweiligen InitializeTask() kurz vor den Aufruf der SaveFile()-Funktion den Befehl MainCurce->New() bzw. lpDBase->New() einfügen. |
71 | 21.11.2000 11.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: Eine gleichzeitige Auswahl
von Bei beenden speichern und Kontinuierlich sichern ist zwar in der
dialogbox möglich aber es wird immer nur eine datei angelegt. (es gibt
zwei möglichkeiten für eine Lösung zum einen können 2 Dateien angelegt
werden oder wie von den Physikern gewollt ist ein "exclusiv oder" schon
für die dialogbox ) Ursache: Behebung: (exclusiv oder) in m_scan.cpp bzw. m_arscan.cpp in der TSetupStepScan::Dlg_OnCommand() bzw. TSetupAreaScan::Dlg_OnCommand() jeweils die Zeilen: case id_SaveContinuous: CheckDlgButton(GetHandle(),id_SaveOnReady,FALSE); break; case id_SaveOnReady: CheckDlgButton(GetHandle(),id_SaveContinuous,FALSE); break; |
72 | 21.11.2000 21.05.2001 06.07.2001 |
1ST FIX FIX2 |
Diffr.-gruppe | Charakterisierung: Wird ein laufender Scan
bzw. Areascan unterbrochen und nun die Motorposition z.B. per manueller
Justage geändert, und wird nun der Scan fortgesetzt so führt das zu falschen Werten
(=> falsche Darstellung). Ursache: Behebung: bei Interrupt die aktuelle Position speichern und bei Scan fortsetzen erst auf diese Position zurückfahren. Dazu: in m_steerg.h die neue Variablen bRestart in der Klasse TCmd als protected deklarieren in m_steerg.cpp in TSteering::ToggleInterrupt() in den if ( bInterrupt ) - Zweig einfügen: TheCmd->bRestart=TRUE;und switch(TheCmd->GetId()){ case Scan: case AreaScan: mlSetAxis(nMotor= nOldMotor);//! FIX Fehler 79 DeviceRequest(); break; default: Device->MeasureStart(); };in TScanCmd und TAreaScanCmd konstruktor jeweils die Zeile |
73 | 21.11.2000 21.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: Es sind nicht von allen
Dialogboxen, Fehlermeldungen, Infodialogen und Statusleistentexten die
engl. und die deutsche Version vorfügbar. Von einigen sind nur deutsche
(z.B. Dialogboxen) , andere (z.B. Fehlermeldungen) sind wiederum nur in
englischer Sprache vorhanden. Ursache: Behebung: die Message_Liste in m_arscan.cpp erweitern, so daß zu jeder Meldung jeweils eine deutsche und eine englische Meldung existiert eine solche Liste in m_scan.cpp einführen und die Meldungen aus den Quellen dort hinzufügen sowie ebenfalls fehlende deutsche bzw. englische Kommentare ergänzen zu den Dialogboxen ChooseScan und CalibratePsd die entsprechende englisch-sprachige Dialogbox in den Resourcen hinzufügen und in den Konstruktoren der jeweiligen Klasse den Aufruf der Dialogbox von der gewählten Sprache abhängig machen, z.B beim Choose-Scan-Dialog: #ifdef GermanVersion TChooseScan::TChooseScan( TAreaScan* ascan ) : TModelessDlg( "ChooseScan" ) #else TChooseScan::TChooseScan( TAreaScan* ascan ) : TModelessDlg( "ChooseScanEng" ) #endif |
74 | 15.01.2001 21.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: Es ist möglich einen Scan
zu starten, auch wenn z.B. kein Thetamotor verfügbar ist.(bei
Omega2Thetamodus) Ursache: ungenügende Tests der verfügbaren Hardware Behebung:in m_arscan.cpp in InitializeTask() in case cm_SetupAreaScan einfügen: if (!mlIsAxisValid (Omega))|| ((!mlIsAxisValid(Theta)&&!dlIsDeviceValid(PsdDevice)))) { MessageBox(GetFocus(),"Hardware ist nicht vollst&aauml;ndig verfügbar!",szMsgFailure,MBINFO); break; }wenn kein Thetamotor verügbar ist, ist nur ein StandardScan möglich, dazu in TSetupAreaScan::Dlg_OnInit() einfügen: if(!mlIsAxisValid(Theta)) Scan->eScanType=StandardScan;wenn kein Thetamotor verfügbar ist, kann nur ein Psd-Detektor ausgewählt werden in TSetupAreaScan::Dlg_OnCommand() ist unter id_ChooseDevice und case CBN_SELCHANGE die Zeile Scan->eScanType = Omega2ThetaScan;zu ersetzen durch: if(!mlIsAxisValid(Theta) && !Scan->bPsdDevice) { Scan->SetDevice( dlGetIdByName(PsdDevice)); Device= lpDList->DP(dlGetIdByName(PsdDevice)); ComboBox_SelectString( hDeviceList, 0, Device->Characteristic ); } else if( Scan->bPsdDevice) Scan->eScanType = StandardScan; else Scan->eScanType = Omega2ThetaScan;die Checkbox Fix Theta Axis ist immer "Checked", wenn kein Thetamotor verfügbar ist unter case id_FixThetaAxis ist dazu noch der folgende Eintrag zu ergänzen: if (!mlIsAxisValid(Theta)) CheckDlgButton(GetHandle(),id_FixThetaAxis,TRUE); |
75 | 27.04.2001 11.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: Eine Fehler in der
Programmierung in TScanCmd:ControlStep() kann dazu führen, das der
zulässige Winkelbereich überschritten wird. Ursache: in TScanCmd:ControlStep() if (Steering.GetDistance()<= dArgumentMax) ... (aufgrund der nicht exakten Motorposition(z.B: 6,00002 statt 6,00000 kommt es selten dazu) Behebung: <= durch < ersetzen |
76 | 21.11.2000 11.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: die Meldung, daß der Scan
gespeichert wurde erfolgt nur bei Speicheroption Bei Beenden
speichern , aber nicht bei der Option Kontinuierlich Speichern
Ursache: in SteeringReady Behebung: zusätzlichen Ausgabetext für die deutsche und die englische Version einfügen |
77 | 21.11.2000 11.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: Bei LineScan und AreaScan
kann ein Scan gestartet werden, bevor der Einstellungsdialog einmal
aufgerufen wurde. Ursache: in m_scan.cpp in der Funktion rButtonDown() sind if-ausdrücke falsch miteinander verknüpft Behebung: bScanSetupOk als globale Variable entfernt und als private-Attribut in die Klassen TScan und TAreaScan eingefügt im jeweiligen Konstruktor auf FALSE setzen in den Methoden InitializeDlg() auf TRUE setzen in rButtonDown muß es heißen if ((bMeasurementActive&& !bInterrupt)|| !bScanSetupOK) ... |
78 | 21.11.2000 11.05.2001 |
1ST FIX |
Diffr.-gruppe | Charakterisierung: bei laufenden Scan mit
Option Kontinuierlich Speichern darf nicht Speichern unter
aufgerufen werden Ursache: ... Behebung: in m_main.cpp in UpdateMenu() eingefügt: if (bMeasurementActive) { EnableMenuItem(hMenu,cm_Save,MF_GRAYED); EnableMenuItem(hMenu,cm_SaveAs,MF_GRAYED); } else { EnableMenuItem(hMenu,cm_Save,MF_ENABLED); EnableMenuItem(hMenu,cm_SaveAs,MF_ENABLED); }weiterhin in SteeringReady() sowie in TMDIWindow::New() jeweils UpdateMenu() einfügen |
79 | 06.07.2001 06.07.2001 |
1ST FIX |
Diffr.-gruppe |
Charakterisierung:
Wenn man einen laufenden StepScan oder AreaScan unterbricht und anschließend per man. Justage einen Motor bewegt, so
wird nach dem Fortsetzen des Scans statt mit dem ursprünglichen der zuletzt ausgewählte weiterbewegt.
Ursache: Behebung: teilweise siehe Behebung Fehler 72 in Steering.ToggleInterrupt() den Wert von nMotor(Motor des Scans) sichern und bei fortsetzung den ursprünglichen Motor wieder setzen |
80 | 11.07.2001 30.07.2001 |
1ST FIX |
Frau Richter Diffr.-gruppe |
Charakterisierung:
Nachdem ein Scan durchgeführt wurde, kann man die Kurvendaten nicht speichern.
Ursache: Die Bezeichnung der Menüpunkte im LineScanfenster- bzw. AreaScanfenstermenü sind irreführend. Es kann vermutet werden, das man über den Menüpunkt "Scan"->"speichern" die gerade gemessene und aktuell dargestellte Kurve abspeichern kann. In Wirklichkeit kann man über diesen Menüpunkt nur fixierte Scans speichern. Behebung: Durch Ausgrauen und Umbenennen der Menüpunkte in Abhängigkeit davon, ob eine Kurve fixiert ist oder nicht werden die Untermenüpunkte von "Scan" aktiviert bzw. deaktiviert sowie der Menüpunkt "Scan" in "fixierten Scan" umbenannt. in m_scan.cpp in TScan::rButtonDown() if (1>SecondCurve->GetPNumber()) { EnableMenuItem( TheMenu, cm_FreezeCurve, MF_ENABLED ); EnableMenuItem( TheMenu, cm_SaveSecondCurve, MF_GRAYED ); EnableMenuItem( TheMenu, cm_KillSecondCurve, MF_GRAYED ); ModifyMenu( TheMenu, 5, MF_STRING|MF_BYPOSITION,5,"Scan" ); } else { EnableMenuItem( TheMenu, cm_FreezeCurve, MF_GRAYED ); EnableMenuItem( TheMenu, cm_SaveSecondCurve, MF_ENABLED ); EnableMenuItem( TheMenu, cm_KillSecondCurve, MF_ENABLED ); ModifyMenu( TheMenu, 5, MF_STRING|MF_BYPOSITION,5,"fixierten Scan" ); }in m_arscan.cpp ähnlich in m_data.cpp gleich noch kleinen fehler mitbehoben neue TPlotData::FreezeCurve void TPlotData::FreezeCurve(void) //! speichert Objektzustand von MainCurve in SecondCurve { if(1> MainCurve->GetPNumber()) return ; *SecondCurve = *MainCurve; }; |
81 | 21.11.2001 | 1ST | Diffr.-gruppe |
Charakterisierung:
Wird während eines laufenden Linescans das Areascanfenster geschlossen(oder umgekehrt), so
bricht der laufende Scan ohne eine Meldung ab.
Ursache: Im Destruktor von TAreaScan ( bzw. TScan) bewirken folgende Befehle Device->MeasureStop(); Device->SetHost( NULL );das keine Werte mehr beim Fenster des laufenden Scans ankommen. Behebung: Diese Befehle entfernen (eventuell eine Überprüfung ob gerade ein Scan läuft einfügen). |
82 | 23.04.2003 | 1ST FIX |
sacklows kullmann, reinecker |
Charakterisierung: Wenn man das
LineScan-Fensters aufruft und schließt; das AreaScan-Fenster aufruft und
schließt; das LineScan-Fenster erneut aufruft und schließt und abschließend
das AreaScan-Fenster erneut aufzurufen versucht, stützt das Programm ab. Ursache: Das Speichermanagment, dynamisch verwaltete Speicherstrukturen werden mehrfach versucht freizugeben. Behebung: Speichermanagment komplett analysiert, überprüft und korrigiert. |
83 | 23.04.2003 | 1ST FIX |
sacklows kullmann, reinecker |
Charakterisierung: Wenn man das
LineScan-Fensters öfter aufruft und schließt, stützt das Programm sporadisch
ab. Ursache: Das Speichermanagment, dynamisch verwaltete Speicherstrukturen werden mehrfach versucht freizugeben. Behebung: Speichermanagment komplett analysiert, überprüft und korrigiert. |
84 | 21.11.2000 | 1ST | Diffr.-gruppe | Charakterisierung: Ursache: ... Behebung: ... |