Example #1
0
        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");
            }
        }
Example #2
0
        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));
        }
Example #3
0
        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));
        }
Example #4
0
        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();
            }
        }