int TSteering::StartCmdExecution( TCmdTag Cmd )
{
// Function tested; Last changes 950814
if (TheCmd)
{
delete TheCmd;
TheCmd = NULL;
}
Device->MeasureStop();
Device->SetHost( hControlWnd );
fIntensityNorm = 0.0;
nFailureId = 0;
bInterrupted = FALSE;
switch (Cmd.Id)
{
case GotoPeak:
TheCmd = (TGotoPeakCmd*)new TGotoPeakCmd( Cmd );
break;
case GotoIntensity:
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)
{
bSteeringActive = TRUE;
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()