Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Problemi con SlimDX (C#)
Forum - C# / VB.NET - Problemi con SlimDX (C#)

Avatar
D@vide (Member)
Expert


Messaggi: 450
Iscritto: 30/06/2010

Segnala al moderatore
Postato alle 16:37
Lunedì, 11/06/2012
Salve a tutti, ho un piccolo problema con SlimDX.
Praticamente starei cercando di realizzare un applicazione che permetta di simulare la pressione di tasti da tastiera tramite un Joypad.
Il problema è che non mi rileva l'avvenuta pressione dei tasti.
Mi spiego meglio postando il sorgente.

Codice sorgente - presumibilmente C#

  1. List<DeviceInstance> directInputList = new List<DeviceInstance>();
  2.             DirectInput dInput = new DirectInput();
  3.             directInputList.AddRange(dInput.GetDevices(DeviceClass.GameController, DeviceEnumerationFlags.AttachedOnly));
  4.            
  5.             List<Joystick> joystickList = new List<Joystick>();
  6.             foreach (DeviceInstance i in directInputList)
  7.                 joystickList.Add(new Joystick(dInput, i.InstanceGuid));
  8.            
  9.             if (joystickList.Count == 0)
  10.             {
  11.                 MessageBox.Show("Nessun Gamepad rilevato. Collegare il Joypad e riprovare.", Application.ProductName);
  12.                 return 0;
  13.             }
  14.  
  15.             // Questo form serve semplicemente per scegliere il controller da utilizzare
  16.             ScegliJoystick scegliJoystickForm = new ScegliJoystick(joystickList);
  17.             scegliJoystickForm.ShowDialog();
  18.  
  19.             Joystick joystickU = joystickList[scegliJoystickForm.getId];
  20.             joystickU.Acquire();
  21.             joystickU.Poll();
  22.  
  23.             JoystickState state = joystickU.GetCurrentState();
  24.  
  25.             bool[] listabottoni = state.GetButtons();
  26.             foreach (bool bottone in listabottoni)
  27.             {
  28.                 if(bottone == true)
  29.                 Console.WriteLine(bottone);
  30.             }
  31.  
  32.             Console.ReadLine();
  33.             joystickU.Unacquire();



Ecco, ora premendo un tasto dovrebbe stampare almeno un True nella console, cosa che invece non accade. Suggerimenti?

PM Quote
Avatar
GN (Member)
Guru


Messaggi: 770
Iscritto: 30/04/2011

Segnala al moderatore
Postato alle 21:48
Martedì, 12/06/2012
Uhm, forse il problema è che leggi lo stato dei tasti nel momento in cui si avvia l'applicazione. Per far funzionare questo codice, quindi, secondo me devi prima premere il tasto, e poi, tenendolo premuto, lanciare il programma; altrimenti, secondo me devi eseguire il controllo dei tasti in un ciclo infinito, magari su un thread separato.


PM Quote
Avatar
D@vide (Member)
Expert


Messaggi: 450
Iscritto: 30/06/2010

Segnala al moderatore
Postato alle 22:51
Martedì, 12/06/2012
Testo quotato

Postato originariamente da GN:

Uhm, forse il problema è che leggi lo stato dei tasti nel momento in cui si avvia l'applicazione. Per far funzionare questo codice, quindi, secondo me devi prima premere il tasto, e poi, tenendolo premuto, lanciare il programma; altrimenti, secondo me devi eseguire il controllo dei tasti in un ciclo infinito, magari su un thread separato.



Si, in effetti ci avevo già pensato, ma non è quello il problema, non cambia nulla.
Grazie comunque per aver cercato di aiutarmi, sto impazzendo xP

PM Quote