INICIO > Software  > > Gestor Joystick USB >  
GestorJoystickUSB_018.jpeg
SOFTWARE DE GESTIÓN DE DISPOSITIVOS JOYSTICK POR USB
  • MOTIVACIONES
  • Son varios los motivos que me llevan a realizar este proyecto, por un lado es el hecho de que en la carrera el único puerto de comunicaciones usado en las practicas es el serie, por otro lado el uso del puerto serie esta en desuso y suele se sustituido por el puerto USB que además siempre he tenido un interés en saber como se maneja.

  • PLANTEAMIENTO DEL PROYECTO
  • Este proyecto se lleva a cabo en varias etapas bien diferenciadas.

    • En primer lugar me documento sobre el funcionamiento del puerto USB, para ello tiro de lo que esta disponible, Internet y la biografía que pueda encontrar.
    • Como lo que pretendo es hacer un programa que sea capaz de reconocer dispositivos conectados al puerto USB decido usar un joystick comercial de un juego llamado "Flight Simulator" y así mato dos pájaros de un tiro, por que así podré usarlo para las distinta aplicaciones que se me vallan ocurriendo, movimiento remoto de WebCam, conducción de locomotoras, brazo robótico, etc.
    • También, como este proyecto quiero que tenga un interfaz grafico de usuario GUI presentable, decido hacerlo en Visual Basic.
    • La parte que deseo hacer con este proyecto es la referente como ya he dicho a un interfaz grafico que pueda reconocer movimientos en un joystick, para lo que tengo que estudiar nuevas funciones de la API de Windows.
  • OBJETIVOS
  • Los objetivos que me propongo en este proyecto no son solo son los concernientes a su implementación que es en VB6 sino también a conceptos teóricos:

  • Estudio del estándar USB
  • Estudio de la API de Windows para el uso de dispositivos USB
  • Estudio de la interacción entre la API de Windows y Visual Basic
  • Creación de un GUI adaptado al joystick
  • DESARROLLO DEL PROYECTO
  • Pues como he comentado anteriormente, en primer, lo primero que hago es documentarme sobre el estándar USB, y en segundo lugar elegir el dispositivo joystick que voy a usar. Después de esto, paso a estudiar el funcionamiento e interacción de la API con Visual Basic, para así crear el programa con su GUI mas idóneo. Teniendo esto claro, paso a desarrollar el GUI que es el encargado de mostrar los cambios que se van produciendo en el joystick, siendo estos cambios los siguientes:

  • Dispone de dos desplazamientos verticales e independientes entre si. En el juego original uno es usado para la potencia del motor (mando izquierdo) y el otro para los alerones (mando derecho)
  • Dispone de dos desplazamientos horizontales e independientes entre si. En el juego original uno es usado para la timón (mando izquierdo) y el otro para los giros con los alerones (mando derecho)
  • Estos movimientos son representados por 2 barras verticales y 2 horizontales con se puede ver en la imagen
  • IMAGENES DEL PROYECTO
  • Pues como he comentado anteriormente, en primer, lo primero que hago es documentarme sobre el estándar USB, y en segundo lugar elegir el dispositivo joystick que voy a usar. Después de esto, paso a estudiar el funcionamiento e interacción de la API con Visual Basic, para así crear el programa con su GUI mas idóneo. Teniendo esto claro, paso a desarrollar el GUI que es el encargado de mostrar los cambios que se van produciendo en el joystick, siendo estos cambios los siguientes:

  • Dispone de dos desplazamientos verticales e independientes entre si. En el juego original uno es usado para la potencia del motor (mando izquierdo) y el otro para los alerones (mando derecho)
  • Dispone de dos desplazamientos horizontales e independientes entre si. En el juego original uno es usado para la timón (mando izquierdo) y el otro para los giros con los alerones (mando derecho)
  • Estos movimientos son representados por 2 barras verticales y 2 horizontales con se puede ver en la imagen

  • GestorJoystickUSB_000.jpg
  • VIDEO DEL PROYECTO
  • Movimientos del joystick

    En el siguiente video se puede observar con los barras van registrando el valor que va cogiendo el joystick según este va aumentando o disminuyendo, haciendo como se puede observar en tiempo real, aunque con la calidad del video es dificil apreciarlo haber si subo otro video mas nitido.

    --> Cliquea sobre el video para verlo en la pantalla completa.

 

A continuacion presento un video que muestra unicamente el interfaz del programa, en el se puede observar mejor como las barras del interfaz van registrando el valor que va cogiendo el joystick en cada momento. Tampoco es que se vea perfecto este video pero nos podemos hacer una idea de como el programa va registrando los cambios en los mandos del joystick.

  • CONCLUSIONES
  • Una vez conseguido el objetivo es hora de llegar a las conclusiones:

    • Para manejar un dispositivo a través de USB es necesario manejar unas cuantas APIs, lo que complica bastante el desarrollo, esto me izo en algún momento el plantearme dejar el proyecto ya que no disponía de mucho tiempo y la finalidad de estos proyectos es aprender algo nuevo mientras se disfruta de ello, pero finalmente después del túnel siempre esta la luz y lo conseguí.
    • El manejo del USB es mas complejo y difícil de manejar que el puerto serie ya que conlleva el uso de mas APIs para su uso.

  • LÍNEAS FUTURAS
  • Como otros proyectos que he realizado anteriormente, este proyecto fue iniciado por el interés que tenia por aprender a manejar el puerto USB, ya que es un puerto de gran uso y en la carrera solo vi el serie. Habiendo realizado este proyecto Este conocimiento del USB me abra las puertas a futuros proyectos basados en este.

    • Este software me permite poder usar este o otro joystick en otras aplicaciones como por ejemplo el control ferroviario de mi maqueta, movimiento remoto de objetos en red local o a traves de internet, seguimiento de objetos con cámara web, etc.
    • Con este desarrollo, he conseguido crear un software que reconoce dispositivos USB y que además es capaz de registrar cambios en el, esto me permite poder plantearme nuevos desarrollos basados en USB y así poder desarrollar hardware que se pueda conectar al PC a través del USB y así sustituir el uso del puerto serie.