Hallo für eine spzeille Anwendung möchte ich den Buttonstatus eines Joysticks auslesen. (Es werden da einfache Schalter angeschlossen, also kein "echter" Joystick). nur: wie macht man das? Ich benutze SuSE 10.0 Danke & by Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
Hallo, On 6/21/2006 10:10 PM, Dr. Jürgen Vollmer wrote:
Hallo
für eine spzeille Anwendung möchte ich den Buttonstatus eines Joysticks auslesen. (Es werden da einfache Schalter angeschlossen, also kein "echter" Joystick).
nur: wie macht man das?
Angeschlossen aber an den üblichen Joystick-Anschluss? Schau' mal in /usr/src/linux/Documentation/input Ich fand' da mehrere interessante Dokumente. Im wesentlichen: passende Datei benutzen und dann open und read oder select. Ein kurzer Test hier scheiterte aber daran dass ich kein Modul für den im Server befindlichen Joystick-Port fand. Scheint eine frage der nötigen Kernel-Module zu sein (logisch), aber da habe ich nicht weiter geforscht. Arno
Ich benutze SuSE 10.0
Danke & by Jürgen
-- IT-Service Lehmann al@its-lehmann.de Arno Lehmann http://www.its-lehmann.de -- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com
Hallo,
On 6/21/2006 10:10 PM, Dr. Jürgen Vollmer wrote:
Hallo
für eine spzeille Anwendung möchte ich den Buttonstatus eines Joysticks auslesen. (Es werden da einfache Schalter angeschlossen, also kein "echter" Joystick).
nur: wie macht man das?
Angeschlossen aber an den üblichen Joystick-Anschluss?
ja
Schau' mal in /usr/src/linux/Documentation/input Ich fand' da mehrere interessante Dokumente. Im wesentlichen: passende Datei benutzen und dann open und read oder select.
die /dev(js* gab's nicht, hab' sie angelget und mit jstest versucht anzusprechen, aber da kam nur die Meldung, daß es das Device /dev/js0 nicht gibt. Ich hab' hier folgendes C-Proggi gefunden: --------------- #define JOYPORT 0x200 /* Hoffentlich der Richtige! */ int main() { int buttons,zaehler,bitmask; usleep(100000); if (ioperm(JOYPORT, 3, 1)) { perror("Direkter Hardwarezugriff gibt es nur für root!"); return -1; } buttons = inb(JOYPORT); if (ioperm(JOYPORT, 3, 0)) { perror("Die Fehlermeldung gibts wohl nicht :-)"); return -1; } bitmask=16; for (zaehler=0; zaehler<4; zaehler++) { printf("%c",(buttons & bitmask) ? '1' : '0'); bitmask <<= 1; } return 0; } -------- selbst wenn ich das mit Adresse 0x200-0x218 laufen lasse, wird nicht angezeigt, ob ein Button gedrückt wurde. Ich hab' hier eine "ESS 1696 solo1" soundkarte drin. Die sollte via "gameport" angesprochen werden. nur das sagt mir nicht viel. Bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer ------------------------------------------------------------------------------- Diese EMail ist elektronisch mittels GPG / PGP signiert. Diese elektronische Unterschrift ist in einem EMail-Anhang enthalten. Leider kann die Signatur ohne die Installation entsprechender Programme weder geprüft noch angezeigt werden. Mehr dazu unter: http://www.gnupg.org oder auch http://www.pgpi.org -------------------------------------------------------------------------------
Hi, On 6/22/2006 11:31 AM, Dr. Jürgen Vollmer wrote:
Hallo,
On 6/21/2006 10:10 PM, Dr. Jürgen Vollmer wrote:
Hallo
für eine spzeille Anwendung möchte ich den Buttonstatus eines Joysticks auslesen. (Es werden da einfache Schalter angeschlossen, also kein "echter" Joystick).
nur: wie macht man das?
Angeschlossen aber an den üblichen Joystick-Anschluss?
ja
Schau' mal in /usr/src/linux/Documentation/input Ich fand' da mehrere interessante Dokumente. Im wesentlichen: passende Datei benutzen und dann open und read oder select.
die /dev(js* gab's nicht, hab' sie angelget und mit jstest versucht anzusprechen, aber da kam nur die Meldung, daß es das Device /dev/js0 nicht gibt.
Ich hab' hier folgendes C-Proggi gefunden: --------------- #define JOYPORT 0x200 /* Hoffentlich der Richtige! */
int main() { int buttons,zaehler,bitmask; usleep(100000); if (ioperm(JOYPORT, 3, 1)) ... selbst wenn ich das mit Adresse 0x200-0x218 laufen lasse, wird nicht angezeigt, ob ein Button gedrückt wurde.
Ich hab' hier eine "ESS 1696 solo1" soundkarte drin. Die sollte via "gameport" angesprochen werden. nur das sagt mir nicht viel.
Hmm. Die Soundkarte bzw. den darauf verbauten Chip kene ich nun leider nicht. Was gibt denn 'cat /propc/ioports' aus? Ist daraus denn ersichtlich dass irgendein Kernelmodul den Joystick-Port benutzt? Ich vermute dass man erstmal das dafür notwendige Kernelmodul in Gang setzen muss - nach der Dokumentation die ich gestern (angeregt durch Deine Frage :-) dazu durchgesehen habe kann das durchaus etwas komplexer sein. ISA-Karten unterscheiden sich von PCI-Karten, ALSA-Treiber bringen teils eigene Joystick- bzw. Gameport module mit oder auch nicht, und es scheint mehrere darauf aufsetzende High-Level-Interfaces zu geben. Mangels eines Rechners mit Linux und Soundkarte bzw. Gameport der nicht als wichtiger Server läuft konnte ich da auch nicht viel probieren. Ich habe auch nur feststellen können das das Laden aller möglichen Module (analog, joydev, ...) zwar problemlos ging, aber nix bei rauskam... Ich würde, wemm hier keine weiteren Rückmeldungen kommen (David!?) mal die Archive der Kernel-Mailingliste durchsuchen oder einen der Entwickler direkt anschreiben. Viel Erfolg jedenfalls! (Übrigens, wenn es nur um eine begrenzte Zahl von Digitaleingängen geht die Du abfragen möchtest kann man auch Parallelport-Statusbits nehmen. Setzt aber etwas Erfahrung im Hardware-Basteln voraus, sonst hat man sich schnell das Mainboard gegrillt...) Arno
Bye Jürgen
-- IT-Service Lehmann al@its-lehmann.de Arno Lehmann http://www.its-lehmann.de -- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com
Hallo Arno Lehmann>
Was gibt denn 'cat /propc/ioports' aus? Ist daraus denn ersichtlich dass irgendein Kernelmodul den Joystick-Port benutzt?
0cf8-0cff : PCI conf1 4000-403f : 0000:00:02.3 5000-501f : 0000:00:02.3 5000-5007 : piix4-smbus d000-d01f : 0000:00:02.2 d000-d01f : uhci_hcd d400-d43f : 0000:00:0d.0 d400-d43f : ESS Solo-1 d800-d80f : 0000:00:0d.0 d800-d80f : ESS Solo-1 dc00-dc0f : 0000:00:0d.0 dc00-dc0f : ESS Solo-1 e000-e003 : 0000:00:0d.0 e000-e003 : ESS Solo-1 e400-e403 : 0000:00:0d.0 e400-e403 : ESS Solo-1 f000-f00f : 0000:00:02.1
Ich vermute dass man erstmal das dafür notwendige Kernelmodul in Gang setzen muss - nach der Dokumentation die ich gestern (angeregt durch Deine Frage :-) dazu durchgesehen habe kann das durchaus etwas komplexer sein. ISA-Karten unterscheiden sich von PCI-Karten, ALSA-Treiber bringen teils eigene Joystick- bzw. Gameport module mit oder auch nicht, und es scheint mehrere darauf aufsetzende High-Level-Interfaces zu geben.
Mangels eines Rechners mit Linux und Soundkarte bzw. Gameport der nicht als wichtiger Server läuft konnte ich da auch nicht viel probieren. Ich habe auch nur feststellen können das das Laden aller möglichen Module (analog, joydev, ...) zwar problemlos ging, aber nix bei rauskam... Ich würde, wemm hier keine weiteren Rückmeldungen kommen (David!?) mal die Archive der Kernel-Mailingliste durchsuchen oder einen der Entwickler direkt anschreiben.
(Übrigens, wenn es nur um eine begrenzte Zahl von Digitaleingängen geht die Du abfragen möchtest kann man auch Parallelport-Statusbits nehmen. Setzt aber etwas Erfahrung im Hardware-Basteln voraus, sonst hat man sich schnell das Mainboard gegrillt...)
ja 4, aber ich bin nicht so der grosse Bastler, gibt's da eine "DAU-Anleitung"? Bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
Hallo, On 6/23/2006 9:29 AM, Dr. Jürgen Vollmer wrote:
Hallo Arno Lehmann>
Was gibt denn 'cat /propc/ioports' aus? Ist daraus denn ersichtlich dass irgendein Kernelmodul den Joystick-Port benutzt?
0cf8-0cff : PCI conf1 4000-403f : 0000:00:02.3 5000-501f : 0000:00:02.3 5000-5007 : piix4-smbus d000-d01f : 0000:00:02.2 d000-d01f : uhci_hcd d400-d43f : 0000:00:0d.0 d400-d43f : ESS Solo-1 d800-d80f : 0000:00:0d.0 d800-d80f : ESS Solo-1 dc00-dc0f : 0000:00:0d.0 dc00-dc0f : ESS Solo-1 e000-e003 : 0000:00:0d.0 e000-e003 : ESS Solo-1 e400-e403 : 0000:00:0d.0 e400-e403 : ESS Solo-1 f000-f00f : 0000:00:02.1
Hmm. Schön viel von der Soundkarte, aber einer der Standard-Joystickports ist nicht dabei. Aber ich sehe grade dass es eine Terratec Solo-1 ist... da muss ich mal sehen, irgendwo in einem meiner Rechner ist auch so eine drin glaube ich. Ich vermute dass bei Dir noch kein Modul geladen ist dass den Joystick-Anschluss zur Verfügung stellt. In /usr/src/linux/Documentation/sound/alsa/Joystick.txt gibt es detaillierter Hinweise: Kernel muss mit Joystick-Support übersetzt sein, und ALSA-Treiber für die es1968 verstehen den Paramater joystick=1|0. Deine 1696 finde ich nirgends, hab' ich auch noch nie von gehört. Welcher Treiber kümmert sich um die? ...
(Übrigens, wenn es nur um eine begrenzte Zahl von Digitaleingängen geht die Du abfragen möchtest kann man auch Parallelport-Statusbits nehmen. Setzt aber etwas Erfahrung im Hardware-Basteln voraus, sonst hat man sich schnell das Mainboard gegrillt...)
ja 4, aber ich bin nicht so der grosse Bastler, gibt's da eine "DAU-Anleitung"?
Keine Ahnung... Aus eigener, leidvoller, aber schon *lange* zurückliegender Erfahrung kann ich aber darauf hinweisen dass es extrem wichtig ist Widerstände zur Strombegränzung einzusetzen. Damals habe ich mich sehr gefreut dass ich ein serielles Terminal zur Verfügung hatte und es unter DOS den Befehl ctty oder so gab... Egal. Bastelanleitung mal aussen vor gelassen: Im Wesentlichen kann man einen der Status-Pins über einen Widerstand mit Masse bzw. einer der normalerweise aktiven Signalleitungen verbinden, abhängig davon ob man einen mit "normal High" oder "normal Low" verwendet (bei Parallel). Dazwischen dann ein Relais, oder, würde ich eher machen, einen Schalttransistor und Optokoppler oder so. Ich bin definitiv kein Hardwaremensch, aber mit passenden Anweisungen würde ich sowas auch noch hinkriegen... und ich vermute dass es da auch Anleitungen gibt. Im Moment kann ich leider nicht gut nachforschen weil mein WLAN mit dem mein Arbeits-Notebook am Netz hängt immer sehr instabil ist wenn hier im Haus die anderen 8 WLANs benutzt werden... Blödkram. Arno
Bye Jürgen
-- IT-Service Lehmann al@its-lehmann.de Arno Lehmann http://www.its-lehmann.de -- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com
hallo,
Hmm. Schön viel von der Soundkarte, aber einer der Standard-Joystickports ist nicht dabei. Aber ich sehe grade dass es eine Terratec Solo-1 ist... da muss ich mal sehen, irgendwo in einem meiner Rechner ist auch so eine drin glaube ich.
Ich vermute dass bei Dir noch kein Modul geladen ist dass den Joystick-Anschluss zur Verfügung stellt.
In /usr/src/linux/Documentation/sound/alsa/Joystick.txt gibt es detaillierter Hinweise: Kernel muss mit Joystick-Support übersetzt sein, und ALSA-Treiber für die es1968 verstehen den Paramater joystick=1|0. Deine 1696 finde ich nirgends, hab' ich auch noch nie von gehört. Welcher Treiber kümmert sich um die?
es handelt sich laut Typenbeschreibung auf dem Chip um ein ES 1938S und wird von Yast auch mit dem es1938-Modul erkannt. Bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
Ok, dann werde ich das also mal wieder OnT SUSE bringen :-) On 6/23/2006 6:14 PM, Dr. Jürgen Vollmer wrote: ...
es handelt sich laut Typenbeschreibung auf dem Chip um ein ES 1938S und wird von Yast auch mit dem es1938-Modul erkannt.
... aber joystick lässt sich nicht wie geplant abfragen Also die Frage: Was muss man denn unter SuSE machen damit das geht? Lt. Dokumentation von ALSA müsste folgendes reichen: modprobe snd-es1938 modprobe joydev modprobe analog Danach sollte das Programm jstest z.B. funktionieren bzw. das "normale" joystick-API zur Verfügung stehen (lt. /usr/src/linux/Documentation/input/joystick.txt). Leider stammen meine Informationen nur aus der Theorie: Ich habe die irgendwo vorhandene Solo-1 leider in keinem Rechner gefunden ;-), habe keine Lust einen Server umzubauen deswegen ;-) und mein analoger Joystick ist schon zum Umzug eingepackt. :-( Aber bestimmt kann irgendwer mal das Programm jstest ausprobieren, oder? Und Solo-1 waren ja vor ein paar Jahren in vielen Rechnern drin... Arno
Bye Jürgen
-- IT-Service Lehmann al@its-lehmann.de Arno Lehmann http://www.its-lehmann.de -- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com
Hallo, Am Fre, 23 Jun 2006, Arno Lehmann schrieb:
Also die Frage: Was muss man denn unter SuSE machen damit das geht? Lt. Dokumentation von ALSA müsste folgendes reichen: modprobe snd-es1938 modprobe joydev modprobe analog Danach sollte das Programm jstest z.B. funktionieren bzw. das "normale" joystick-API zur Verfügung stehen (lt. /usr/src/linux/Documentation/input/joystick.txt).
Es kann sein, dass man die Option js= von "analog" verwenden muss, im Idealfall z.B.: options analog js=auto -dnh -- THE LESSER-KNOWN PROGRAMMING LANGUAGES #12: LITHP This otherwise unremarkable language is distinguished by the absence of an "S" in its character set; users must substitute "TH". LITHP ith thaid to be utheful in protheththing lithtth. -- BSD fortune file [modified] -- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com
Hallo allerseits, vielen Dank für die vielen Tips. ich hab's nun auch gefunden wie's geht: Am Donnerstag, 22. Juni 2006 11:31 schrieb Dr. Jürgen Vollmer:
Ich hab' hier folgendes C-Proggi gefunden: --------------- #define JOYPORT 0x200 /* Hoffentlich der Richtige! */
ein grep gameport /var/log/messages zeigt die richtige Adresse: 0xE400. zusammen mit dem Proggi erhalte ich was ich suchte. Da hätte ich auch mal früher drauf kommen können.... Bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
participants (3)
-
Arno Lehmann
-
David Haller
-
Dr. Jürgen Vollmer