[edit]sorry, hab mich irgendwie in der Kategorie verheddert.[/edit]
Hallo
mein Ziel ist es eine einfache Eingabe zu schaffen, die über Schalter erfolgen soll.
Dazu habe ich die Schalter an die Pins des Gameports geklemmt, die relevant für die 4 Buttons eines Joysticks sind.
Ich habe in der Systemsteuerung einen Joystick installiert. (XP: GameController/Hinzufügen/4-Tasten-Joystick)
Die 4 Buttons, konnte man (früher als Windows 2000) mal direkt mit folgendem Code abfragen:
Delphi-Quellcode:
var
Wert: byte;
//Wert aus Gameport-Register
asm
mov dx,$201;
//Also bei mir liegt der Gameport halt im E/A-Bereich 201
in al,dx;
//hier kommt ab Win2000 ne Fehlermeldung: "Privilegierte Anweisung!"
mov Wert, al;
end;
Ich hab mich also informiert und herausgefunden, dass man eben ab Win 2000 bzw. XP nicht mehr direkt auf die Hardwareports zugreifen darf. Wegen irgendwelchem Sicherheitszeug wurde das eingebaut.
Lösung: Ich habe einen
Treiber installiert, war auch alles sehr schön beschrieben wie man das machen soll und schließlich funktionierte das auch.
Durch weitere Foren habe ich erfahren, dass auf dem 5.-8. Bit von varWert die Buttons 1-4 liegen.
Soweit so gut. Ich hoffe ich konnte das Wissen, das ich durch Recherche ermittelt habe, so rüberbringen, dass ihr mein Problem auch versteht.
Der Standardwert von varWert ist 240 (5.-8. Bit = I; 128+64+32+16 = 240)
Wenn ich jetzt Button 1 oder 2 drücke dann wird das jeweilige Bit auf O gesetzt.
Bei Button 3 und 4 funktioniert das nicht.
Meine Frage:
Wo liegt das Problem?
Es könnte am heruntergeladenen Treiber oder an der Hardware liegen, hab ich mir gedacht.
Den Treiber halte ich jedoch für vertrauenwürdig.
Danke falls ihr Denkansätze oder andere Lösungwege für mich hättet.
Ich hab mich auch etwas mit der Arbeitsweise von LPT- und
COM-Port auseinandergesetzt, jedoch fand ich dieses Modell deutlich einfacher; bis jetzt zumindest.
lg fishly
never change a running system...