notJustCode.it
 
\\ Home : Articoli
DirectInput - Enumerazione
Di RobyDx (del 09/08/2007 @ 11:20:25, in DirectX9, linkato 2490 volte)

Se realizzerete dei giochi da distribuire al publico incontrerete subito un problema di compatibilità nel settore del controllo. Se tutti infatti possiedono una tastiera più o meno uguale a quelle degli altri, questo non vale per i mouse e soprattutto non vale per i vari joystick, gamepad e volanti. Quanti pulsanti ha il joypad? Il mouse ha la rotellina? La leva è analogica? Tutti fattori che se non considerati potrebbero rendere i vostri giochi letteralmente incontrollabili. Risulta quindi molto importante conoscere a priori il tipo di controllo che si ha a disposizione in modo da gestire al meglio eventuali situazioni. Sapere quali sono le periferiche collegate al PC è molto semplice. Ecco come fare.

Enumerazione globale

Per prima cosa chiederemo al PC quante periferiche sono collegate ed una loro descrizione superficiale. Utilizzeremo la classe Manager di DirectInput.
Manager.Devices.Count : questo valore restituisce il numero di periferiche collegate al PC. Devices è una collezione che possiamo leggere con un semplice ciclo.

Dim DIDevice As DeviceInstance
For Each DIDevice In Manager.GetDevices(DeviceClass.All, EnumDevicesFlags.AttachedOnly)
Lettura
Next

Tramite l'oggetto DIDevice scorriamo la lista generata da getDevices. Nella zona lettura possiamo utilizzare DIDevice per leggere le caratteristiche marginali della periferica.
GetDevices permette di impostare la lista a seconda delle necessità (notare che l'abbiamo già usata per creare il joystick). Usate deviceclass per scegliere il tipo di periferiche che interessano.

Keyboard: si selezionano solo le tastiere
GameControl: tutti i joystick
Pointer: Mouse e puntatori
Other: altri tipi di periferiche
All: tutte le periferiche

Altra opzione utile è EnumDevicesFlags

IncludeHidden: nascoste
IncludePhantoms: periferiche non collegate al momento (non include quelle USB)
IncludeAliases: duplicate
ForceFeeback: quelle con ForceFeedback (vibrazione)
AttachedOnly: solo quelle collegate
AllDevices: tutte le periferiche

Ora con DIDevice leggete le prime informazioni.

DeviceSubType: numero di versione che specifica il tipo esatto di periferica
DeviceType: tipo
FFDriverGuid: identificatore del driver del force feedback
InstanceGuid: guida, il numero per creare la periferica
InstanceName: nome della periferica
ProductGuid: guida che identifica il prodotto
ProductName: nome prodotto
Usage: valore HID
UsagePage: codice pagina di HID

Per sapere le caratteristiche dovrete creare dei device con le istanceGuid

Dim d As New Device(enumeraC.InstanceGuid)

Ora usate d.Caps per sapere tutte le caratteristiche. Notare che le proprietà sono le stesse per ogni periferica quindi ad esempio il numero di assi sono le direzioni del controller del joystick ma anche quelle in cui il mouse può muoversi e così via. Ecco i principali (sono inclusi anche valori della precedente enumerazione).

FFDriverVersion: versione driver
FirmwareRevision: revisione driver ForceFeedback
HardwareRevision: revisione hardware
Hidden: nascosto
NumberAxes: numero di assi. Se il mouse ne mostra 3 significa che possiede una rotellina.
NumberButtons: numero pulsanti
NumberPointOfViews: numero di point of view (alcuni tipi di joypad)
Saturation: saturazione

C'è ne sono altri raramente usati. Li potete trovare nella SDK.

Non c'è altro da sapere. Ecco gli esempi:

Esempio VB.Net

Esempio C#

Articolo Articolo  Storico Storico Stampa Stampa
I commenti sono disabilitati.
"La tecnologia non tiene lontano l'uomo dai grandi problemi della natura, ma lo costringe a studiarli più approfonditamente."

Antoine de Saint-Exupéry


Cerca per parola chiave
 

Titolo
Articoli (4)
C++ (4)
Direct3D10 (30)
Direct3D11 (20)
DirectX9 (82)
DotNet (10)
English (9)
FanGames (22)
ManagedDX11 (2)
Materiale Utile (4)
News (39)
Shader Library (12)
SharpDX (1)
Software (25)
Tecnologia (19)
Varie (9)

Gli interventi più cliccati

Ultimi commenti:
If you wish to retai...
23/05/2013 @ 13:07:45
Di chanel outlet
You deficit of self-...
23/05/2013 @ 13:07:13
Di cartier watches uk
Reinforce your own l...
23/05/2013 @ 13:06:37
Di replica watches
Whenever you"re shiv...
23/05/2013 @ 13:06:11
Di swiss replica watches
It's likely you have...
23/05/2013 @ 13:05:02
Di chanel handbags
Cheap automobile ins...
23/05/2013 @ 13:04:28
Di replica watches

Titolo
Con quale tecnologia state realizzando o avete intenzione di realizzare i vostri progetti?

 DirectX11
 DirectX10
 DirectX9
 XNA
 DirectX8 o Precedenti
 OpenGL
 Motori grafici già pronti
 Altro

Titolo
Umorismo (17)

Le fotografie più cliccate



Ci sono 503 persone collegate
Sono state visualizzate  pagine

22/11/2024 @ 10:40:19
script eseguito in 32 ms