所以我試圖控制一個遊戲杆,使用API編寫一些代碼來這樣做。 我讀過的軸數使用ioctl(fd, JSIOCGAXES, &axes);
,並希望再打印在事件處理函數(函數B)移動的軸在功能操縱桿:使用另一個函數中定義的變量
char whichaxis[axes] = {'X','Y','Y','X'};
printf("%c%c |%8hd\n",whichjs,whichaxis[jse.number],jse.value);
此代碼應打印的東西像LX| -32768
,說左邊的操縱桿已經在x方向上移動了。
但是,這會返回一個錯誤,因爲我在函數b中調用axes
,但它沒有在函數b中定義。 所以我的問題是,我怎樣才能使用axes
,儘管它沒有在函數b中定義?
下面是代碼
// Returns info about the joystick device
void print_device_info(int fd) {
int axes=0, buttons=0;
char name[128];
ioctl(fd, JSIOCGAXES, &axes);
ioctl(fd, JSIOCGBUTTONS, &buttons);
ioctl(fd, JSIOCGNAME(sizeof(name)), &name);
printf("%s\n %d Axes %d Buttons\n", name, axes, buttons);
}
// Event handler
void process_event(struct js_event jse) {
// Define which axis is which
// Axis number {0,1,2,3} */
char whichaxis[axes] = {'X','Y','Y','X'};
//Define which joystick is moved
char whichjs = '*';
switch(jse.number) {
case 0: case 1:
whichjs = 'L';
break;
case 2: case 3:
whichjs = 'R';
break;
default:
whichjs = '*';
break;
}
// Print which joystick, axis and value of the joystick position
printf("%c%c |%8hd\n",whichjs,whichaxis[jse.number],jse.value);
}
請張貼一些細節(函數定義和函數b)。 – doptimusprime
在'printf(「%c%c |%8hd \ n」,whichjs,whichaxis,jse.value);''whichaxis'應該是'whichaxis [jse.number]'。 'whichaxis'是一個指針。 – doptimusprime
好點 - 在代碼中更改 – theoB610