예제 #1
0
        void LoadSettings(TypeSize _p)
        {
            DefCL    dlc = new DefCL(Tp);
            L_L502Ch lch = dlc.LCh;

            borders      = new double[2];
            bordersIn    = new double[2];
            filterPars   = null;
            filterParsIn = null;
            Gains        = new double[lch.Count];
            for (int i_s = 0; i_s < Sensors; i_s++)
            {
                Gains[i_s] = lch[i_s].Gain;
            }

            borders[0]     = dlc.Border1;
            borders[1]     = dlc.Border2;
            bordersIn[0]   = dlc.Border1In;
            bordersIn[1]   = dlc.Border2In;
            DeadZoneStart  = dlc.DeadZoneStart;
            DeadZoneFinish = dlc.DeadZoneFinish;
            filterPars     = dlc.Filter.Clone();
            IsIn           = dlc.IsFinterIn;
            filterParsIn   = dlc.FilterIn.Clone();

            LenghtStart       = dlc.Tails.LenghtStart;
            LenghtEnd         = dlc.Tails.LenghtEnd;
            MultStart         = dlc.Tails.MultStart;
            MultEnd           = dlc.Tails.MultEnd;
            SampleRate        = dlc.L502.FrequencyPerChannel;
            ZoneSize          = ParAll.ST.ZoneSize;
            WidthMedianFilter = ParAll.ST.Defect.Some.WidthMedianFilter;
            IsMedianFilter    = ParAll.ST.Defect.Some.IsMedianFilter;
        }
예제 #2
0
        public void SaveSettings(TypeSize _p)
        {
            DefCL    dcl = new DefCL(Tp);
            L_L502Ch lch = dcl.LCh;

            if (Sensors != lch.Count)
            {
                throw (new Exception("RDPars.SaveSettings: Не соответствует количество датчиков в текущем типоразмере"));
            }
            for (int i_s = 0; i_s < Sensors; i_s++)
            {
                lch[i_s].Gain = Gains[i_s];
            }
            dcl.Border1        = borders[0];
            dcl.Border2        = borders[1];
            dcl.Border1In      = bordersIn[0];
            dcl.Border2In      = bordersIn[1];
            dcl.DeadZoneStart  = DeadZoneStart;
            dcl.DeadZoneFinish = DeadZoneFinish;

            dcl.Filter = filterPars.Clone();
            if (filterParsIn != null)
            {
                dcl.FilterIn = filterParsIn.Clone();
            }

            dcl.Tails.LenghtStart                   = LenghtStart;
            dcl.Tails.LenghtEnd                     = LenghtEnd;
            dcl.Tails.MultStart                     = MultStart;
            dcl.Tails.MultEnd                       = MultEnd;
            dcl.L502.FrequencyPerChannel            = SampleRate;
            ParAll.ST.ZoneSize                      = ZoneSize;
            ParAll.ST.Defect.Some.WidthMedianFilter = WidthMedianFilter;
            ParAll.ST.Defect.Some.IsMedianFilter    = IsMedianFilter;
        }
예제 #3
0
파일: Zone.cs 프로젝트: andreyV512/rag
        public void Calibrate(int _sensor, bool[] _mb, double[] _gains)
        {
            double   level = MSensor[_sensor].GetMaxLevel() * _gains[_sensor];
            L_L502Ch L     = type == EUnit.Cross ? ParAll.CTS.Cross.L502Chs : ParAll.CTS.Line.L502Chs;

            for (int i = 0; i < L.Count; i++)
            {
                if (!_mb[i])
                {
                    continue;
                }
                if (i == _sensor)
                {
                    continue;
                }
                _gains[i] = Math.Round(level / MSensor[i].GetMaxLevel(), 2);
            }
            CalcClassGain(_gains);
        }