seapex 发表于 2017-12-27 19:19:38

应用程序为何收不到标准键盘的输入

本帖最后由 seapex 于 2017-12-28 08:07 编辑

在应用程序中用下列语句重定向标准输入到标准键盘
freopen("/dev/tty0", "r", stdin);
再用 getchar() 接收键盘输入,但收不到按键输入,偶尔能收到回车。
注:键盘插在开发板的 USB host 口上

飞凌-chongzi 发表于 2017-12-29 09:13:13

您好:
    不好意思,应用程序开发不在我们的技术支持范畴,这个我们这没有相应实例可以提供,敬请谅解

seapex 发表于 2017-12-29 19:10:40

这。。。我问得不是应用程序开发的问题啊,只是举一个应用程序的例子来说明USB键盘驱动是否有问题。

seapex 发表于 2018-1-2 17:10:38

以下是用于测试键盘的源代码,将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:42

都这么长时间了,还没有个结果吗?

飞凌-chongzi 发表于 2018-1-24 16:51:18

seapex 发表于 2018-1-24 09:59
都这么长时间了,还没有个结果吗?
您好:
    经我测试,USB键盘的使用是没有问题的,不过我没有使用您的程序,我的测试方法如下:
1、打开一个带有输入框的qt程序
2、连接USB键盘,点击输入框,输入即可(注意只能输入字符,不能切换输入法)
    输入字符没有问题,证明驱动是没有问题的,您也可以用我说的方法测试一下,所以建议您再看一下您的测试程序,我抽时间也给您测试一下,请稍候

seapex 发表于 2018-1-26 10:43:35

我们的程序没有用QT,用的是framebuffer

seapex 发表于 2018-11-29 09:13:11

都快1年了,还没个结果吗?

seapex 发表于 2018-12-24 18:16:03

今天终于找到原因了
问题原因:与系统控制台的 stdin 设备冲突了。
解决办法:修改/etc/inittab,将下行注释掉
1:2345:respawn:/sbin/getty 38400 tty1
页: [1]
查看完整版本: 应用程序为何收不到标准键盘的输入