コード例 #1
0
ファイル: NIControl.cs プロジェクト: PeterSev/7637-WS4
        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();*/
            }
        }
コード例 #2
0
ファイル: NIControl.cs プロジェクト: PeterSev/7637-WS4
        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;
        }