【发布时间】:2013-11-05 07:40:47
【问题描述】:
所以我试图控制一个操纵杆,使用 API 编写了一些代码来做到这一点。
我已经使用ioctl(fd, JSIOCGAXES, &axes); 读取了函数 a 中操纵杆上的轴数,然后想打印在事件处理函数(函数 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)。
-
在
printf("%c%c |%8hd\n",whichjs,whichaxis,jse.value);whichaxis应该是whichaxis[jse.number]。whichaxis是一个指针。 -
好点 - 更改了代码
标签: c linux api function variables