Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Ayuda Con Clase Para Joystick
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Ayuda Con Clase Para Joystick 
 
Hola a todos tengo una clase para el manejo de un Joystick pero me surge un problema.
PRIVATE jsdev AS Process

PUBLIC SUB _new(OPTIONAL device AS String)
  
  IF device = "" THEN device = "/dev/input/js0"
  ' the interpreter dies when we try to read from /dev/input/js0 as a file
  ' saying "invalid argument", so we have to run cat
  jsdev = EXEC ["cat", device] FOR READ AS "Device"
  
END

PUBLIC SUB Close()
  
  ' kill the cat process if it's still going
  TRY jsdev.Kill
  
END

PUBLIC SUB Device_Read()
  
    DIM stamp AS Integer
    DIM value AS Short
    DIM myevent AS Byte
    DIM number AS Byte
    DIM test AS String
    
    ' each joystick event produces 8 bytes
    READ #jsdev, stamp, 4 ' 4 bytes
    READ #jsdev, value, 2 ' 2 bytes
    READ #jsdev, myevent, 1 ' 1 byte
    READ #jsdev, number, 1 ' 1 byte
    
    IF myevent AND 1 THEN ' button
      IF value THEN ' pressed
        PRINT "Got button press"
        RAISE ButtonPress(number)
      ELSE ' released
        PRINT "Got button release"
        RAISE ButtonRelease(number)
      ENDIF
    ELSE IF myevent AND 2 THEN ' joystick axis
      RAISE StickMove(number, value)
    ELSE
      PRINT "Unhandled event: myevent is " & myevent
    ENDIF
    
END

EVENT ButtonPress(ButtonNum AS Integer)
EVENT ButtonRelease(ButtonNum AS Integer)
EVENT StickMove(Axis AS Integer, Position AS Integer)


Los 3 eventos funcionan pero ButtonPress() solo se ejecuta una vez.
Me explico:
Si quiero que mientras esté pesionado un boton, el formulario se mueva 1 pixel a a derecha, no me vale con poner en el evento buttonpress()



Solo lo hace una vez, y para que se mueva tengo que estar presionando repetidamente el boton.
¿Alguna idea para solucionarlo?
 




===================
Sube tus clases, módulos o funciones a Mi Web

No soy un completo inútil. Por lo menos sirvo de mal ejemplo
 
Juan Luis Lopez - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Ayuda Con Clase Para Joystick 
 
Cuál es el significado de estos test booleanos:

    IF myevent AND 1 THEN ' button
      IF value THEN ' pressed
        ...
      ENDIF
    ELSE IF myevent AND 2 THEN ' joystick axis
 


Para mí AND 1 y AND 2 no tienen sentido, el test if myevent pasará únicamente cuando el valor de myevent sea -1 ¿esto tiene sentido para vos?

Creo que escribiste el código en un estilo C, pero no deberías asumir que los valores booleanos se traducen a los mismos valores numéricos que en C. Deberías usar los operadores de comparación para verificar que las variables toman el valor que esperas (ej. IF myevent = 3).
 




===================
Cómo programar con Gambas

Speed Books: informática libre.
 
fabianfv - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Ayuda, Crear Clase Manipule Una Tabla En M... joseagch Bases de Datos 6 Miercoles, 26 Octobre 2011, 00:16 Ver último mensaje
jsbsan
No hay nuevos mensajes Ayuda En Creacion De Clase Cronometro claudito General 1 Sabado, 22 Junio 2013, 23:36 Ver último mensaje
jsbsan
No hay nuevos mensajes Ayuda Con La Construccion De Clase "P... v3ctor Controles/Librerías/Componentes 10 Viernes, 22 Abril 2016, 23:14 Ver último mensaje
vicr
No hay nuevos mensajes Clase Latex: Para Crear Documentos Y Repor... jsbsan Aplicaciones/Fragmentos de Código 43 Viernes, 17 Enero 2020, 21:05 Ver último mensaje
vuott
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron