Joystick Technik und Auslesen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
lzuser
Beiträge: 97
Registriert: Sa 20. Jun 2009, 16:00
OS, Lazarus, FPC: Win10 20H2, Laz 2.0.8 auch Linux Mint Mate 20, Laz 2.0.6
CPU-Target: 64Bit

Joystick Technik und Auslesen

Beitrag von lzuser »

Win10 2004, Laz 2.0.8 auch Linux Mint 20, Laz 2.0.6

Ich würde gern mal wieder von eurem Erfahrungsschatz profitieren:

1. Ich kenne von früher die analogen Joysticks mit 2 Potentiometern für den Gameport. Welche Technik ist denn heute aktuell in analoge USB-Joysticks eingebaut?
2. Wie kann man die Taster und analoge x-y-Position dann unter Lazarus (Win und Lin) auslesen, um diese für die Steuerung eigener Anwendungen zu verwenden?
3. Welchen Joystick könnt ihr empfehlen (einfach, preiswert, keine Spiele-Dauernutzung, keine hohen Ansprüche)?

Danke schon mal für eure Hilfen

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: Joystick Technik und Auslesen

Beitrag von theo »

Plattformübergreifend am ehesten wohl mit SDL
https://wiki.freepascal.org/FPC_and_SDL
Aber frag mich nicht...

Benutzeravatar
Maik81SE
Beiträge: 308
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.0.0.3 FPC 3.2.2); Windows 10 (L 3.99.0.0 FPC 3.2.0)
CPU-Target: x86-64; arm; avr
Wohnort: Lübeck
Kontaktdaten:

Re: Joystick Technik und Auslesen

Beitrag von Maik81SE »

lzuser hat geschrieben:
Mi 25. Nov 2020, 10:03
Win10 2004, Laz 2.0.8 auch Linux Mint 20, Laz 2.0.6

Ich würde gern mal wieder von eurem Erfahrungsschatz profitieren:

1. Ich kenne von früher die analogen Joysticks mit 2 Potentiometern für den Gameport. Welche Technik ist denn heute aktuell in analoge USB-Joysticks eingebaut?
SInd die denn noch Analog :?: oder schon eher Digital?

Wenn ich das noch richtig im Filter habe, waren diese doch auf dem Midi-Port?
und ich vermute mal, das diese nun nur noch Emuliert werden.
Selbiges Problem hab ich mit meinem Starto DJ-Herkules-Mischpult (2 Kanal)
Da ich leider nicht die Daten erhalten habe, welche ich letztendlich brauche, die mir auch zuverlässig was geben, haben ich diese Projekt in die Ablage P befördert und eine Alternative aufgebaut.

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.0.0.3 FPC 3.2.2);
windows 10 (L 3.99.0.0 FPC 3.2.0)

PascalDragon
Beiträge: 830
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Joystick Technik und Auslesen

Beitrag von PascalDragon »

lzuser hat geschrieben:
Mi 25. Nov 2020, 10:03
2. Wie kann man die Taster und analoge x-y-Position dann unter Lazarus (Win und Lin) auslesen, um diese für die Steuerung eigener Anwendungen zu verwenden?
Heutige Eingabegeräte arbeiten eigentlich alle mit der HID Spezifikation. Die Betriebssysteme bieten dann eine entsprechende API an, um auf diese zu zu greifen. Du kannst dir zum Beispiel mal den Code der Castle-Engline zu den Eingabegeräten anschauen (sollte sich prinzipiell aus der Engine rauslösen lassen).
FPC Compiler Entwickler

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1498
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Joystick Technik und Auslesen

Beitrag von corpsman »

Ich hab das mal mit SDL2 gemacht, als Anlage der notwendige Code ist recht Simpel und funktioniert unter Windows und Linux ;)
Dateianhänge
usdl_joystick.pas
(1.96 KiB) 89-mal heruntergeladen
--
Just try it

lzuser
Beiträge: 97
Registriert: Sa 20. Jun 2009, 16:00
OS, Lazarus, FPC: Win10 20H2, Laz 2.0.8 auch Linux Mint Mate 20, Laz 2.0.6
CPU-Target: 64Bit

Re: Joystick Technik und Auslesen

Beitrag von lzuser »

Danke für deine Unit.
Erster Versuch: Mini-Anwendung zum Auslesen der X und Y-Achsen mit einem Timer

Code: Alles auswählen

uses usdl_joystick;
var JoyXAchse,JoyYAchse:TSDL_Joystick;

procedure TJoystickTestForm.FormCreate(Sender: TObject);
begin
JoyXAchse:=TSDL_Joystick.Create(0);
JoyYAchse:=TSDL_Joystick.Create(1);
end;

procedure TJoystickTestForm.FormDestroy(Sender: TObject);
begin
JoyXAchse.Destroy; JoyYAchse.Destroy;
end;

procedure TJoystickTestForm.TimerCheckBoxChange(Sender: TObject);
begin
JoystickTimer.enabled:=TimerCheckBox.checked;
end;

procedure TJoystickTestForm.JoystickTimerTimer(Sender: TObject);
begin
xAchseEdit.Text:=IntToStr(JoyXAchse.Axis[0]);
yAchseEdit.Text:=IntToStr(JoyYAchse.Axis[1]);
end;
Könnte das überhaupt so klappen?
Warum wird das Create mit einem Index versehen?
Benötigt man für jede Achse eine eigene Instanz von TSDL_Joystick?
Erste große Hürde: Laz2.0.8 kennt sdl2 nicht, nur sdl. -->Debuggerfehler-Abbruch
Im Online Package Manager habe ich es nicht gefunden.
Wo könnte ich mich denn über sdl2 informieren, wie installieren?
Hast du auch eine Tastenauswertung probiert?
Zuletzt: Kannst du einen einfachen USB-Joystick z.B. mit 2 Achsen, 2 Taster benennen?

Ich fange erst an, mich damit zu beschäftigen.
Danke schon mal.

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1498
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Joystick Technik und Auslesen

Beitrag von corpsman »

Also

du musst die sdl2.dll selber runterladen ( https://www.libsdl.org/download-2.0.php )

Der Index beim Create ist deswegen notwendig, weil es ja sein kann das du mehrere Joysticks im System hast und damit wählst du aus welchen du haben willst

Anbei mein Demoprojekt zu dem Thema, da musst dann auch noch die sdl2.pas und die DLL mit anfügen
Dateianhänge
Joystick_Demo.zip
(3 KiB) 68-mal heruntergeladen
--
Just try it

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: Joystick Technik und Auslesen

Beitrag von theo »

Auf Linux musst du wohl via Paket Manger libSDL2-devel und Freunde installieren.

lzuser
Beiträge: 97
Registriert: Sa 20. Jun 2009, 16:00
OS, Lazarus, FPC: Win10 20H2, Laz 2.0.8 auch Linux Mint Mate 20, Laz 2.0.6
CPU-Target: 64Bit

Re: Joystick Technik und Auslesen

Beitrag von lzuser »

Vielen Dank für die Materialien und Hinweise. Dann könnte ich wohl loslegen, fehlt nur noch ein USB-Joystick, mit dem ich die tollen Einstiegshilfen auch testen kann.

Ich suche ja einen "analogen" Joystick, der je nach Neigung andere Werte (16bit wie in der Unit angegeben) liefert, so wie früher die Realisierung mit Potentiometern. Leider konnte ich über die heutige Technik nichts finden.

Aktuell scheinen die meisten Joysticks bis 60€ auch ausverkauft zu sein.
Habt ihr denn noch einen Tipp für einen Joystick?
Vielen Dank nochmal.

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1498
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Joystick Technik und Auslesen

Beitrag von corpsman »

Ich hatte als Joystick meine Taranis Q7 genommen, geht auch wunderbar ;)

bzw hab ich noch einen Adapter der nen Uralt Analogen auf einen USB umsetzt

Wenn du da googelst gibts schon welche für 3 Euro

Auch ne Idee ist einen Arduino zu nehmen, da gibts ne Lib mit der er sich als Joystick registriert glaubig und dann das AD-Samplen selber machen, dürfte aber sicher keine 16-Bit sein ..
--
Just try it

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: Joystick Technik und Auslesen

Beitrag von Timm Thaler »

lzuser hat geschrieben:
Mi 2. Dez 2020, 18:26
Habt ihr denn noch einen Tipp für einen Joystick?
Hab hier einen Logitech Extreme 3D pro stehen, der hat so viele Potis, da kannst Du Dich richtig austoben. Ca. 50€, aber momentan schwer zu bekommen anscheinend.

Antworten