• Viernes 3 de Mayo de 2024, 14:36

Autor Tema: [Código Fuente] Controlar El Joystick Desde Visual Basic con el API  (Leído 8918 veces)

DrakerDG

  • Miembro activo
  • **
  • Mensajes: 72
    • Ver Perfil
    • http://drakerdg.xbot.es/wordpress/
[Código Fuente] Controlar El Joystick Desde Visual Basic con el API
« en: Miércoles 7 de Septiembre de 2005, 17:30 »
0
Este ejemplo puede detectar los joystick instalados en el sistema y si están conectados. También saber cuantos botones y ejes tiene. Con el apoyo de graficas y sonido muestra el estado del joystick seleccionado.  Produce diferentes sonidos cuando se presionan los botones o se mueven las palancas del joystick y/o pad.  Muestra los valores que detecta por medio del registro de consulta, en este caso el JOYINFOEX de la función joyGetPosEx.  Se puede cambiar ID del joystick en tiempo de ejecución si hay más de uno conectados al sistema.

Para el desarrollo del mismo utilicé varias funciones:

joyGetPosEx

joyGetDevCaps

joyGetNumDevs

Con sus respectivas estructuras de registros:

JOYINFOEX

JOYCAPS

Adicionalmente utilicé otra función del API para reproducir archivos WAV, por ejemplo: Al pulsar un botón del joystick.

sndPlaySound



Autor: DrakerDG
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
Saludos desde Guatemala, C. A.
Electrobotics

culd

  • Nuevo Miembro
  • *
  • Mensajes: 18
    • Ver Perfil
No funciona con mis joysticks
« Respuesta #1 en: Martes 20 de Febrero de 2007, 18:37 »
0
Vos sabes que yo tengo un par de joystick en el mismo usb, es el sistema TWIN, son genericos, me lo detecta dos joystick pero unos de microsoft, y cuando aprieto alguna tecla, etc no funciona nada de nada... Solo muestra unos joystick que nada que ver con los mios y no anda.

culd

  • Nuevo Miembro
  • *
  • Mensajes: 18
    • Ver Perfil
RE: Comentario
« Respuesta #2 en: Miércoles 21 de Febrero de 2007, 13:22 »
0
Mis joystick, Windows lo detecta asi:
*Twin USB Joystick
*Twin USB Joystick
No diferencia del 1 del 2... Salvo que entre a su configuracion por separado.

El programa este, detecta lo siguiente:
*Joistick 3 4 Axes 12 Buttons (Joystick Microsoft Controler)
*Joistick 4 4 Axes 12 Buttons (Joystick Microsoft Controler)
Solo lo detecta cuando conecto el Joystick.

El problema es que cuando aprieto cualquier tecla, no pasa nada, no detecta absolutamente nada.
En JoystickStatus que aparece mas abajo dice Unknown.

Buscando y buscando, encontre un proyecto como directx, y ese la verdad que detecta mi joystick y marca todo menos los analogicos... Pero lo que yo necesito es que me detecte la pulsasion sin que este el form de focus, es decir si tengo una ventana del word y estoy escribiendo, quiero que me detecte la pulsacion igual, aunque no este como foco el form.
El proyecto es dx_lib32, y la verdad que de una detecto.

PD: Fijate si lo podes solucionar
culd_@hotmail.com es mi correo

DrakerDG

  • Miembro activo
  • **
  • Mensajes: 72
    • Ver Perfil
    • http://drakerdg.xbot.es/wordpress/
Re: No funciona con mis joysticks
« Respuesta #3 en: Miércoles 28 de Marzo de 2007, 06:49 »
0
Hola culd:
   Disculpa que hasta ahora te contesto pero he estado un poco ocupado en el trabajo ya que viajo mucho.  Según lo que mencionas, te comento.

El cuadro combinado no indica el nombre de fabrica de cada joystick como aparece en windows, si no lo siguiente:

*Joistick 3 4 Axes 12 Buttons (Joystick Microsoft Controler)
*Joistick 4 4 Axes 12 Buttons (Joystick Microsoft Controler)

Primero el nombre generico:  Joystick, despues el numero de dispositivo que en tu caso son el 3 y 4, luego el numero de ejes (Axes) que para tus joystick son cuatro ejes, por darte un ejemplo la palanca ocupa 2, los otros dos podrian ser el control de altitud y/o mira.  Por ultimo la cantidad de botones (Buttons) que en teoria deberían de tener 12 cada uno.

Lo que no muy entiendo es porque te los reconoce como dispositivos 3 y 4, esto ocurre solo si tienes conectados otros 2 y que por ejemplo estén conectados y funcionando antes de conectar tus joystick gemelos.  

En el cuadro combinado aparece la tabla de dispositivos maximos que soporta tu PC, aunque no esten conectados, cuando uno los conecta y carga el drive, se posicionan desde el primero hasta llenar los espacios segun la cantidad de joystick conectados.  

Ahora respecto al JoystickStatus donde aparece unknow podemos hacer lo siguiente:

En el codigo del modulo modJoystick puedes modificar la funcion JoyEst de la siguiente manera:

Public Function JoyEst(ByVal IDx As Long) As String
'Indentify the Joystick status.
Dim xRes As String
Select Case IDx
   Case JOYERR_NOERROR
       xRes = "Ready"
   Case MMSYSERR_NODRIVER
       xRes = "No device driver present"
   Case MMSYSERR_INVALPARAM
       xRes = "Invalid parameter passed"
   Case JOYERR_PARMS
       xRes = "Invalid ID"
   Case JOYERR_NOCANDO
       xRes = "Request not completed"
   Case JOYERR_UNPLUGGED
       xRes = "Unplugged"
   Case Else
       xRes = "Unknown"
End Select
JoyEst = "(" & xRes & ") " & IDx   'Cambio
End Function

Lo unico que se modifica es la penultima lina agregandole & IDx, con esto en JoystickStatus aparecera un numero al final.  Necesito que lo copies por ahí y me lo envies.

Aparte enviame el listado de joysticks que aparecen en tu cuadro combinado desde el primero al ultimo.  Para hacer esto conecta antes tus joystick y asegurate que windows los reconoce, inicia la aplicacion y tomas los datos.  Intenta posicionarte en cada dispositivo del cuadro combinado e intenta activar botones o lo que sea de tus joysticks y me cuentas que pasa.

Puedes tomar una foto o un Printscreen o si puedes un video de lo que pasa, entre mas informacion me envies, de mejor manera te puedeo ayudar.

Atentamente
          DrakerDG
Saludos desde Guatemala, C. A.
Electrobotics

el_mitico

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
manejo por joystick brazo robotico
« Respuesta #4 en: Miércoles 6 de Junio de 2007, 07:17 »
0
me preguntaba de que manera puedo sacar la señal de control del joystick por un puerto serie, paralelo o usb por VB,  es para controlar un brazo robotico.  Además me gustaria añadir el manejo  por teclado o raton.  Culaquier ayuda se agradece.  saludos

davincci

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Activar cronometro
« Respuesta #5 en: Miércoles 3 de Septiembre de 2008, 19:47 »
0
Hola a todos me gusto este ejemplo pero no encuentro la forma de como activar un cronometro hecho en visual basic es decir que por ejemplo cuando presiona la tecla 1 del joystic arramque el cronometro cuando presione dos pare..algo asi. Seria interesante para empezar a crear cosas como juegos. Gracias si me pueden ayudar con esto

marcogr87

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
builder c++
« Respuesta #6 en: Lunes 8 de Septiembre de 2008, 04:05 »
0
amigos alguno conoce alguna librería o algo para hacer los mismo que hace el progama anterior pero en builder c++.

gracias de antemano

argalcr

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Felicidades
« Respuesta #7 en: Martes 22 de Septiembre de 2009, 18:45 »
0
Hola quiero decirte que haces un excelente trabajo podrías enviarme el código fuente para apoyarme en un proyecto que estoy realizando. Gracias!

Diego32

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Consulta
« Respuesta #8 en: Martes 10 de Noviembre de 2009, 02:22 »
0
Hola!
Les comento lo que quiero hacer!
Es un joystick por el puerto serie!!
La idea es asi tengo un mando analogico y algunas teclas digitales.
Esto lo conecto a un pic el cual hace de intermediario entre la pc y el joystick.
El pic se comunica con la pc por medio del puerto serie. En la pc recolecto los datos con el visual basic. Hasta aca todo bien! : )
Ahora como hago para el juego interprete los datos recolectados por el visual?
Como hago el ultimo vinculo que me falta???? Datos -->?--> Juego
saludos