Пример #1
0
 public void StartUpdating(int sampleCount            = 3,
                           int sampleIntervalDuration = 40,
                           int standbyDuration        = 100)
 {
     HorizontalInputPort.StartSampling(sampleCount, sampleIntervalDuration, standbyDuration);
     VerticalInputPort.StartSampling(sampleCount, sampleIntervalDuration, standbyDuration);
 }
Пример #2
0
        //call to set the joystick center position
        public void SetCenterPosition()
        {
            var hCenter = HorizontalInputPort.ReadValue();
            var vCenter = VerticalInputPort.ReadValue();

            Calibration = new JoystickCalibration(
                hCenter, Calibration.HorizontalMin, Calibration.HorizontalMax,
                vCenter, Calibration.VerticalMin, Calibration.VerticalMax,
                Calibration.DeadZone);
        }
Пример #3
0
        //call to set the joystick center position
        public async Task SetCenterPosition()
        {
            var hCenter = await HorizontalInputPort.Read(1);

            var vCenter = await VerticalInputPort.Read(1);

            Calibration = new JoystickCalibration(
                hCenter, Calibration.HorizontalMin, Calibration.HorizontalMax,
                vCenter, Calibration.VerticalMin, Calibration.VerticalMax,
                Calibration.DeadZone);
        }
Пример #4
0
        void InitSubscriptions()
        {
            HorizontalInputPort.Subscribe
            (
                new FilterableObserver <FloatChangeResult, float>(
                    h => {
                HorizontalValue = h.New;
                if ((Math.Abs(h.Old - Calibration.HorizontalCenter) < Calibration.DeadZone) &&
                    (Math.Abs(h.New - Calibration.HorizontalCenter) < Calibration.DeadZone))
                {
                    return;
                }

                var oldH = GetNormalizedPosition(h.Old, true);
                var newH = GetNormalizedPosition(h.New, true);
                var v    = GetNormalizedPosition(VerticalValue, false);

                RaiseEventsAndNotify
                (
                    new JoystickPositionChangeResult(
                        new JoystickPosition(newH, v),
                        new JoystickPosition(oldH, v)
                        )
                );
            }
                    )
            );

            VerticalInputPort.Subscribe
            (
                new FilterableObserver <FloatChangeResult, float>(
                    v => {
                VerticalValue = v.New;
                if ((Math.Abs(v.Old - Calibration.VerticalCenter) < Calibration.DeadZone) &&
                    (Math.Abs(v.New - Calibration.VerticalCenter) < Calibration.DeadZone))
                {
                    return;
                }

                var oldV = GetNormalizedPosition(v.Old, false);
                var newV = GetNormalizedPosition(v.New, false);
                var h    = GetNormalizedPosition(HorizontalValue, true);

                RaiseEventsAndNotify
                (
                    new JoystickPositionChangeResult(
                        new JoystickPosition(h, newV),
                        new JoystickPosition(h, oldV)
                        )
                );
            }
                    )
            );
        }
Пример #5
0
        public async Task SetRange(int duration)
        {
            var timeoutTask = Task.Delay(duration);

            float h, v;

            while (timeoutTask.IsCompleted == false)
            {
                h = await HorizontalInputPort.Read();

                v = await VerticalInputPort.Read();
            }
        }
Пример #6
0
        public void SetRange(int duration)
        {
            var timeoutTask = DateTime.Now.AddMilliseconds(duration);

            float h, v;
            var   tick = DateTime.Now;

            while (tick < timeoutTask)
            {
                h = HorizontalInputPort.ReadValue();
                v = VerticalInputPort.ReadValue();
                Thread.Sleep(20);
                tick = DateTime.Now;
            }
        }
Пример #7
0
        void StartSamplingVertical()
        {
            int sampleCount            = samplingSettingVertical.sampleCount;
            int sampleIntervalDuration = samplingSettingVertical.sampleIntervalDuration;
            int standbyDuration        = samplingSettingVertical.standbyDuration;
            var counter = 0;
            var total   = 0f;
            var average = 0f;

            for (int i = 0; i < sampleCount; i++)
            {
                // read the voltage
                var temp = VerticalInputPort.ReadValue();


                /*
                 * if ((Math.Abs(h.Old - Calibration.VerticalCenter) < Calibration.DeadZone) &&
                 *  (Math.Abs(h.New - Calibration.VerticalCenter) < Calibration.DeadZone))
                 * {
                 *  return;
                 * }
                 */
                total += temp;
                counter++;
                average = total / counter;
                if (!IsSamplingVertical)
                {
                    break;
                }
                Thread.Sleep(sampleIntervalDuration);
            }
            IsSamplingVertical = false;
            VerticalValue      = average;
            var newV = GetNormalizedPosition(VerticalValue, true);
            var h    = GetNormalizedPosition(HorizontalValue, false);

            RaiseEventsAndNotify
            (

                new JoystickPosition(h, newV)

            );
        }
Пример #8
0
 public void StopUpdating()
 {
     HorizontalInputPort.StopSampling();
     VerticalInputPort.StopSampling();
 }
Пример #9
0
 public Task <float> GetVerticalValue()
 {
     return(VerticalInputPort.Read());
 }
Пример #10
0
 public float GetVerticalValue()
 {
     return(VerticalInputPort.ReadValue());
 }