Tout est dans le titre. Merci.
Gabriel
Tout est dans le titre. Merci.
Gabriel
Je ne connais pas (mais n'ai pas cherché ) de composant tout fait.
Mais voici un essai que j'avais fait à l'époque. (Je te le livre tel quel)
D'après mes souvenir, il n'était pas possible de hooker le joystick. On devait cycliquement vérifier son état:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 unit Unit1; interface uses MMSystem, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, AppEvnts, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Memo1: TMemo; Timer1: TTimer; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Timer1Timer(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var JoyCaps :TJoyCaps; begin case JoySetCapture(Handle, JOYSTICKID1, 0, FALSE) of JOYERR_NOERROR :Caption := 'JOYERR_NOERROR '; MMSYSERR_NODRIVER :Caption := 'MMSYSERR_NODRIVER'; JOYERR_PARMS :Caption := 'JOYERR_PARMS '; JOYERR_NOCANDO :Caption := 'JOYERR_NOCANDO '; JOYERR_UNPLUGGED :Caption := 'JOYERR_UNPLUGGED'; else Caption := '???'; end; JoyGetDevCaps(JOYSTICKID1, @JoyCaps, SizeOf(TJoyCaps)); Memo1.Lines.Add(inttoStr(JoyCaps.wNumButtons)); end; procedure TForm1.FormDestroy(Sender: TObject); begin joyReleaseCapture(JOYSTICKID1); end; procedure TForm1.Timer1Timer(Sender: TObject); var JoyInfo :TJoyInfoEx; begin FillChar(JoyInfo, SizeOf(JoyInfo), #0); JoyInfo.dwSize := SizeOf(TJoyInfoEx); JoyInfo.dwFlags := JOY_RETURNALL;//JOY_RETURNBUTTONS; JoyGetPosEx(JOYSTICKID1, @JoyInfo); Memo1.Lines.Add('$' +IntToHex(JoyInfo.wButtons, 8)); end; end.
Hello et merci pour le bout de code.
Celà me donne au minimum un exemple d'utilisation des fonctions joystick de mmsystem.
Effectivement, il faut cycliquement tester l'état du joystick et ce n'est pas top.
J'espérais trouver un composant tout fait avec un évènement style "OnjoystickButton1" mais celui que l'on trouve sur Internet (TJSTICK) ne s'installe pas sous Delphi7. Ce truc est shareware. Il ne fournit que le .dcu et à l'installation on récupère le célébrissime message "Une ou plusieurs lignes trop longues ont été tronquées" pour lequel je n'ai pas trouvé la soltution.
Si je ne trouve rien je me rabatterai sur les fonctions MMSystem mais ça me tartine un peu !!
merci encore
Gabriel
Salut,
Tu veux le piloter via quelle API to Joystick ?
--> API HID (norme de presque tous les appareils USB) : TJVHidComponent (dans la Jedi VCL)
--> Port jeu : TJvJoystick (aussi dans la bibliothèque de composants Jedi VCL !)
--> DirectX : unité directinput.pas (ou un truc dans le genre) dans la librairie "Clootie" :
http://www.clootie.ru/delphi/download_dx90.html
--> via Opengl : ça doit se trouver dans gl.pas (regarde le code source de Paul Toth dans le dernier défi Delphi, celui du jeu de serpent)
Pour piloter mon Nostromo N50 sous Vista, j'utilise la première solution :
http://nostromon50onvi.sourceforge.net/
Sinon, en utilisant DirectInput ou OpenGL, ce n'est pas trop compliqué (par rapport à ce que j'ai pu en voir )
Bidouilleuse Delphi
Bjr et merci pour les infos.
J'ai téléchargé la librairie JEDI (le monstre !) et vu parmi les centaines de composants celui du joystick TJvJoystick.
Juste en aparté, cette librairie reprend quasiment tous les composants standards de Delphi. Qu'ont-ils de plus que ceux d'origine ?
Pour informer un peu plus notre internaute de Landernau (y a t'il toujours du bruit à Landernau ?), mes recherches ne sont pas pour piloter un joystick mais un petit montage électronique perso que je branche sur le port joystick inutilisé chez moi (les ports série sont tous occupés) et sur lequel je désire détecter le plus rapidement possible les fermetures / ouvertures de deux contacts.
Les impédances de mon montage sont telles que mon PC le détecte comme "présence d'un joystick".
Merci encore pour l'aide et bonjour à la Bretagne (Je vais chaque année en vacances à Locmariaquer dans le 56).
Gabriel 78
De rien !
Tout plein de choses ! Mais il faut souvent trouver par soi même : bon nombre de composants ne sont pas documentés.
Le mieux c'est d'expérimenter ce que font les composants grace à la "MégaDemo" et aux multiples petites demos annexes.
Oui, donc il faut que tu utilises TJVJoystick, au delà je suis largué côté électronique
Sinon, si c'est juste des montages dans ce style (contact bouton poussoir), tu peux faire ton montage sur USB en utilisant:
- d'une part interface USB universelle entre l'USB et le montage comme celles qu'on utilise pour monter sa borne de jeux d'arcade maison :
celle-ci : http://www.ultimarc.com/ipac1.html
ou celle-là : http://www.u-hid.com/ (tiens, il y a même une version "nano" sur leur page d'achat, je ne savais pas)- Tu utilises le composant TJVHidDeviceController pour piloter ton affaire.
En plus, avec une seule et mme interface tu pourrais même piloter plusieurs de tes montages à la fois.
Avoue que c'est pour que ton PC démarre la machine le café le matin !
Bidouilleuse Delphi
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager