예제 #1
0
        private void Puerto_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            AnalogicoEstado  estado        = AnalogicoHelper.ParsearLinea(this.puerto.ReadLine());
            JoystickPosicion nuevaPosicion = AnalogicoHelper.DeterminarPosicion(estado);

            this.CheckPosicion(nuevaPosicion);
            this.CheckBoton(estado.BotonPresionado);
        }
예제 #2
0
        public static JoystickPosicion DeterminarPosicion(AnalogicoEstado estado)
        {
            int minValue = 300;
            int maxValue = 700;

            if (estado.X > maxValue)
            {
                if (estado.Y < minValue)
                {
                    return(JoystickPosicion.AbajoIzquierda);
                }

                if (estado.Y > maxValue)
                {
                    return(JoystickPosicion.ArribaIzquierda);
                }

                return(JoystickPosicion.Izquierda);
            }

            if (estado.X < minValue)
            {
                if (estado.Y < minValue)
                {
                    return(JoystickPosicion.AbajoDerecha);
                }

                if (estado.Y > maxValue)
                {
                    return(JoystickPosicion.ArribaDerecha);
                }

                return(JoystickPosicion.Derecha);
            }

            if (estado.Y < minValue)
            {
                return(JoystickPosicion.Abajo);
            }

            if (estado.Y > maxValue)
            {
                return(JoystickPosicion.Arriba);
            }

            return(JoystickPosicion.Centro);
        }