コード例 #1
0
ファイル: HALAnalog.cs プロジェクト: chopshop-166/WPILib
        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.");

        }
コード例 #2
0
ファイル: HALAnalog.cs プロジェクト: chopshop-166/WPILib
        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;
        }