public void ReadDMM(MultimeterMode measurementFunction, double range, double accuracy) { double[] readBuf; try { ConfigureDMM(measurementFunction, range, accuracy); dmmSession.Measurement.Initiate(); Application.DoEvents(); readBuf = dmmSession.Measurement.FetchMultiPoint(samplesPerReading); StatusDMMUpdate?.Invoke("SUCCESS"); dmmResult.buf = readBuf; dmmResult.measurementMode = dmmSession.MeasurementFunction.ToString(); bufReadDMMReceived?.Invoke(dmmResult); } catch (Exception ex) { WarningDMMUpdate?.Invoke(ex.Message); } finally { /*if (dmmSession != null) * dmmSession.Close(); * Application.DoEvents();*/ } }
void ConfigureDMM(MultimeterMode measurementFunction, double range, double accuracy) { if (dmmSession == null) { return; } DmmMeasurementFunction measurementMode = DmmMeasurementFunction.DCVolts; /*if(measurementFunction == "DCVolts") * measurementMode = (DmmMeasurementFunction)Enum.Parse(typeof(DmmMeasurementFunction), listMeasureModeDMM[0]); * else if(measurementFunction == "Resistance") * measurementMode = (DmmMeasurementFunction)Enum.Parse(typeof(DmmMeasurementFunction), listMeasureModeDMM[4]);*/ measurementMode = (DmmMeasurementFunction)Enum.Parse(typeof(DmmMeasurementFunction), measurementFunction.ToString()); //DmmMeasurementFunction measurementMode = (DmmMeasurementFunction)Enum.Parse(typeof(DmmMeasurementFunction), listMeasureModeDMM[0]); DmmTriggerSource triggerSource = "Immediate"; //"Immediate", "External", "Software Trigger", "Ttl0", "Ttl1" //double range = 100000; //double triggerDelay = 0; powerlineFrequencyDMM = powerlineFrequencyValues[1]; //60 //resolutionDMM = resolutionValues[2]; //6.5 samplesPerReading = 7; //if (accuracy == 0) accuracy = resolutionValues[2]; //если в таблице неверно указан параметр, то по умолчанию берем точность 5.5 switch (accuracy) { default: case 0: accuracy = resolutionValues[2]; break; case 1: accuracy = resolutionValues[3]; break; } dmmSession.ConfigureMeasurementDigits(measurementMode, range, accuracy); dmmSession.Advanced.PowerlineFrequency = powerlineFrequencyDMM; //dmmSession.Trigger.Configure(triggerSource, PrecisionTimeSpan.FromSeconds(triggerDelay)); //не находит почему то класс точного времени dmmSession.Trigger.Configure(triggerSource, true); dmmSession.Trigger.MultiPoint.SampleCount = samplesPerReading; }