public void Exec(int _tick) { if (IsComplete) { return; } bool was = false; if (IW.Cross) { for (BankZoneDataA z = bank.GetNextZoneCross(); z != null; z = bank.GetNextZoneCross()) { was = true; RK.ST.result.Cross.AddZoneA(bank.CrossData, z); } } if (IW.Line) { for (BankZoneDataA z = bank.GetNextZoneLine(); z != null; z = bank.GetNextZoneLine()) { was = true; RK.ST.result.Line.AddZoneA(bank.LineData, z); } } if (IW.Thick) { for (BankZoneThick z = bank.GetNextZoneThick(); z != null; z = bank.GetNextZoneThick()) { was = true; RK.ST.result.Thick.MZone.Add(z); } } if (IW.SG) { BankZoneData z = bank.GetNextZoneSG(); if (z != null) { was = true; string lret; RK.ST.result.SG.sgState = SGSet.SaveToDb(bank.SGData, z.size, out lret); if (lret != null) { prsl(1, lret); } } } if (was) { Result result = RK.ST.result; result.Sum.Compute(result.Cross, result.Line, result.Thick); List <EClass> L = result.Sum.MClass; for (int i = 0; i < L.Count; i++) { bank.AddResultZone(i, Classer.ToBool(L[i])); } Send("DRAW"); } }
public void AddZoneACalibr(double[] _data, BankZoneDataA _zA) { Zone z = new Zone(EUnit.Line); MZone.Add(z); z.VZoneLength = _zA.zone_length; z.MSensor = new Sensor[_zA.length]; for (int i = 0; i < _zA.length; i++) { z.MSensor[i] = AddZoneData(_data, _zA.MZones[i], i, _zA.length); } z.Calc(null); pr("AddZone: " + z.ToString(MZone.Count() - 1)); }
public void AddZoneA(double[] _data, BankZoneDataA _zA) { Zone z = new Zone(Tp); MZone.Add(z); z.VZoneLength = _zA.zone_length; z.MSensor = new Sensor[_zA.length]; for (int i = 0; i < _zA.length; i++) { z.MSensor[i] = AddZoneData(_data, _zA.MZones[i], i, _zA.length); } CalcXStart(MZone.Count() - 1, false); CalcXStart(MZone.Count() - 1, true); z.Calc(MZone.Count() == 1 ? null : MZone[MZone.Count() - 2]); pr("AddZone: " + z.ToString(MZone.Count() - 1)); }
public void Exec(int _tick) { if (IsComplete) { return; } if (IsError) { return; } foreach (IJob job in J) { job.Exec(_tick); if (job.IsError) { LastError = job.LastError; Finish(); return; } } switch (Step) { case 0: Send("CLEAR"); Send("SETRESULT"); jAlarm.Add(SL.iCC, true); if (!ParAll.ST.Defect.Some.TestWithMagnit) { Step = 101; break; } prst("Ждем магнитные поля "); if (jRectifierThCross != null) { jRectifierThCross.Start(0); } if (jRectifierThLine != null) { jRectifierThLine.Start(0); } startTick = _tick; Step = 100; break; case 100: if (jRectifierThCross != null) { if (_tick - startTick > ParAll.ST.Defect.Cross.Rectifiers.MagnitWait * 1000) { LastError = "Не дождались магнитных полей поперечного"; break; } UITH uith = jRectifierThCross.GetUITH(); if (uith == null || !uith.IsOk) { break; } } if (jRectifierThLine != null) { if (_tick - startTick > ParAll.ST.Defect.Line.Rectifiers.MagnitWait * 1000) { LastError = "Не дождались магнитных полей продольного"; break; } UITH uith = jRectifierThLine.GetUITH(); if (uith == null || !uith.IsOk) { break; } } Step = 101; break; case 101: startTick = Environment.TickCount; bank.Start(startTick); jTransportTest.Start(startTick); if (jCollectCross != null) { jCollectCross.Start(startTick); } if (jCollectLine != null) { jCollectLine.Start(startTick); } prst("Ждем завершения Банка"); Step = 1; break; case 1: bool was = false; BankZoneDataA z = bank.GetNextZoneCross(); if (z != null) { was = true; RK.ST.result.Cross.AddZoneA(bank.CrossData, z); } z = bank.GetNextZoneLine(); if (z != null) { was = true; RK.ST.result.Line.AddZoneA(bank.LineData, z); } if (was) { RK.ST.result.Sum.Compute(RK.ST.result.Cross, RK.ST.result.Line, null); List <EClass> L = RK.ST.result.Sum.MClass; for (int i = 0; i < L.Count; i++) { bank.AddResultZone(i, Classer.ToBool(L[i])); } Send("DRAW"); if (was) { break; } } for (; ;) { if (bank.GetNextResultZone() == null) { break; } } if (!bank.IsGaveZones) { break; } bank.NoWait = true; for (; ;) { if (bank.GetNextResultZone() == null) { break; } } RK.ST.result.Compute(); List <EClass> LL = RK.ST.result.Sum.MClass; for (int i = 0; i < LL.Count; i++) { bank.AddResultZone(i, Classer.ToBool(LL[i])); } Send("DRAW"); if (bank.Complete != null) { pr(bank.Complete); break; } Step = 1000; break; case 1000: IsComplete = true; prst("работа выполнена"); Finish(); break; default: LastError = "Неизвестный шаг"; break; } if (IsError) { Finish(); } }