private static double getTriggerValue(AnalogTrigger trigger) { var ain = AnalogIn[PortConverters.GetAnalogPort(trigger.analogPortPointer).port.pin]; var atr = SimData.AnalogTrigger[trigger.index]; var trigType = atr.TrigType; switch (trigType) { case TrigerType.Unassigned: return ain.Voltage; case TrigerType.Averaged: return ain.Voltage; case TrigerType.Filtered: return ain.Voltage; } throw new ArgumentOutOfRangeException(nameof(trigger), "Analog Trigger must be either filtered, averaged or null."); }
public static IntPtr initializeAnalogTrigger(IntPtr port_pointer, ref uint index, ref int status) { status = 0; for (int i = 0; i < SimData.AnalogTrigger.Count; i++) { var cnt = SimData.AnalogTrigger[i]; if (cnt.Initialized == false) { var port = PortConverters.GetHalPort(port_pointer); bool preInit = SimData.AnalogIn[port.pin].Initialized; IntPtr aPt = initializeAnalogInputPort(port_pointer, ref status); cnt.Initialized = true; cnt.AnalogPin = port.pin; AnalogTrigger trig = new AnalogTrigger() { analogPortPointer = aPt, precreatedAnalogInput = preInit, }; index = (uint)i; trig.index = i; IntPtr ptr = Marshal.AllocHGlobal(Marshal.SizeOf(trig)); Marshal.StructureToPtr(trig, ptr, true); cnt.TriggerPointer = ptr.ToInt64(); return ptr; } } status = HALErrorConstants.NO_AVAILABLE_RESOURCES; return IntPtr.Zero; }