Skocz do zawartości

[C#] Sterownie joystick'iem


Morti

Rekomendowane odpowiedzi

Witam wszystkim.
Mam pewnie problem z sterowaniem joystick'iem. Znalazłem w internetach kod na odczytywanie aktualnej wartości przycisków i analogów. Problem polega na tym, że chciałbym w jakieś zmiennej przechowywać wartości wychylenia np w osi X albo móc się do niej odnosić. Niestety udało mi się przypisać jedynie ogólną aktualna wartość a nie konkretnej osi (przyciski nie stanowią problemu).
Z góry dziękuję za odpowiedź.
Przesyła kod:
 

using System;
using System.Collections.Generic;
using System.Linq;
using SharpDX;
using System.Text;
using System.Threading.Tasks;
using System.Reflection;
using SharpDX.DirectInput;

namespace ConsoleApp7
{
    class Program
    {
        static void Main()
        {
            
            {
                
                    var directInput = new DirectInput();

                    var joystickGuid = Guid.Empty;

                    foreach (var deviceInstance in directInput.GetDevices(DeviceType.Gamepad,
                                DeviceEnumerationFlags.AllDevices))
                        joystickGuid = deviceInstance.InstanceGuid;

                    // If Gamepad not found, look for a Joystick
                    if (joystickGuid == Guid.Empty)
                        foreach (var deviceInstance in directInput.GetDevices(DeviceType.Joystick,
                                DeviceEnumerationFlags.AllDevices))
                            joystickGuid = deviceInstance.InstanceGuid;

                    // If Joystick not found, throws an error
                    if (joystickGuid == Guid.Empty)
                    {
                        Console.WriteLine("No joystick/Gamepad found.");
                        Console.ReadKey();
                        Environment.Exit(1);
                    }

                    // Instantiate the joystick
                    var joystick = new Joystick(directInput, joystickGuid);

                    Console.WriteLine("Found Joystick/Gamepad with GUID: {0}", joystickGuid);

                    // Query all suported ForceFeedback effects
                    var allEffects = joystick.GetEffects();
                    foreach (var effectInfo in allEffects)
                        Console.WriteLine("Effect available {0}", effectInfo.Name);

                    // Set BufferSize in order to use buffered data.
                    joystick.Properties.BufferSize = 128;

                    // Acquire the joystick
                    joystick.Acquire();

                  // Poll events from joystick
               
                while (true)
                {
                    joystick.Poll();
                    var datas = joystick.GetBufferedData();
  
                    foreach (var state in datas)
                    {
                        
                        Console.Clear();
                        Console.WriteLine(state);
                      

                        int zm1 = state.Value;
                        int zm2 = state.Timestamp;
                        int zm3 = state.Sequence;
                        var zm4 = state.RawOffset;
                        

                        Console.WriteLine(zm1);
                        Console.WriteLine(zm2);
                        Console.WriteLine(zm3);
                        Console.WriteLine(zm4);
                        
                        





                    }
                }
                
            }
                //Console.Clear();
            }
        }
    }

 

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...