public static MeasurementResults CalculateAverageIV(MeasurementResults measuredResults, int offsetMeasurement = 0)
            {
                MeasurementResults calculatedResults = new MeasurementResults
                {
                    Voltage_V = new double[1],
                    Current_A = new double[1],
                    Power_W   = new double[1]
                };

                if (offsetMeasurement > 0 && measuredResults.Voltage_V.Length > 1)
                {
                    int      length        = measuredResults.Voltage_V.Length - offsetMeasurement;
                    double[] offsetVoltage = new double[length], offsetCurrent = new double[length];

                    Array.Copy(measuredResults.Voltage_V, offsetMeasurement, offsetVoltage, 0, length);
                    Array.Copy(measuredResults.Current_A, offsetMeasurement, offsetCurrent, 0, length);

                    calculatedResults.Voltage_V[0] = offsetVoltage.Average();
                    calculatedResults.Current_A[0] = offsetCurrent.Average();
                }
                else
                {
                    calculatedResults.Voltage_V[0] = measuredResults.Voltage_V.Average();
                    calculatedResults.Current_A[0] = measuredResults.Current_A.Average();
                }
                calculatedResults.Power_W[0] = measuredResults.Current_A[0] * measuredResults.Voltage_V[0];
                return(calculatedResults);
            }
        public override ShortMeasurementResults Handle(GetShortMeasResultsByIdAppOperationOptions options, IAppOperationContext operationContext)
        {
            ShortMeasurementResults ShortMeas = new ShortMeasurementResults();

            Logger.Trace(this, options, operationContext);
            //lock (GlobalInit.LST_MeasurementResults)
            {
                if (options.MeasResultsId != null)
                {
                    if (options.MeasResultsId.MeasTaskId != null)
                    {
                        MeasurementResults msrt = GlobalInit.LST_MeasurementResults.Find(t => t.Id.MeasSdrResultsId == options.MeasResultsId.MeasSdrResultsId && t.Id.MeasTaskId.Value == options.MeasResultsId.MeasTaskId.Value && t.Id.SubMeasTaskId == options.MeasResultsId.SubMeasTaskId && t.Id.SubMeasTaskStationId == options.MeasResultsId.SubMeasTaskStationId);
                        if (msrt != null)
                        {
                            ShortMeasurementResults ShMsrt = new ShortMeasurementResults {
                                DataRank = msrt.DataRank, Id = msrt.Id, Number = msrt.N.Value, Status = msrt.Status, TimeMeas = msrt.TimeMeas, TypeMeasurements = msrt.TypeMeasurements
                            };
                            if (msrt.LocationSensorMeasurement != null)
                            {
                                if (msrt.LocationSensorMeasurement.Count() > 0)
                                {
                                    ShMsrt.CurrentLat = msrt.LocationSensorMeasurement[msrt.LocationSensorMeasurement.Count() - 1].Lat;
                                    ShMsrt.CurrentLon = msrt.LocationSensorMeasurement[msrt.LocationSensorMeasurement.Count() - 1].Lon;
                                }
                            }
                            ShortMeas = ShMsrt;
                        }
                    }
                }
            }
            return(ShortMeas);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Метод, выполняющий
        /// </summary>
        /// <param name="sdr_t"></param>
        /// <returns></returns>
        public static MeasurementResults GenerateMeasResults(MeasSdrResults sdr_t)
        {
            MeasurementResults res = new MeasurementResults();

            if (sdr_t != null)
            {
                res = sdr_t.CreateMeasurementResults();
            }
            return(res);
        }
        public static MeasurementResults MeasureChannel(NIScope scope, string channelName = "0")
        {
            MeasurementResults results = new MeasurementResults();

            scope.Measurement.Initiate();
            AnalogWaveformCollection <double> resultWaveform = new AnalogWaveformCollection <double>();

            resultWaveform         = scope.Channels[channelName].Measurement.FetchDouble(PrecisionTimeSpan.FromSeconds(5), -1, null);
            results.ResultsTrace   = resultWaveform[0].GetRawData();
            results.AverageValue_V = scope.Channels[channelName].Measurement.FetchScalarMeasurement(PrecisionTimeSpan.FromSeconds(5),
                                                                                                    ScopeScalarMeasurementType.VoltageAverage)[0];
            scope.Measurement.Abort();

            return(results);
        }
        static void Main()
        {
            NIScope myScope = new NIScope("5154", false, false);

            ScopeConfiguration       scopeConfig = GetDefaultScopeConfiguration();
            MeasurementConfiguration measConfig  = GetDefaultMeasurementConfiguration();

            ConfigureScope(myScope, scopeConfig, "0");
            ConfigureMeasurement(myScope, measConfig, "0");

            MeasurementResults myResults = MeasureChannel(myScope, "0");

            Console.WriteLine(myResults.AverageValue_V);
            Console.ReadKey();
            myScope.Close();
        }
        static void Main()
        {
            string    channelNames = "0";
            NIDCPower dcPower      = new NIDCPower("4139", channelNames, false);

            // Configure instrument settings
            SupplyConfiguration supplyConfig = SupplyConfiguration.GetDefault();

            supplyConfig.OutputFunction = DCPowerSourceOutputFunction.DCVoltage;
            supplyConfig.VoltageLevel_V = 3;
            supplyConfig.CurrentLevel_A = 1;

            ConfigureSupply(dcPower, supplyConfig, channelNames);

            // Configure measurement related parameters
            MeasurementConfiguration measConfig = new MeasurementConfiguration
            {
                MeasureWhenMode = DCPowerMeasurementWhen.AutomaticallyAfterSourceComplete,
                SenseMode       = DCPowerMeasurementSense.Remote,
                // A MeasurementMode of "Record" acquires multiple smaples over the requested measurement
                // time at the supply's maximum sampling rate. "Single Point" will take a single measurement
                // over that duration and average the power and current results.
                MeasurementMode            = MeasurementModeConfiguration.Record,
                MeasurementTime_s          = 2e-3,
                MeasurementTriggerTerminal = "PXI_Trig0"
            };

            ConfigureMeasurement(dcPower, measConfig, channelNames);

            TurnSupplyOnOrOff(dcPower, SupplyPowerMode.PowerOn, channelNames);

            MeasurementResults results = MeasureSupplyIV(dcPower, channelNames);

            // Calculate the average of the acquired results
            results = Utilities.CalculateAverageIV(results);

            Console.WriteLine($"The average voltage measured was {results.Voltage_V[0]} with a current of {results.Current_A[0]}");
            Console.WriteLine("Press any key to turn off the supply and exit the program.");

            Console.ReadKey();

            TurnSupplyOnOrOff(dcPower, SupplyPowerMode.PowerOff, channelNames);

            CloseSupply(dcPower, channelNames);
        }
Exemplo n.º 7
0
        /// <summary>
        /// Удаление из общего списка объектов типа MeasurementResults  -  таких, которые имеют статус Z
        /// и время их существования превышает время, заданное параметром TimeOut
        /// </summary>
        /// <param name="se"></param>
        /// <param name="TimeOut"></param>
        public static bool FindAndDestroyObject(this MeasurementResults se, int TimeOut, string Status)
        {
            bool isSuccessDestroy = false;

            lock (tmLife)
            {
                ExtendClases <MeasurementResults> rx = tmLife.Find(t => t.Key.Id.MeasTaskId.Value == se.Id.MeasTaskId.Value && t.Key.StationMeasurements.StationId.Value == se.StationMeasurements.StationId.Value && t.Key.Id.SubMeasTaskId == se.Id.SubMeasTaskId && t.Key.Id.SubMeasTaskStationId == se.Id.SubMeasTaskStationId && t.Key.Status == Status);
                if (rx != null)
                {
                    if (rx.Counter > TimeOut)
                    {
                        tmLife.RemoveAll(t => t.Key.Id.MeasTaskId.Value == se.Id.MeasTaskId.Value && t.Key.StationMeasurements.StationId.Value == se.StationMeasurements.StationId.Value && t.Key.Id.SubMeasTaskId == se.Id.SubMeasTaskId && t.Key.Id.SubMeasTaskStationId == se.Id.SubMeasTaskStationId && t.Key.Status == Status);
                        GlobalInit.LST_MeasurementResults.RemoveAll(t => t.Id.MeasTaskId.Value == se.Id.MeasTaskId.Value && t.StationMeasurements.StationId.Value == se.StationMeasurements.StationId.Value && t.Id.SubMeasTaskId == se.Id.SubMeasTaskId && t.Id.SubMeasTaskStationId == se.Id.SubMeasTaskStationId && t.Status == Status);
                        isSuccessDestroy = true;
                    }
                }
            }
            return(isSuccessDestroy);
        }
Exemplo n.º 8
0
        public bool DeleteResultFromDB(MeasurementResults obj, string Status)
        {
            bool isSuccess = false;

            try
            {
                /// Create new record in YXbsMeastask
                YXbsMeasurementres measRes = new YXbsMeasurementres(ConnectDB.Connect_Main_);
                measRes.Format("*");
                if (obj != null)
                {
                    if ((obj.Id.MeasTaskId != null) && (obj.StationMeasurements != null) && (obj.Id.SubMeasTaskId != ConnectDB.NullI) && (obj.Id.SubMeasTaskStationId != ConnectDB.NullI))
                    {
                        if (obj.StationMeasurements.StationId != null)
                        {
                            if (measRes.Fetch(string.Format(" (meastaskid={0}) and (sensorid={1}) and (submeastaskid={2}) and (submeastaskstationid={3})", obj.Id.MeasTaskId.Value, obj.StationMeasurements.StationId.Value, obj.Id.SubMeasTaskId, obj.Id.SubMeasTaskStationId)))
                            {
                                isSuccess        = true;
                                measRes.m_status = Status;
                                measRes.Save();
                            }
                        }
                    }
                    else if (obj.Id.MeasTaskId != null)
                    {
                        {
                            measRes.Filter = string.Format(" (meastaskid={0}) ", obj.Id.MeasTaskId.Value);
                            for (measRes.OpenRs(); !measRes.IsEOF(); measRes.MoveNext())
                            {
                                isSuccess        = true;
                                measRes.m_status = Status;
                                measRes.Save();
                            }
                        }
                    }
                    measRes.Close();
                    measRes.Dispose();
                }
            }
            catch (Exception)
            { isSuccess = false; }
            return(isSuccess);
        }
        /// <summary>
        /// This example illustrates how to use the NI-DCPower APIs to configure the SMU and measure the results.
        /// </summary>
        static void Main()
        {
            string    channelNames = "0";
            NIDCPower dcPower      = new NIDCPower("4139", channelNames, false);

            // Configure instrument settings
            SupplyConfiguration supplyConfig = SupplyConfiguration.GetDefault();

            supplyConfig.OutputFunction = DCPowerSourceOutputFunction.DCVoltage;
            supplyConfig.VoltageLevel_V = 3;
            supplyConfig.CurrentLevel_A = 0.001;
            supplyConfig.VoltageLimit_V = 3;
            supplyConfig.CurrentLimit_A = 0.001;

            ConfigureSupply(dcPower, supplyConfig, channelNames);

            // Configure measurement related parameters
            MeasurementConfiguration measConfig = MeasurementConfiguration.GetDefault();

            measConfig.MeasureWhenMode   = DCPowerMeasurementWhen.AutomaticallyAfterSourceComplete;
            measConfig.MeasurementTime_s = 2e-3;

            ConfigureMeasurement(dcPower, measConfig, channelNames);

            TurnSupplyOnOrOff(dcPower, SupplyPowerMode.PowerOn, channelNames);

            MeasurementResults results = MeasureSupplyIV(dcPower, channelNames);

            // Calculate the average of the acquired results
            results = Utilities.CalculateAverageIV(results);

            Console.WriteLine($"The average voltage measured was {results.Voltage_V[0]} with a current of {results.Current_A[0]}");
            Console.WriteLine("Press any key to turn off the supply and exit the program.");

            Console.ReadKey();

            TurnSupplyOnOrOff(dcPower, SupplyPowerMode.PowerOff, channelNames);

            CloseSupply(dcPower);
        }
        static void Main()
        {
            string    channelNames = "0";
            NIDCPower dcPower      = new NIDCPower("4139", channelNames, false);

            SupplyConfiguration supplyConfig = new SupplyConfiguration();

            supplyConfig.SetDefaults();

            supplyConfig.OutputFunction        = DCPowerSourceOutputFunction.DCVoltage;
            supplyConfig.VoltageLevel_V        = 3;
            supplyConfig.CurrentLevel_A        = 1;
            supplyConfig.TransientResponseMode = DCPowerSourceTransientResponse.Fast;

            ConfigureSupply(dcPower, supplyConfig, channelNames);

            MeasurementConfiguration measConfig = new MeasurementConfiguration
            {
                MeasureWhenMode            = DCPowerMeasurementWhen.AutomaticallyAfterSourceComplete,
                SenseMode                  = DCPowerMeasurementSense.Remote,
                MeasurementMode            = MeasurementConfiguration.MeasurementModeConfiguration.SinglePoint,
                MeasurementTime_s          = 2e-3,
                MeasurementTriggerTerminal = "PXI_Trig0"
            };

            ConfigureMeasurement(dcPower, measConfig, channelNames);

            TurnSupplyOnOrOff(dcPower, SupplyPowerMode.PowerOn, channelNames);

            MeasurementResults results = MeasureSupplyIV(dcPower, channelNames);

            results = Utilities.CalculateAverageIV(results, 3);

            TurnSupplyOnOrOff(dcPower, SupplyPowerMode.PowerOff, channelNames);

            CloseSupply(dcPower, channelNames);
        }
Exemplo n.º 11
0
 /// <summary>
 /// Добавление нового объекта в список объектов и старт таймера
 /// для отсчитывания времени его существования
 /// </summary>
 /// <param name="se"></param>
 public static void StartLifeTime(this MeasurementResults se)
 {
     lock (tmLife)
     {
         ExtendClases <MeasurementResults> rx = tmLife.Find(t => t.Key.Id.MeasTaskId.Value == se.Id.MeasTaskId.Value && t.Key.StationMeasurements.StationId.Value == se.StationMeasurements.StationId.Value && t.Key.Id.SubMeasTaskId == se.Id.SubMeasTaskId && t.Key.Id.SubMeasTaskStationId == se.Id.SubMeasTaskStationId);
         MeasurementResults res = GlobalInit.LST_MeasurementResults.Find(t => t.Id.MeasTaskId.Value == se.Id.MeasTaskId.Value && t.StationMeasurements.StationId.Value == se.StationMeasurements.StationId.Value && t.Id.SubMeasTaskId == se.Id.SubMeasTaskId && t.Id.SubMeasTaskStationId == se.Id.SubMeasTaskStationId);
         if ((rx == null) && (res == null))
         {
             tmLife.Add(new ExtendClases <MeasurementResults>(se));
             GlobalInit.LST_MeasurementResults.RemoveAll(t => t.Id.MeasTaskId.Value == se.Id.MeasTaskId.Value && t.StationMeasurements.StationId.Value == se.StationMeasurements.StationId.Value && t.Id.SubMeasTaskId == se.Id.SubMeasTaskId && t.Id.SubMeasTaskStationId == se.Id.SubMeasTaskStationId);
             GlobalInit.LST_MeasurementResults.Add(se);
         }
         else
         {
             if ((tmLife.Find(t => t.Key.Id.MeasTaskId.Value == se.Id.MeasTaskId.Value && t.Key.StationMeasurements.StationId.Value == se.StationMeasurements.StationId.Value && t.Key.Id.SubMeasTaskId == se.Id.SubMeasTaskId && t.Key.Id.SubMeasTaskStationId == se.Id.SubMeasTaskStationId) != null) || (res != null))
             {
                 tmLife.RemoveAll(t => t.Key.Id.MeasTaskId.Value == se.Id.MeasTaskId.Value && t.Key.StationMeasurements.StationId.Value == se.StationMeasurements.StationId.Value && t.Key.Id.SubMeasTaskId == se.Id.SubMeasTaskId && t.Key.Id.SubMeasTaskStationId == se.Id.SubMeasTaskStationId);
                 tmLife.Add(new ExtendClases <MeasurementResults>(se));
                 GlobalInit.LST_MeasurementResults.RemoveAll(t => t.Id.MeasTaskId.Value == se.Id.MeasTaskId.Value && t.StationMeasurements.StationId.Value == se.StationMeasurements.StationId.Value && t.Id.SubMeasTaskId == se.Id.SubMeasTaskId && t.Id.SubMeasTaskStationId == se.Id.SubMeasTaskStationId);
                 GlobalInit.LST_MeasurementResults.Add(se);
             }
         }
     }
 }
Exemplo n.º 12
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="options"></param>
        /// <param name="operationContext"></param>
        /// <returns></returns>
        public override CommonOperationDataResult <int> Handle(DeleteMeasResultsAppOperationOptions options, IAppOperationContext operationContext)
        {
            CommonOperationDataResult <int> cv_r                    = new CommonOperationDataResult <int>();
            KeyValuePair <string, object>   ca_MeasTaskId           = options.OtherArgs.Values.ToList().Find(t => t.Key == "MeasTaskId");
            KeyValuePair <string, object>   ca_StationId            = options.OtherArgs.Values.ToList().Find(t => t.Key == "StationId");
            KeyValuePair <string, object>   ca_SubMeasTaskId        = options.OtherArgs.Values.ToList().Find(t => t.Key == "SubMeasTaskId");
            KeyValuePair <string, object>   ca_SubMeasTaskStationId = options.OtherArgs.Values.ToList().Find(t => t.Key == "SubMeasTaskStationId");
            KeyValuePair <string, object>   ca_N                    = options.OtherArgs.Values.ToList().Find(t => t.Key == "N");

            if ((ca_MeasTaskId.Value != null) &&
                (ca_StationId.Value != null) &&
                (ca_SubMeasTaskId.Value != null) &&
                (ca_SubMeasTaskStationId.Value != null) &&
                (ca_N.Value != null))
            {
                lock (GlobalInit.LST_MeasurementResults) {
                    MeasurementResults resd = GlobalInit.LST_MeasurementResults.Find(t => t.Id.MeasTaskId.Value == (int)ca_MeasTaskId.Value && t.StationMeasurements.StationId.Value == (int)ca_StationId.Value && t.Id.SubMeasTaskId == (int)ca_SubMeasTaskId.Value && t.Id.SubMeasTaskStationId == (int)ca_SubMeasTaskStationId.Value && (t.MeasurementsResults.ToList().Find(y => y.Id.Value == (int)ca_N.Value) != null));
                    if (resd != null)
                    {
                        ClassesDBGetResult resDb = new ClassesDBGetResult();
                        if (resd.Status == "O")
                        {
                            GlobalInit.LST_MeasurementResults.RemoveAll(t => t.Id.MeasTaskId.Value == (int)ca_MeasTaskId.Value && t.StationMeasurements.StationId.Value == (int)ca_StationId.Value && t.Id.SubMeasTaskId == (int)ca_SubMeasTaskId.Value && t.Id.SubMeasTaskStationId == (int)ca_SubMeasTaskStationId.Value && (t.MeasurementsResults.ToList().Find(y => y.Id.Value == (int)ca_N.Value) != null));
                        }
                        if (resDb.DeleteResultFromDB(resd, "Z"))
                        {
                            GlobalInit.LST_MeasurementResults.RemoveAll(t => t.Id.MeasTaskId.Value == (int)ca_MeasTaskId.Value && t.StationMeasurements.StationId.Value == (int)ca_StationId.Value && t.Id.SubMeasTaskId == (int)ca_SubMeasTaskId.Value && t.Id.SubMeasTaskStationId == (int)ca_SubMeasTaskStationId.Value && (t.MeasurementsResults.ToList().Find(y => y.Id.Value == (int)ca_N.Value) != null));
                            cv_r.State = CommonOperationState.Success;
                        }
                        else
                        {
                            cv_r.State = CommonOperationState.Fault;
                        }
                    }
                    else
                    {
                        cv_r.State = CommonOperationState.Fault;
                    }
                }
            }
            else if (ca_MeasTaskId.Value != null)
            {
                lock (GlobalInit.LST_MeasurementResults) {
                    MeasurementResults resd = GlobalInit.LST_MeasurementResults.Find(t => t.Id.MeasTaskId.Value == (int)ca_MeasTaskId.Value);
                    resd.StationMeasurements = null;
                    if (resd != null)
                    {
                        ClassesDBGetResult resDb = new ClassesDBGetResult();
                        if (resd.Status == "O")
                        {
                            GlobalInit.LST_MeasurementResults.RemoveAll(t => t.Id.MeasTaskId.Value == (int)ca_MeasTaskId.Value);
                        }
                        if (resDb.DeleteResultFromDB(resd, "Z"))
                        {
                            GlobalInit.LST_MeasurementResults.RemoveAll(t => t.Id.MeasTaskId.Value == (int)ca_MeasTaskId.Value);
                            cv_r.State = CommonOperationState.Success;
                        }
                        else
                        {
                            cv_r.State = CommonOperationState.Fault;
                        }
                    }
                    else
                    {
                        cv_r.State = CommonOperationState.Fault;
                    }
                }
            }
            Logger.Trace(this, options, operationContext);
            return(cv_r);
        }
Exemplo n.º 13
0
        public int SaveResultToDB(MeasurementResults obj)
        {
            int ID = ConnectDB.NullI;

            if (((obj.TypeMeasurements == MeasurementType.SpectrumOccupation) && (obj.Status == "C")) || (obj.TypeMeasurements != MeasurementType.SpectrumOccupation))
            {
                //Task tsk = new Task(() =>
                //{
                try
                {
                    /// Create new record in YXbsMeastask
                    if (obj != null)
                    {
                        if ((obj.Id.MeasTaskId != null) && (obj.StationMeasurements != null) && (obj.Id.SubMeasTaskId != ConnectDB.NullI) && (obj.Id.SubMeasTaskStationId != ConnectDB.NullI))
                        {
                            if (obj.StationMeasurements.StationId != null)
                            {
                                YXbsMeasurementres measRes = new YXbsMeasurementres(ConnectDB.Connect_Main_);
                                measRes.Format("*");
                                measRes.Filter = "[ID]=-1";
                                measRes.New();
                                ID = measRes.AllocID();
                                obj.Id.MeasSdrResultsId = ID;
                                if (obj.AntVal != null)
                                {
                                    measRes.m_antval = obj.AntVal.GetValueOrDefault();
                                }
                                if (obj.DataRank != null)
                                {
                                    measRes.m_datarank = obj.DataRank.GetValueOrDefault();
                                }
                                measRes.m_status     = obj.Status;
                                measRes.m_meastaskid = obj.Id.MeasTaskId.Value;
                                if (obj.N != null)
                                {
                                    measRes.m_n = obj.N.GetValueOrDefault();
                                }
                                measRes.m_sensorid             = obj.StationMeasurements.StationId.Value;
                                measRes.m_submeastaskid        = obj.Id.SubMeasTaskId;
                                measRes.m_submeastaskstationid = obj.Id.SubMeasTaskStationId;
                                measRes.m_timemeas             = obj.TimeMeas;
                                measRes.m_typemeasurements     = obj.TypeMeasurements.ToString();
                                measRes.Save();
                                measRes.Close();
                                measRes.Dispose();
                            }
                        }
                        if (ID != ConnectDB.NullI)
                        {
                            if (obj.LocationSensorMeasurement != null)
                            {
                                foreach (LocationSensorMeasurement dt_param in obj.LocationSensorMeasurement.ToArray())
                                {
                                    if (dt_param != null)
                                    {
                                        YXbsLocationsensorm dtr = new YXbsLocationsensorm(ConnectDB.Connect_Main_);
                                        dtr.Format("*");
                                        dtr.Filter = "[ID]=-1";
                                        dtr.New();
                                        int ID_DT_params = dtr.AllocID();
                                        if (dt_param.ASL != null)
                                        {
                                            dtr.m_asl = dt_param.ASL.GetValueOrDefault();
                                        }
                                        if (dt_param.Lon != null)
                                        {
                                            dtr.m_lon = dt_param.Lon.GetValueOrDefault();
                                        }
                                        if (dt_param.Lat != null)
                                        {
                                            dtr.m_lat = dt_param.Lat.GetValueOrDefault();
                                        }
                                        dtr.m_id_xbs_measurementres = ID;
                                        dtr.Save();
                                        dtr.Close();
                                        dtr.Dispose();
                                    }
                                }
                            }
                            if (obj.MeasurementsResults != null)
                            {
                                int idx_cnt = 0;
                                foreach (MeasurementResult dt_param in obj.MeasurementsResults.ToArray())
                                {
                                    if ((obj.TypeMeasurements == MeasurementType.Level) && (obj.Status != "O"))
                                    {
                                        if (dt_param != null)
                                        {
                                            if (dt_param is LevelMeasurementResult)
                                            {
                                                YXbsLevelmeasres dtrR = new YXbsLevelmeasres(ConnectDB.Connect_Main_);
                                                dtrR.Format("*");
                                                dtrR.Filter = "[ID]=-1";
                                                dtrR.New();
                                                int ID_DT_params = dtrR.AllocID();
                                                if ((dt_param as LevelMeasurementResult).Value != null)
                                                {
                                                    dtrR.m_value = (dt_param as LevelMeasurementResult).Value.GetValueOrDefault();
                                                }
                                                if ((dt_param as LevelMeasurementResult).PMax != null)
                                                {
                                                    dtrR.m_pmax = (dt_param as LevelMeasurementResult).PMax.GetValueOrDefault();
                                                }
                                                if ((dt_param as LevelMeasurementResult).PMin != null)
                                                {
                                                    dtrR.m_pmin = (dt_param as LevelMeasurementResult).PMin.GetValueOrDefault();
                                                }
                                                dtrR.m_id_xbs_measurementres = ID;
                                                dtrR.Save();
                                                dtrR.Close();
                                                dtrR.Dispose();

                                                if (obj.FrequenciesMeasurements != null)
                                                {
                                                    List <FrequencyMeasurement> Fr_e = obj.FrequenciesMeasurements.ToList().FindAll(t => t.Id == dt_param.Id.Value);
                                                    if (Fr_e != null)
                                                    {
                                                        if (Fr_e.Count > 0)
                                                        {
                                                            foreach (FrequencyMeasurement dt_param_freq in Fr_e.ToArray())
                                                            {
                                                                if (dt_param_freq != null)
                                                                {
                                                                    YXbsFrequencymeas dtr_freq = new YXbsFrequencymeas(ConnectDB.Connect_Main_);
                                                                    dtr_freq.Format("*");
                                                                    dtr_freq.Filter = "[ID]=-1";
                                                                    dtr_freq.New();
                                                                    int ID_DT_params_freq = dtr_freq.AllocID();
                                                                    dtr_freq.m_freq = dt_param_freq.Freq;
                                                                    dtr_freq.m_id_xbs_measurementres = ID;
                                                                    dtr_freq.m_num = ID_DT_params;
                                                                    dtr_freq.Save();
                                                                    dt_param_freq.Id = ID_DT_params;
                                                                    dtr_freq.Close();
                                                                    dtr_freq.Dispose();
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                                dt_param.Id       = new MeasurementResultIdentifier();
                                                dt_param.Id.Value = ID_DT_params;
                                            }
                                        }
                                    }
                                    else if ((obj.TypeMeasurements == MeasurementType.SpectrumOccupation) && (obj.Status == "C"))
                                    {
                                        if (dt_param != null)
                                        {
                                            if (dt_param is SpectrumOccupationMeasurementResult)
                                            {
                                                YXbsSpectoccupmeas dtr = new YXbsSpectoccupmeas(ConnectDB.Connect_Main_);
                                                dtr.Format("*");
                                                dtr.Filter = "[ID]=-1";
                                                dtr.New();
                                                int ID_DT_params = dtr.AllocID();
                                                if ((dt_param as SpectrumOccupationMeasurementResult).Value != null)
                                                {
                                                    dtr.m_value = (dt_param as SpectrumOccupationMeasurementResult).Value.GetValueOrDefault();
                                                }
                                                if ((dt_param as SpectrumOccupationMeasurementResult).Occupancy != null)
                                                {
                                                    dtr.m_occupancy = (dt_param as SpectrumOccupationMeasurementResult).Occupancy.GetValueOrDefault();
                                                }
                                                dtr.m_id_xbs_measurementres = ID;
                                                dtr.Save();
                                                dtr.Close();
                                                dtr.Dispose();


                                                if (obj.FrequenciesMeasurements != null)
                                                {
                                                    List <FrequencyMeasurement> Fr_e = obj.FrequenciesMeasurements.ToList().FindAll(t => t.Id == dt_param.Id.Value);
                                                    if (Fr_e != null)
                                                    {
                                                        if (Fr_e.Count > 0)
                                                        {
                                                            foreach (FrequencyMeasurement dt_param_freq in Fr_e.ToArray())
                                                            {
                                                                if (dt_param_freq != null)
                                                                {
                                                                    YXbsFrequencymeas dtr_freq = new YXbsFrequencymeas(ConnectDB.Connect_Main_);
                                                                    dtr_freq.Format("*");
                                                                    dtr_freq.Filter = "[ID]=-1";
                                                                    dtr_freq.New();
                                                                    int ID_DT_params_freq = dtr_freq.AllocID();
                                                                    dtr_freq.m_freq = dt_param_freq.Freq;
                                                                    dtr_freq.m_id_xbs_measurementres = ID;
                                                                    dtr_freq.m_num = ID_DT_params;
                                                                    dtr_freq.Save();
                                                                    dt_param_freq.Id = ID_DT_params;
                                                                    dtr_freq.Close();
                                                                    dtr_freq.Dispose();
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                                dt_param.Id       = new MeasurementResultIdentifier();
                                                dt_param.Id.Value = ID_DT_params;
                                            }
                                        }
                                    }
                                    //else
                                    {
                                        if (dt_param != null)
                                        {
                                            if (dt_param is LevelMeasurementOnlineResult)
                                            {
                                                YXbsLevelmeasonlres dtr = new YXbsLevelmeasonlres(ConnectDB.Connect_Main_);
                                                dtr.Format("*");
                                                dtr.Filter = "[ID]=-1";
                                                dtr.New();
                                                int ID_DT_params = dtr.AllocID();
                                                if ((dt_param as LevelMeasurementOnlineResult).Value != ConnectDB.NullD)
                                                {
                                                    dtr.m_value = (dt_param as LevelMeasurementOnlineResult).Value;
                                                }
                                                dtr.m_id_xbs_measurementres = ID;
                                                dtr.Save();
                                                dt_param.Id       = new MeasurementResultIdentifier();
                                                dt_param.Id.Value = ID_DT_params;
                                                dtr.Close();
                                                dtr.Dispose();
                                            }
                                        }
                                    }
                                    idx_cnt++;
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    System.Console.WriteLine("SaveResultToDB: " + ex.Message);
                }
                //});
                //tsk.Start();
                //tsk.Wait(30000);
            }
            return(ID);
        }
Exemplo n.º 14
0
        public bool DeleteResultFromDB(MeasurementResults obj)
        {
            bool isSuccess = false;

            try
            {
                /// Create new record in YXbsMeastask
                YXbsMeasurementres measRes = new YXbsMeasurementres(ConnectDB.Connect_Main_);
                measRes.Format("*");
                if (obj != null)
                {
                    if ((obj.Id.MeasTaskId != null) && (obj.StationMeasurements != null) && (obj.Id.SubMeasTaskId != ConnectDB.NullI) && (obj.Id.SubMeasTaskStationId != ConnectDB.NullI))
                    {
                        if (obj.StationMeasurements.StationId != null)
                        {
                            if (measRes.Fetch(string.Format(" (meastaskid={0}) and (sensorid={1}) and (submeastaskid={2}) and (submeastaskstationid={3})", obj.Id.MeasTaskId.Value, obj.StationMeasurements.StationId.Value, obj.Id.SubMeasTaskId, obj.Id.SubMeasTaskStationId)))
                            {
                                foreach (FrequencyMeasurement dt_param in obj.FrequenciesMeasurements.ToArray())
                                {
                                    YXbsFrequencymeas dtr = new YXbsFrequencymeas(ConnectDB.Connect_Main_);
                                    dtr.Format("*");
                                    if (dt_param != null)
                                    {
                                        if (dtr.Fetch(string.Format("id_xbs_measurementres={0}", measRes.m_id)))
                                        {
                                            dtr.Delete();
                                        }
                                    }
                                    dtr.Close();
                                    dtr.Dispose();
                                }
                                foreach (LocationSensorMeasurement dt_param in obj.LocationSensorMeasurement.ToArray())
                                {
                                    YXbsLocationsensorm dtr = new YXbsLocationsensorm(ConnectDB.Connect_Main_);
                                    dtr.Format("*");
                                    if (dt_param != null)
                                    {
                                        if (dtr.Fetch(string.Format("id_xbs_measurementres={0}", measRes.m_id)))
                                        {
                                            dtr.Delete();
                                        }
                                    }
                                    dtr.Close();
                                    dtr.Dispose();
                                }
                                foreach (MeasurementResult dt_param in obj.MeasurementsResults.ToArray())
                                {
                                    if (obj.TypeMeasurements == MeasurementType.Level)
                                    {
                                        YXbsLevelmeasres dtr = new YXbsLevelmeasres(ConnectDB.Connect_Main_);
                                        dtr.Format("*");
                                        if (dt_param != null)
                                        {
                                            if (dtr.Fetch(string.Format("id_xbs_measurementres={0}", measRes.m_id)))
                                            {
                                                dtr.Delete();
                                            }
                                        }
                                        dtr.Close();
                                        dtr.Dispose();
                                    }
                                    else if (obj.TypeMeasurements == MeasurementType.SpectrumOccupation)
                                    {
                                        YXbsSpectoccupmeas dtr = new YXbsSpectoccupmeas(ConnectDB.Connect_Main_);
                                        dtr.Format("*");
                                        if (dt_param != null)
                                        {
                                            if (dtr.Fetch(string.Format("id_xbs_measurementres={0}", measRes.m_id)))
                                            {
                                                dtr.Delete();
                                            }
                                        }
                                        dtr.Close();
                                        dtr.Dispose();
                                    }
                                }
                                isSuccess = true;
                                measRes.Delete();
                            }
                        }
                    }
                    else if (obj.Id.MeasTaskId != null)
                    {
                        {
                            measRes.Filter = string.Format(" (meastaskid={0}) ", obj.Id.MeasTaskId.Value);
                            for (measRes.OpenRs(); !measRes.IsEOF(); measRes.MoveNext())
                            {
                                foreach (FrequencyMeasurement dt_param in obj.FrequenciesMeasurements.ToArray())
                                {
                                    YXbsFrequencymeas dtr = new YXbsFrequencymeas(ConnectDB.Connect_Main_);
                                    dtr.Format("*");
                                    if (dt_param != null)
                                    {
                                        dtr.Filter = string.Format("id_xbs_measurementres={0}", measRes.m_id);
                                        for (dtr.OpenRs(); !dtr.IsEOF(); dtr.MoveNext())
                                        {
                                            dtr.Delete();
                                        }
                                    }
                                    dtr.Close();
                                    dtr.Dispose();
                                }

                                foreach (LocationSensorMeasurement dt_param in obj.LocationSensorMeasurement.ToArray())
                                {
                                    YXbsLocationsensorm dtr = new YXbsLocationsensorm(ConnectDB.Connect_Main_);
                                    dtr.Format("*");
                                    if (dt_param != null)
                                    {
                                        dtr.Filter = string.Format("id_xbs_measurementres={0}", measRes.m_id);
                                        for (dtr.OpenRs(); !dtr.IsEOF(); dtr.MoveNext())
                                        {
                                            dtr.Delete();
                                        }
                                    }
                                    dtr.Close();
                                    dtr.Dispose();
                                }

                                foreach (MeasurementResult dt_param in obj.MeasurementsResults.ToArray())
                                {
                                    if (obj.TypeMeasurements == MeasurementType.Level)
                                    {
                                        YXbsLevelmeasres dtr = new YXbsLevelmeasres(ConnectDB.Connect_Main_);
                                        dtr.Format("*");
                                        if (dt_param != null)
                                        {
                                            dtr.Filter = string.Format("id_xbs_measurementres={0}", measRes.m_id);
                                            for (dtr.OpenRs(); !dtr.IsEOF(); dtr.MoveNext())
                                            {
                                                dtr.Delete();
                                            }
                                        }
                                        dtr.Close();
                                        dtr.Dispose();
                                    }
                                    else if (obj.TypeMeasurements == MeasurementType.SpectrumOccupation)
                                    {
                                        YXbsSpectoccupmeas dtr = new YXbsSpectoccupmeas(ConnectDB.Connect_Main_);
                                        dtr.Format("*");
                                        if (dt_param != null)
                                        {
                                            dtr.Filter = string.Format("id_xbs_measurementres={0}", measRes.m_id);
                                            for (dtr.OpenRs(); !dtr.IsEOF(); dtr.MoveNext())
                                            {
                                                dtr.Delete();
                                            }
                                        }
                                        dtr.Close();
                                        dtr.Dispose();
                                    }
                                }
                                isSuccess = true;
                                measRes.Delete();
                            }
                        }
                    }
                    measRes.Close();
                    measRes.Dispose();
                }
            }
            catch (Exception)
            { isSuccess = false; }
            return(isSuccess);
        }
Exemplo n.º 15
0
 void IJob.Execute(IJobExecutionContext context)
 {
     try
     {
         if (GlobalInit.MEAS_SDR_RESULTS.Count > 0)
         {
             for (int i = 0; i < GlobalInit.MEAS_SDR_RESULTS.Count; i++)
             {
                 ClassesDBGetResult       DbGetRes = new ClassesDBGetResult();
                 ClassConvertToSDRResults conv     = new ClassConvertToSDRResults();
                 if (GlobalInit.MEAS_SDR_RESULTS.Count > 0)
                 {
                     if (GlobalInit.MEAS_SDR_RESULTS[0] != null)
                     {
                         int                ID = -1;
                         string             Status_Original = GlobalInit.MEAS_SDR_RESULTS[0].status;
                         MeasurementResults msReslts        = ClassConvertToSDRResults.GenerateMeasResults(GlobalInit.MEAS_SDR_RESULTS[0]);
                         if (msReslts.TypeMeasurements == MeasurementType.SpectrumOccupation)
                         {
                             msReslts.Status = Status_Original;
                         }
                         if (msReslts.MeasurementsResults != null)
                         {
                             if (msReslts.MeasurementsResults.Count() > 0)
                             {
                                 if (msReslts.MeasurementsResults[0] is LevelMeasurementOnlineResult)
                                 {
                                     // Здесь в базу ничего не пишем (только в память)
                                     msReslts.Status = "O";
                                     GlobalInit.LST_MeasurementResults.Add(msReslts);
                                 }
                                 else
                                 {
                                     System.Console.WriteLine(string.Format("Start save results..."));
                                     Task ge = new Task(() =>
                                     {
                                         ID = DbGetRes.SaveResultToDB(msReslts);
                                         if (ID > 0)
                                         {
                                             GlobalInit.LST_MeasurementResults.Add(msReslts);
                                             GlobalInit.MEAS_SDR_RESULTS.Remove(GlobalInit.MEAS_SDR_RESULTS[0]);
                                             System.Console.WriteLine(string.Format("Success save results..."));
                                         }
                                     });
                                     ge.Start();
                                     ge.Wait();
                                 }
                             }
                         }
                         else
                         {
                             System.Console.WriteLine(string.Format("Start save results..."));
                             Task ge = new Task(() =>
                             {
                                 ID = DbGetRes.SaveResultToDB(msReslts);
                                 if (ID > 0)
                                 {
                                     GlobalInit.LST_MeasurementResults.Add(msReslts);
                                     GlobalInit.MEAS_SDR_RESULTS.Remove(GlobalInit.MEAS_SDR_RESULTS[0]);
                                     System.Console.WriteLine(string.Format("Success save results..."));
                                 }
                             });
                             ge.Start();
                             ge.Wait();
                         }
                     }
                 }
                 System.Console.WriteLine(string.Format("LST_MeasurementResults count: {0}", GlobalInit.LST_MeasurementResults.Count()));
                 System.Console.WriteLine(string.Format("MEAS_SDR_RESULTS count: {0}", GlobalInit.MEAS_SDR_RESULTS.Count()));
                 DbGetRes.Dispose();
                 conv.Dispose();
                 CoreICSM.Logs.CLogs.WriteInfo(CoreICSM.Logs.ELogsWhat.Unknown, "ShedulerReceiveStatusMeastaskSDR ");
             }
         }
     }
     catch (Exception ex)
     {
         System.Console.WriteLine("[ShedulerReceiveStatusMeastaskSDR]:" + ex.Message);
     }
 }
Exemplo n.º 16
0
        public MeasurementResults[] ConvertTo_SDRObjects(List <ClassSDRResults> objs)
        {
            List <MeasurementResults> L_OUT = new List <MeasurementResults>();

            try
            {
                foreach (ClassSDRResults obj in objs.ToArray())
                {
                    MeasurementResults s_out = new MeasurementResults();
                    s_out.AntVal              = obj.meas_res.m_antval;
                    s_out.DataRank            = obj.meas_res.m_datarank;
                    s_out.Id.MeasTaskId       = new MeasTaskIdentifier();
                    s_out.Id.MeasTaskId.Value = obj.meas_res.m_meastaskid;
                    s_out.N = obj.meas_res.m_n;
                    s_out.StationMeasurements                 = new StationMeasurements();
                    s_out.StationMeasurements.StationId       = new SensorIdentifier();
                    s_out.StationMeasurements.StationId.Value = obj.meas_res.m_sensorid;
                    s_out.Status                  = obj.meas_res.m_status;
                    s_out.Id.SubMeasTaskId        = obj.meas_res.m_submeastaskid;
                    s_out.Id.SubMeasTaskStationId = obj.meas_res.m_submeastaskstationid;
                    s_out.TimeMeas                = obj.meas_res.m_timemeas;
                    MeasurementType out_res_type;
                    if (Enum.TryParse <MeasurementType>(obj.meas_res.m_typemeasurements, out out_res_type))
                    {
                        s_out.TypeMeasurements = out_res_type;
                    }
                    /// Freq
                    List <FrequencyMeasurement> L_FM = new List <FrequencyMeasurement>();
                    if (obj.freq_meas != null)
                    {
                        foreach (YXbsFrequencymeas fmeas in obj.freq_meas.ToArray())
                        {
                            FrequencyMeasurement t_FM = new FrequencyMeasurement();
                            t_FM.Id   = fmeas.m_num;
                            t_FM.Freq = fmeas.m_freq;
                            L_FM.Add(t_FM);
                        }
                    }
                    s_out.FrequenciesMeasurements = L_FM.ToArray();
                    /// Location
                    List <LocationSensorMeasurement> L_SM = new List <LocationSensorMeasurement>();
                    if (obj.freq_meas != null)
                    {
                        foreach (YXbsLocationsensorm fmeas in obj.loc_sensorM.ToArray())
                        {
                            LocationSensorMeasurement t_SM = new LocationSensorMeasurement();
                            t_SM.ASL = fmeas.m_asl;
                            t_SM.Lon = fmeas.m_lon;
                            t_SM.Lat = fmeas.m_lat;
                            L_SM.Add(t_SM);
                        }
                    }
                    s_out.LocationSensorMeasurement = L_SM.ToArray();
                    List <MeasurementResult> L_MSR = new List <MeasurementResult>();
                    if (obj.level_meas_res != null)
                    {
                        if (obj.level_meas_res.Count > 0)
                        {
                            foreach (YXbsLevelmeasres flevmeas in obj.level_meas_res.ToArray())
                            {
                                if (obj.meas_res.m_typemeasurements == MeasurementType.Level.ToString())
                                {
                                    LevelMeasurementResult rsd = new LevelMeasurementResult();
                                    rsd.Id       = new MeasurementResultIdentifier();
                                    rsd.Id.Value = flevmeas.m_id;
                                    rsd.Value    = flevmeas.m_value;
                                    rsd.PMin     = flevmeas.m_pmin;
                                    rsd.PMax     = flevmeas.m_pmax;
                                    L_MSR.Add(rsd);
                                }
                            }
                        }
                    }
                    if (obj.level_meas_onl_res != null)
                    {
                        if (obj.level_meas_onl_res.Count > 0)
                        {
                            foreach (YXbsLevelmeasonlres flevmeas in obj.level_meas_onl_res.ToArray())
                            {
                                LevelMeasurementOnlineResult rsd = new LevelMeasurementOnlineResult();
                                rsd.Id       = new MeasurementResultIdentifier();
                                rsd.Id.Value = flevmeas.m_id;
                                rsd.Value    = flevmeas.m_value;
                                L_MSR.Add(rsd);
                            }
                        }
                    }
                    if (obj.spect_occup_meas != null)
                    {
                        if (obj.spect_occup_meas.Count > 0)
                        {
                            foreach (YXbsSpectoccupmeas flevmeas in obj.spect_occup_meas.ToArray())
                            {
                                if (obj.meas_res.m_typemeasurements == MeasurementType.SpectrumOccupation.ToString())
                                {
                                    SpectrumOccupationMeasurementResult rsd = new SpectrumOccupationMeasurementResult();
                                    rsd.Id       = new MeasurementResultIdentifier();
                                    rsd.Id.Value = flevmeas.m_id;
                                    rsd.Value    = flevmeas.m_occupancy;
                                    L_MSR.Add(rsd);
                                }
                            }
                        }
                    }
                    s_out.MeasurementsResults = L_MSR.ToArray();
                    L_OUT.Add(s_out);
                }
            }
            catch (Exception ex)
            {
                System.Console.WriteLine("ConvertTo_SDRObjects" + ex.Message);
            }
            return(L_OUT.ToArray());
        }