ich versuche den initialen Zustand des JW24A10L auszulesen. Leider scheint der initiale Zustand stets zum Programmstart nicht abfragbar zu sein. Erst nach einer Änderung des jeweiligen Zustandes ist dies fuer eine IO-Komponente möglich.
Mein Code dazu sieht folgendermassen aus:
Code: Select all
#include <sys/ioctl.h>
#include <linux/joystick.h>
...
int main() {
// struct for joywarrior state defined in jw24a10l.h
jw24a10l_state jwstate;
for (int i=0; i<4; i++) jwstate.axis[i] = 0;
for (int i=0; i<16; i++) jwstate.buttons[i] = 0;
struct js_event msg;
std::string str = "/dev/input/js0";
char * device = new char[str.length()];
strcpy(device,str.c_str());
int fd = open(device, O_NONBLOCK);
while(1) {
while (read (fd, &msg, sizeof(struct js_event)) > 0) {
if(msg.type == JS_EVENT_BUTTON) jwstate.buttons[msg.number] = msg.value;
if(msg.type == JS_EVENT_AXIS) jwstate.axis[msg.number] = msg.value;
}
printState(jwstate); // gibt aktuellen jwstate aus
usleep(10000);
}
}
Ist dieses Verhalten fuer den Joywarrior normal?
bg, Tobias
EDIT: Nachtrag: Hab das ganze eben mal unter WindowsXP getestet mit den Hausmitteln aus der Systemsteuerung. Dort werden die Initialwerte nach dem Anschliessen des Chips erkannt. also liegt das Problem wohl am Linuxtreiber. :(
Hat jemand schonmal den JW unter Linux ohne den Joystick-Treiber verwendet?