D:/Basile/VisualCppProjects/hydroMEX3/hydroMEX3/joystick/joystick_PC.cpp

Go to the documentation of this file.
00001 
00009 #include "joystick_PC.h"
00010 
00011 #include "stdafx.h"
00012 
00013 #include <windows.h>
00014 #include <mmsystem.h> 
00015 
00016 
00017 
00018 //Configurer SDK:
00019 //http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/
00020 //Joystick lib:
00021 //http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/dnargame/html/msdn_dos2win2.asp
00022 //Utiliser joystick windoze:
00023 //http://tcharles.developpez.com/joystick/
00024 
00025 
00026 
00027 JOYINFOEX ActualPos; // Etat actuel et dernier état du joystick
00028 DWORD dwBoutons; // Masque pour récupérer l'état des boutons
00029 UINT uMax[2], uMin[2]; // Maximums et minimums de chacun des axes
00030 UINT uPoolPeriod; // Temps entre deux intérogations du joystick
00031 JOYCAPS InfosCaps; // Infos sur les capacités du joystick
00032 BOOL bStop; // Test d'arrêt de la boucle (bouton 4)
00033 POINT Curseur; // Curseur de la souris
00034 
00035 
00036 int joystick_init()
00037 {
00038 
00039 //      AfficherJoysConnectes();
00040 //      AfficherCaracs(0);
00041 
00042         //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
00043 
00044         // initialisation du temps d'attente avec un minimum de 20 millisecondes
00045     uPoolPeriod = 20;
00046 
00047         if (joyGetDevCaps(JOYSTICKID1, &InfosCaps, sizeof(JOYCAPS)) != JOYERR_NOERROR) return 0;
00048 
00049 
00050     // Initialisation de la structure informationnelle avec sa taille
00051     ActualPos.dwSize = sizeof(JOYINFOEX);
00052 
00053     // Initialisation des autres membres que la taille de la structure à 0
00054     // (Plus rapide que d'affecter 0 à chaque élément. En effet, il est
00055     // obligatoire que tous les membres soient nuls sous peine d'échec)
00056     memset(&(ActualPos.dwFlags),0,sizeof(JOYINFOEX) - sizeof(DWORD));
00057     // Initialisation des variables d'état actuel avant de lancer la boucle
00058     // de gestion du joystick
00059     ActualPos.dwFlags = JOY_RETURNALL;
00060     joyGetPosEx(JOYSTICKID1,&ActualPos);
00061     dwBoutons = ActualPos.dwButtons;
00062 
00063         return 1;
00064 }
00065 
00066 
00067 
00068 void joystick_getXYZR(float *X, float *Y, float *Z, float *R, bool doX, bool doY, bool doZ, bool doR)
00069 {
00070         // on réinitialise ActualPos avant d'appeller l'API
00071     // pour savoir la position actuelle du joystick
00072     memset(&(ActualPos.dwFlags),0,sizeof(JOYINFOEX) - sizeof(DWORD));
00073     ActualPos.dwFlags = JOY_RETURNALL;
00074     joyGetPosEx(JOYSTICKID1,&ActualPos);
00075 
00076         if (doX) {*X = (float(ActualPos.dwXpos)/32768.0f) - 1.0f;}
00077         if (doY) {*Y = (float(ActualPos.dwYpos)/32768.0f) - 1.0f;}
00078 
00079         if (doZ) {*Z = (float(ActualPos.dwZpos)/32768.0f) - 1.0f;}
00080         if (doR) {*R = (float(ActualPos.dwRpos)/32768.0f) - 1.0f;}
00081 
00082         //std::cout<< "x: " << ActualPos.dwXpos << "y: " << ActualPos.dwYpos << "\n";
00083         //printf("x: %5d y: %5d\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b", ActualPos.dwXpos, ActualPos.dwYpos);
00084 
00085         // On patiente le avant de retester la position du joystick
00086     //Sleep(uPoolPeriod);
00087 }
00088 
00089 void joystick_close() //just in case MAC OSX needs such a function...
00090 {
00091 }

Generated on Fri Jun 9 19:10:21 2006 for hydroMex3 by  doxygen 1.4.6-NO