/// <summary> /// Initialize this Component /// </summary> public override void Initialize() { base.Initialize(); // Initialize Serial Port if (Simulate == eSimulate.SimulateDontAsk) { throw new ForceSimulateException("Always Simulate"); } try { _daqInputs = new DAQPilotEngine(); _daqOutputs = new DAQPilotEngine(); bool initializedInput = _daqInputs.LoadTask(_taskInput); if (!initializedInput || (_daqInputs.Status != (long)DAQPilotStatusID.DP_STATUS_NOERROR && _daqInputs.Status != 5)) { throw new ForceSimulateException("{0} initializing Inputs failed. Initialized={1}, Status={2}", Name, initializedInput, _daqInputs.Status); } bool initializedOutput = _daqOutputs.LoadTask(_taskOutput); if (!initializedOutput || (_daqOutputs.Status != (long)DAQPilotStatusID.DP_STATUS_NOERROR && _daqOutputs.Status != 5)) { throw new ForceSimulateException("{0} initializing Outputs failed. Initialized={1}, Status={2}", Name, initializedOutput, _daqOutputs.Status); } _inputs = FilterByTypeSingle <Inputs>(); _outputs = FilterByTypeSingle <Outputs>(); if (_outputs != null) { BoolOutput[] boolOutputs = _outputs.FilterByType <BoolOutput>(); int maxChan = 0; foreach (BoolOutput boolOutput in boolOutputs) { maxChan = Math.Max(maxChan, boolOutput.Channel); } int numChans = maxChan + 1; if ((numChans % 8) != 0) { numChans++; } int numPorts = numChans / 8; for (int i = 0; i < numPorts; i++) { _outputValues.Add(0xff); } foreach (BoolOutput boolOutput in boolOutputs) { SetOutputPortValue(boolOutput); } if (_inputs != null) { _timer = new Timer(OnTimer, this, 1000, _timerPeriod.ToInt); RegisterOnChanged(() => TimerPeriod, OnChangeTimerPeriod); } } } catch (ForceSimulateException fsex) { throw fsex; } catch (Exception ex) { throw new ForceSimulateException(ex); } Simulate = eSimulate.None; }