Exemple #1
0
 /// <summary>
 /// Trigger this input and set the value
 /// </summary>
 /// <param name="input"></param>
 private void GetSingleTrigger(MillimeterInput input)
 {
     if (input != null)
     {
         for (int i = 0; i < 5; i++)
         {
             double[] vals = GetData();
             if (vals != null && vals.Length > 0)
             {
                 double val = vals[vals.Length - 1];
                 if (val != -1.0)
                 {
                     input.Value = vals[vals.Length - 1];
                     _waitMeasureDone.Set();
                     return;
                 }
             }
             Thread.Sleep(10);
         }
     }
 }
Exemple #2
0
        /// <summary>
        /// Initialize this Component
        /// </summary>
        public override void Initialize()
        {
            base.Initialize();

            // Initialize
            if (Simulate == eSimulate.SimulateDontAsk)
            {
                throw new ForceSimulateException("Always Simulate");
            }

            Port = GetParent <RS232>();
            if (Port == null)
            {
                throw new ForceSimulateException("MEDAQLib needs an RS232 parent");
            }

            try
            {
                _iSensor = MEDAQLibDLL.CreateSensorInstance(MEDAQLibDLL.ME_SENSOR.SENSOR_ILD1402);
                if (_iSensor == 0)
                {
                    throw new Exception("CreateSensorInstance: Error occured, no sensor created");
                }

                lock (_lockCommands)
                {
                    Open();
                }

                SetupGetInfo();
                SetupCallback();

                // Write to controller
                OnMeasurementRate(MeasurementRate);
                SetAverageParameters();
                OnExtInputMode(ExtInputMode);
                _mmInput = this.FilterByTypeSingle <MillimeterInput>();
                if (MMInput == null)
                {
                    throw new ForceSimulateException("MEDAQLib needs a MDoubleInput");
                }

                OnChangedExternalTrigger(_mmInput.ExternalTrigger);
                OnChangedTriggerMode(MMInput.TriggerMode);
                OnOutputTime(MMInput.TriggerInterval);

                U.RegisterOnChanged(() => MMInput.TriggerMode, OnChangedTriggerMode);
                U.RegisterOnChanged(() => MMInput.ExternalTrigger, OnChangedExternalTrigger);
                U.RegisterOnChanged(() => MMInput.TriggerInterval, OnOutputTime);
                U.RegisterOnChanged(() => MeasurementRate, OnMeasurementRate);
                U.RegisterOnChanged(() => MedianAvg, OnMedianAvg);
                U.RegisterOnChanged(() => MovingCount, OnMovingCount);
                U.RegisterOnChanged(() => MedianChoice, OnMedianChoice);
                U.RegisterOnChanged(() => ExtInputMode, OnExtInputMode);
                _bw.RunWorkerAsync();
                Simulate = eSimulate.None;
            }
            catch (ForceSimulateException fsex)
            {
                throw fsex;
            }
            catch (Exception ex)
            {
                throw new ForceSimulateException(ex);
            }
        }