int TSteering::StartCmdExecution( TCmdTag Cmd )
{
// Function tested; Last changes 950814
if (TheCmd)
{
// eventuell vorhandenes vorhergehendes Befehls-Objekt zerstören
// (Destruktor wird gerufen)
delete TheCmd;
TheCmd = NULL;
}
// Messtimer des Detektors stoppen (s. counters.cpp)
Device->MeasureStop();
// Aufruf bewirkt "hControlWnd = hControlWnd" (!?)
Device->SetHost( hControlWnd );
fIntensityNorm = 0.0;
nFailureId = 0;
bInterrupted = FALSE;
switch (Cmd.Id)
{
case GotoPeak:
// neues Objekt vom Typ TGotoPeakCmd erstellen
// TGotoPeakCmd ist vom TCmd abgeleitet
TheCmd = (TGotoPeakCmd*)new TGotoPeakCmd( Cmd );
break;
case GotoIntensity:
// s.o.
TheCmd = (TGotoIntensityCmd*)new TGotoIntensityCmd( Cmd );
break;
case ChooseAxis:
TheCmd = (TChooseAxisCmd*)new TChooseAxisCmd( Cmd );
break;
case ChooseDevice:
TheCmd = (TChooseDeviceCmd*)new TChooseDeviceCmd( Cmd );
break;
case SetupScan:
TheCmd = (TSetupScanCmd*)new TSetupScanCmd( Cmd );
break;
case SetWidth:
TheCmd = (TSetWidthCmd*)new TSetWidthCmd( Cmd );
break;
case Scan:
TheCmd = (TScanCmd*)new TScanCmd( Cmd );
break;
case ControlFlank:
TheCmd = (TControlFlankCmd*)new TControlFlankCmd( Cmd );
break;
case ShowValue:
TheCmd = (TShowValueCmd*)new TShowValueCmd( Cmd );
break;
case SetFileName:
TheCmd = (TSetFileNameCmd*)new TSetFileNameCmd( Cmd );
break;
case SaveData:
TheCmd = (TSaveDataCmd*)new TSaveDataCmd( Cmd );
break;
case Calculate:
TheCmd = (TCalculateCmd*)new TCalculateCmd( Cmd );
break;
case LoadPoint:
TheCmd = (TLoadPointCmd*)new TLoadPointCmd( Cmd );
break;
case MoveToPoint:
TheCmd = (TMoveToPointCmd*)new TMoveToPointCmd( Cmd );
break;
case AreaScan:
TheCmd = (TAreaScanCmd*)new TAreaScanCmd( Cmd );
break;
default:
return FALSE;
}
if (!TheCmd->nFailureId)
{
// Kein Fehler passiert
// Steuerung ist aktiv
bSteeringActive = TRUE;
// Wecktimer starten
StartTimer( 0 );
return TRUE;
}
return FALSE;
};
Zusätzlich existiert die folgende Funktion, die ihre Parameter in eine TCmdTag-Struktur übernimmt und danach die obige Funktion damit aufruft.
int TSteering::StartCmdExecution( TCmdId cmdid, int p1, int p2, LPSTR p3,
HWND host )
{
TCmdTag ct;
hHostWindow = host;
ct.Id = cmdid;
ct.P1 = (TCParam) p1;
ct.P2 = (TCParam) p2;
strcpy( ct.P3, p3 );
return StartCmdExecution( ct );
}
Zurück zu StartMacroExecution()