public int WaitMsForMU(int mu, bool isEDW = false) { //TODO make not just 600 dr var ms = (int)((double)mu / 600 * 60 * 1000) + 2500; //add extra 2.5 sec if (isEDW) { var angle = AccessoryHelper.GetEDWOptions(_session.MachineState.Accessory).Angle; switch (angle) { //These are custom factors to increase time, so we don't move on too quickly case ServiceModeTableOptions.EDWAngle._10: ms = (int)(ms * 1.40); break; case ServiceModeTableOptions.EDWAngle._15: ms = (int)(ms * 1.40); break; case ServiceModeTableOptions.EDWAngle._20: ms = (int)(ms * 1.30); break; case ServiceModeTableOptions.EDWAngle._25: ms = (int)(ms * 1.30); break; case ServiceModeTableOptions.EDWAngle._30: ms = (int)(ms * 1.30); break; case ServiceModeTableOptions.EDWAngle._45: ms = (int)(ms * 1.30); break; case ServiceModeTableOptions.EDWAngle._60: ms = (int)(ms * 1.30); break; } } return(ms); }
public void SetMachineState(MachineState ms) { var current = ServiceModeSession.Instance.MachineState; var changingToFixed = !AccessoryHelper.IsEDW(ms.Accessory) && AccessoryHelper.IsEDW(_session.MachineState.Accessory); //Was EDW now is not if (machineStatesSet == 0 || changingToFixed) { BeamManager.SetFixed(); } BeamManager.SetEnergy(ms.Energy); //Do mechanical operations first //Do Gantry Operations _session.MotionManager.SetGantryAutomatic(ms.CollimatorRot, ms.X1, ms.X2, ms.Y1, ms.Y2, ms.GantryRot); if (machineStatesSet == 0) { Thread.Sleep(5000); } //Do Couch Operations _session.MotionManager.SetCouchAutomatic(ms.CouchVert, ms.CouchLng, ms.CouchLat, ms.CouchRot); if (machineStatesSet == 0) { Thread.Sleep(5000); } if (AccessoryHelper.IsEDW(ms.Accessory)) { var edwOptions = AccessoryHelper.GetEDWOptions(ms.Accessory); edwOptions.Y1 = ms.Y1; edwOptions.Y2 = ms.Y2; _session.MachineState.Accessory = ms.Accessory; BeamManager.SetEDW(edwOptions); } else if (AccessoryHelper.IsElectronCone(ms.Accessory)) { var coneOption = AccessoryHelper.GetElectronCone(ms.Accessory); BeamManager.SetCone(coneOption); _session.MachineState.Accessory = ms.Accessory; } BeamManager.SetTime(ms.Time); BeamManager.SetMU(ms.MU); machineStatesSet++; }