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