Visual Basic - por favor, un ejemplo de control de joystick

Life is soft - evento anual de software empresarial
 
Vista:

por favor, un ejemplo de control de joystick

Publicado por Javier (18 intervenciones) el 17/10/2007 20:51:45
Hola:

Mi nivel de Visual Basic no es suficiente para resolver el problema que os cuento. He encontrado esta información sobre la detección y control de joystick, pero no soy capaz de realizar un código que funcione y me diga si está conectado o no el joystick así como qué tecla del mismo ha sido pulsada.

He pinchado el enlace del ejemplo pero no funciona el enlace.

¿Me puede alguien mandar un pequeño ejemplo que funcione al que cogerle el hilo?

Gracias.

Manejo del Joystick en Visual Basic

Función joyGetDevCaps

Declare Function joyGetDevCaps Lib "winmm.dll" Alias "joyGetDevCapsA" (ByVal id As Long, ByVal lpCaps As JOYCAPS, ByVal uSize As Long) As Long
JoyGetDevCaps lee diversa información sobre el joystick. La información que recibe la pone en la variable lpCaps. Sin embargo no da la posición del joystick.
Si el valor de esta función es 0 es que el joystick esta conectado. Cualquier otro resultado indica que no hay instalado un joystick.

Parámetros.
id - El nº del joystick para comenzar a leer, empezando desde el 0
lpCaps - Variable que recibe la información del joystick.
uSize -Longitud en bytes de lpCaps

Ejemplo:

' Chequeo para ver sí el joystick esta funcionado.
Dim cap As JOYCAPS
x = joyGetDevCaps(0, cap, Len(cap))
If x = 0 Then Debug.Print "Joystick #1 encontrado"

Función GetNumDevs

Declare Function joyGetNumDevs Lib "winmm.dll" () As Long
Esta función retorna el nº de joysticks que están configurados en el panel de control. Esto no significa que todos ellos estén conectados. Es preferible
utilzar la anterior opción.

Ejemplo:

'Cuantos josticks tienes configurados
x = joyGetNumDevs()
Debug.Print "Tienes configurados "; x; "joysticks."

joyGetPos Function

Declare Function joyGetPos Lib "winmm.dll" (ByVal uJoyID As Long, pji As JOYINFO) As Long
Esta función retorna las coordenadas del joystick así como su status. Esta información se pasa a la variable pji. La función retorna 0 si el joystick esta
configurado, sino devuelve otro valor.

Parámetros.
uJoyID - El nº del joystick en el que se esta trabajando.
pji - Variable donde se encuentran el status y las coordenas del joystick.

Ejemplo

Dim pos As JOYINFO
x = joyGetPos(0, pos)
Debug.Print "Coordinates:" pos.wXpos; pos.wYpos

A continuación te paso los registros para que veas todas sus variables.

JOYINFO Type

Type JOYINFO
wXpos As Long
wYpos As Long
wZpos As Long
wButtons As Long
End Type
Este registro retorna las posiciones X,Y,Z y los botones pulsados del joystick.

wXpos - Coordenada X
wYpos - Coordenada Y
wZpos - Cordenada Z
wButtons - Valor devuelto si se ha pulsado un boton, 1 para el boton #1, 2 para el botón #2, etc.

JOYCAPS Type

Type JOYCAPS
wMid As Integer
wPid As Integer
szPname As String * 32
wXmin As Long
wXmax As Long
wYmin As Long
wYmax As Long
wZmin As Long
wZmax As Long
wNumButtons As Long
wPeriodMin As Long
wPeriodMax As Long
End Type
Este registro devuelve información sobre el joystick, NO devuelve las coordenadas. Normalmente, según adaptadores retorna valores del joystick (rangos)
y número de botones.

WMid - ?
WPid - ?
szPname - Nombre del driver del joystick
wXmin - Coordenada X mínima.
wXmax - Coordenada X máxima.
wYmin - Coordenada Y mínima.
wYmax - Coordenada Y máxima.
wZmin - Coordenada Z mínima.
wZmax - Coordenada Z máxima.
wNumButtons - Nº de botones del joystick.
wPeriodMin - ?
wPeriodMax - ?

Pulsa
aquí
para bajarte el codigo fuente de un ejemplo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder