RetourForum Delphi
Nouveau compte - Se connecter - Perdu votre mot de passe?Recherche: Utilisateur - Message

Index > Forum général > Gérer le JoyStickNouveau post - Répondre
djidjidji
visiteur
Message Gérer le JoyStick message: éditerle 02/09/06 à 16h11

Bonjour,
Je voudrais que mon application gère le joystick.
J'ai trouvé sur le site une façon de le faire en utilisant un TTimer qui récupère fréquemment l'état du joystick. Mais c'est pas génial, génial.
Ce que je voudrais plutôt faire c'est gérer directement les messages.
Alors j'inclus 'mmsystem'
Je fais:
 

code


procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMessage := TraiteMessages;
end;


Puis
 

code


Procedure Tform1.TraiteMessages(Var msg : TMsg; Var Handled: boolean);
var ...
begin
  With msg do
  begin
    ... 
    IF Message = MM_JOY1BUTTONDOWN  //par exemple
        then ...
  end;
...
end;



Pas de problème à la compilation, mais le hic c'est que ça ne fait rien du tout.
J'aimerais bien savoir pourquoi...

rb
visiteur
Message Re: Gérer le JoyStick message: éditerle 02/09/06 à 17h25

ya un exemple à voir sous forme de composant
http://www.torry.net/vcl/system/otherhardware/hgjoystickex.zip

systmd
visiteur
Content Re: Gérer le JoyStick message: éditerle 03/09/06 à 00h17

Si ta manette et sur le port USB, voiçi un petit exemple qui utilise MMSystem

 

code



// Contrôle de la manette de jeu sur port USB (10 boutons + les 4 flêches)

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs ,ExtCtrls, StdCtrls,
  // MMSystem pour la manette de jeu;
  MMSystem ;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    Panel1: TPanel;
    Label1: TLabel;
    procedure Timer1Timer(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;


var
    Form1: TForm1;

    //La manette de jeu
    ManetteInfo  : TJoyInfo;
    ManetteResult : MMResult;
    ManetteBouton : Word; // Etat des boutons Bit0 : Btn 1, Bit1 : Btn 2 etc

    // Etat de la connection manette de jeu
    Connection : Boolean;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
// Test si la manette est connectée.
ManetteResult := JoyGetPos(JOYSTICKID1, @ManetteInfo);
    If ManetteResult = JOYERR_NOERROR Then
          begin
          Connection := True;
          Panel1.Caption:='Manette Connectée';
          Panel1.Color:=ClLime;
          end else
          begin
          Connection := False;
          Panel1.Caption:='Pas de manette Connectée';
          Panel1.Color:=ClRed;
          end;
if  Connection = True then
            begin
            ManetteBouton := ManetteInfo.wButtons;

            //Les Boutons
            If ((ManetteBouton And 1) = 1)      Then Label1.Caption:='Bouton 1' else
            If ((ManetteBouton And 2) = 2)      Then Label1.Caption:='Bouton 2' else
            If ((ManetteBouton And 4) = 4)      Then Label1.Caption:='Bouton 3' else
            If ((ManetteBouton And 8) = 8)      Then Label1.Caption:='Bouton 4' else
            If ((ManetteBouton And 16) = 16)    Then Label1.Caption:='Bouton 5' else
            If ((ManetteBouton And 32) = 32)    Then Label1.Caption:='Bouton 6' else
            If ((ManetteBouton And 64) = 64)    Then Label1.Caption:='Bouton 7' else
            If ((ManetteBouton And 128) = 128)  Then Label1.Caption:='Bouton 8' else
            If ((ManetteBouton And 256) = 256)  Then Label1.Caption:='Bouton 9' else
            If ((ManetteBouton And 512) = 512)  Then Label1.Caption:='Bouton 10' else

            // Les flêches
            //      0 : pour gauche ou haut
            //  32767 : Point milieu
            //  65535 : pour droite et bas
            If ((ManetteInfo.wYpos) = 0)        Then Label1.Caption:='HAUT' else
            If ((ManetteInfo.wYpos) = 65535)    Then Label1.Caption:='BAS' else
            If ((ManetteInfo.wXpos) = 0)        Then Label1.Caption:='DROITE' else
            If ((ManetteInfo.wXpos) = 65535)    Then Label1.Caption:='GAUCHE' else

            Label1.Caption:='';
            end; 


end;

end.


djidjidji
visiteur
Message Re: Gérer le JoyStick message: éditerle 03/09/06 à 01h40

Merci pour vos réClin d'oeil langue onses!
Même si en fait pour le code avec le TTimer c'était à peu de chose près celui que je citai et que je voulais remplacer systmd.
Sinon pour le composant à mon avis si je m'y penche un peu (voire beaucoup) je devrais y trouver mon bohneur même si ma mononucléose chronique m'aurait fait préférer une simple réClin d'oeil langue onse Clin d'oeil , mais j'ai passé je sais pas combien de temps à essayer de retrouver comment installer un composant (je l'ai pas fait souvent et ça date) et après moulte frustration et consultation d'aide, soit je suis le dernier des ***, soit je deviens fou, soit j'ai un bout de menu qui a disparu!
Pour ma santé mentale s'il vous plaît dites-moi: dans le menu 'composant' on est bien sencés trouver 'installer un composant' non? (Delphi 2005 Perso). Parce que là soit c'est delphi qui bogue soit c'est moi. J'ai eu beau essayer de bidouiller pas moyen de le remettre 8ö
Si c'est delphi, peut-on y rémédier? Si c'est que moi, comment faut-il faire alors?
En plus je suis sûr que c'est un truc tout bête...

rb
visiteur
Message Re: Gérer le JoyStick message: éditerle 03/09/06 à 11h37

INSTALLER UN COMPOSANT SOUS DELPHI 2005

. Faire 'Nouveau' (sur la page Bienvenue ou dans le Menu fichier)
. Sélectionnez dans la Catégorie: - Projet Delphi          (pour un composant Delphi)
                                                  - Projet Delphi pour .NET (pour un composant .NET)
. Choisir 'Package' puis OK
. Dans la fenêtre Gestionnaire de Projet:
  - Clique droit sur le dossier 'Contains'
  - 'Ajouter' (dans le menu popup)
  - Parcourir (Sélectionnez le fichier .pas du composant)
  - Ok pour valider et sortir de la fenêtre Ajout.
  - A ce niveau là vous pouvez Enregistrer et faire des modifs sur le composant si nécessaire sinon passez à la suite
  - Encore dans la fenêtre Gestionnaire de Projet faire clique droit sur 'LeNomduPackage.bpl' (Package1.bpl par défaut)
  - Et enfin choisir 'Installer' (dans le menu popup) et vous aurez un message de confirmation.

djidjidji
visiteur
Content Re: Gérer le JoyStick message: éditerle 03/09/06 à 11h53

merci RB trop sympa!
Dommage que je voie ça juste au moment où je viens de réussir Sourire des yeux .
Et désolé pour la question de boulet...

djidjidji
visiteur
Question Re: Gérer le JoyStick message: éditerle 03/09/06 à 12h13

Hum... j'arrive pas à utiliser ce composant...
Donc soit je joue encore le boulet soit il ne gère pas les joystick par port USB.
D'ailleurs maintenant que j'y pense j'aurais peut-être du préciser plus tôt que c'était uniquement par port USB que ça m'intéressait...
Boulet forever Sourire des yeux

Jipé
visiteur
Message Re: Gérer le JoyStick message: éditerle 03/09/06 à 16h05

Et un grain de sel, un !
@systmd:
 

quote


Si ta manette est sur le port USB, voiçi un petit exemple qui utilise MMSystem


Ben moi qui ne connait rien à l'USB sous Delphi, et encore moins aux manettes de jeu, j'arrive quand même à lire un peu de code Clin d'oeil et je n'ai trouvé aucune référence dans le code que tu as posté faisant un quelconque lien entre l'USB et le joystick.
Comment ce bout de code sait-il que ManetteInfo est sur de l'USB ? Du peu que j'ai vu à propos des joysticks en partant de MMSystem dans le sdk, tout ce que je trouve fait référence à des manettes branchées sur le port Game des cartes son...
D'où ma perplexité, d'où cette question.
--
jp, tjrs curieux.

systmd
visiteur
Content Re: Gérer le JoyStick message: éditerle 03/09/06 à 19h02

Je t'assure que ça  fonctionne sur l'USB, 
puisque j'en ai une pour tester au moment même ou je te cause.

Le code je l'utilise depuis Ouhhhhh... fait le loup,
je l'ai trouvé sur le net quand je chercher justement la manière de se servir
d'une manette de jeu, pour bricoler une interface perso en USB à moindre coût.
Et on faisait référence à MMSystem. Il faudrait que je retrouve le lien pour te le montrer.
Maintenant ce code fonctionne peut-être avec une manette branchée sur le port Game d'une carte son. (A voir).
Je vais peut-être dire une betise, mais les manettes de jeu sont gérer par un drivers ,
voir le contrôleur "joy.cpl" du panneau de config.

djidjidji
visiteur
Message Re: Gérer le JoyStick message: éditerle 03/09/06 à 19h39

Ah mais je suis tout à fait daccord que ça marche systmd c'est juste que je trouve que l'utilisation d'un TTimer n'est pas idéale:
- programmation plus contraignante
- memoire necessaire beaucoup plus importante
- exactitude moindre (et plus c'est exact plus ça bouffe de mémoire)

Sinon pour en revenir au composant, y a rien à faire de particulier pour l'utiliser, on peut directement utiliser ses évenements? (c'est ce que j'ai supposé vu la propriété autoload (ou un trus du genre) à true )

systmd
visiteur
Message Re: Gérer le JoyStick message: éditerle 03/09/06 à 19h48

@djidjidji : merci de confirmer et je ne contre dit pas pour le timer, c'est juste pour dire que je ne connais pas autre chose.
Voilà le lien de la page torry.net où il y a pas mal de composants sur le joypad ICI.(Idem au lien de RB).

Jipé
visiteur
Message Re: Gérer le JoyStick message: éditerle 03/09/06 à 20h27

@systmd: merci pour les infos, surtout "joy.cpl" qui me laisse supposer que effectivement MMSystem doit savoir que le joystick est sur usb et se débrouille pour translater nos commandes de "haut niveau" jusqu'au driver tout en bas.
Eh ben je me coucherai moins bête, ce soir ! (mais pas plus tôt Clin d'oeil )
--
jp

@systmd, perso: je me marre, chaque fois que je tape "systmd" je pense à mon père qui l'a lu pendant des dizaines d'années. Il y a un rapport ?

@autres: pour le trombinoscope j'ai pas d'idées, j'ai pas connu l'ancien et je suis nouveau ici (mais a priori pas opposéClin d'oeil . Je regarde comment ça évolue.

Systmd
visiteur
Content Re: Gérer le JoyStick message: éditerle 03/09/06 à 20h53




Jipé
visiteur
Message Re: Gérer le JoyStick message: éditerle 03/09/06 à 22h09

 

quote


Laisse moi ton adresse si tu veus en discuter

Elle est dans ma présentation -- Ils sont méchants les modos ? Sourire

systmd
visiteur
Content Re: Gérer le JoyStick message: éditerle 03/09/06 à 22h31

 

quote


Ils sont méchants les modos ?

  Remontée du message
C'est pas vrai, il font plus que leur boulot.
et j'aimerai pas être à leur place  Sourire en biais
Un p'tit clin d'oeil pour eux au passage ainsi qu'au site de MICHEL  Nez rond clin d'oeil

djidjidji
visiteur
Message Re: Gérer le JoyStick message: éditerle 05/09/06 à 15h07

Bonne nouvelle, j'ai finalement trouvé!
Il suffit de rajouter
 

code


JoySetCapture(handle, JOYSTICKID1, 10, FALSE); //10 pour l'exemple


dans FormCreate (par rapport à mon code de déClin d'oeil langue art) et ça marche nickel! Sourire des yeux
Merci à tout le monde pour l'aide!

TiteufBlu
visiteur
Message Re: Gérer le JoyStick message: éditerle 12/12/12 à 22h24

Merci beaucoup
Vous m'avez bien aidé : systmd
D@vid

systmd
visiteur
Content Re: Gérer le JoyStick message: éditerle 13/12/12 à 20h06

Bonsoir, content que celà servent 6 ans aprés Clin d'oeil

Index > Forum général > Gérer le JoyStickNouveau post - Répondre
 page 1 sur 1