Gibt es für den JW24F8 Quellcodebeispiele unter C#?
Wie hoch ist hier (Windows + C#) die mögliche Abtastrate?
D.h. wie oft pro Sekunde kann ich im Windows-Programm einen Wert erhalten?
Danke
JW24F8 mit C#
Moderator: Guido Körber
- Christoph Jung
- Posts: 670
- Joined: Sun Oct 08, 2006 3:43 pm
- Location: Germany / Berlin
- Contact:
Re: JW24F8 mit C#
Für den JW24F8 haben wir im moment keine Beispiele unter C#. Aber um mit C# (also .Net umgebung) auf Joysticks und andere Eingabegeräte zu kommunizieren ist ein guter Weg DirectX DirectInput.
Stichwörte für Google/ Bing wären:
Microsoft.DirectX.DirectInput
C# Joystick
Ich hab hier ein kurzes Skript, was evtl. hilfreich sein könnte. Hab aber keine Ahnung, wo ich das her hab (ist schon ein weilchen her).
Was die Abtastrate betrifft, da ist Windows echt flexibel. Mit den Standard Timern schafft Windows nur ca. 20-25 ms. Wenn man aber den Multimedia-timer verwendet schafft man sogar Zeiten von 1-2 ms. 7-8 ms entsprechen der Masimalen Frequenz des JW24F8. Allerdings hab ich keine ahnung, wie das unter C# funktioniert, da ich das bisher nur unter MFC gemacht hab.
Stichwörte für Google/ Bing wären:
Microsoft.DirectX.DirectInput
C# Joystick
Ich hab hier ein kurzes Skript, was evtl. hilfreich sein könnte. Hab aber keine Ahnung, wo ich das her hab (ist schon ein weilchen her).
Code: Select all
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.DirectX.DirectInput;
namespace joywarrior
{
class Program
{
static void Main(string[] args)
{
Device joystickDevice;
JoystickState state;
try
{
// Ausgehend, dass nur ein Joywarrior und auch sonst kein anderer Gamecontroller angeschlossen ist!!!
//Liefert eine Liste der angeschlossenen Gamecontroller
DeviceList gameControllerList = Manager.GetDevices(DeviceClass.GameControl, EnumDevicesFlags.AttachedOnly);
Console.WriteLine(gameControllerList.Count + " Joystick angeschlossen");
//Wenn mindestens ein Gamecontroller angeschlossen ist:
if (gameControllerList.Count > 0)
{
//Zeiger auf das erste (und einzige!) Element in der Liste setzen
gameControllerList.MoveNext();
//Joywarrior initialisieren
joystickDevice = new Device (((DeviceInstance)gameControllerList.Current).InstanceGuid );
Console.WriteLine(joystickDevice.ToString());
//DirectX bekommt mitgeteilt, dass der Gamecontroller ein Joystick ist
joystickDevice.SetDataFormat(DeviceDataFormat.Joystick);
//DirectX bekommt mitgeteilt, dass der Joystick verwendet wird
joystickDevice.Acquire();
for (int i = 0; i < 1000; i++)
{
Console.Clear();
//Die Joystickinformationen werden aktualisiert
joystickDevice.Poll();
state = joystickDevice.CurrentJoystickState;
Console.WriteLine(state.X + " " + state.Y + " " + state.Z + " ");
System.Threading.Thread.Sleep(200);
}
}
}
catch (Exception err)
{
Console.WriteLine("FindJoysticks()");
Console.WriteLine(err.Message);
Console.WriteLine(err.StackTrace);
}
Console.ReadKey();
}
}
}