应用程序为何收不到标准键盘的输入
本帖最后由 seapex 于 2017-12-28 08:07 编辑在应用程序中用下列语句重定向标准输入到标准键盘
freopen("/dev/tty0", "r", stdin);
再用 getchar() 接收键盘输入,但收不到按键输入,偶尔能收到回车。
注:键盘插在开发板的 USB host 口上
您好:
不好意思,应用程序开发不在我们的技术支持范畴,这个我们这没有相应实例可以提供,敬请谅解 这。。。我问得不是应用程序开发的问题啊,只是举一个应用程序的例子来说明USB键盘驱动是否有问题。
以下是用于测试键盘的源代码,将usb键盘插到开发板的usb口上,用该程序多测几遍就知道具体是什么现象了。
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char *argv[])
{
int cnt = 10;
if (argc>1) {
cnt = atoi(argv);
}
FILE *fd = freopen("/dev/tty0", "r", stdin); //redirect stdin
if (fd==NULL) {
printf("freopen stdin failure!\n");
return -1;
}
for (int i=0; i<cnt; i++) {
printf("key=%x\n", getchar());
}
}
都这么长时间了,还没有个结果吗? seapex 发表于 2018-1-24 09:59
都这么长时间了,还没有个结果吗?
您好:
经我测试,USB键盘的使用是没有问题的,不过我没有使用您的程序,我的测试方法如下:
1、打开一个带有输入框的qt程序
2、连接USB键盘,点击输入框,输入即可(注意只能输入字符,不能切换输入法)
输入字符没有问题,证明驱动是没有问题的,您也可以用我说的方法测试一下,所以建议您再看一下您的测试程序,我抽时间也给您测试一下,请稍候 我们的程序没有用QT,用的是framebuffer 都快1年了,还没个结果吗? 今天终于找到原因了
问题原因:与系统控制台的 stdin 设备冲突了。
解决办法:修改/etc/inittab,将下行注释掉
1:2345:respawn:/sbin/getty 38400 tty1
页:
[1]