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); }
/// <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); }
/// <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); }
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); }
/// <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); } } } }
/// <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); }
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); }
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); }
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); } }
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()); }