在getchar()上的Raspberry Pi回声

问题描述 投票:0回答:1

我需要在raspberry pi上为UART编写终端。我的想法是按下连接到我的覆盆子的键盘上的键并通过UART发送它,然后打印覆盆子通过UART接收的内容。

问题在于树莓派的回声。我不需要这个,但我不知道如何禁用它。我用这个函数:

int kbhit(void)
{
    struct termios oldt, newt;
    int ch;
    int oldf;

    tcgetattr(STDIN_FILENO, &oldt);
    newt = oldt;
    newt.c_lflag &= ~(ICANON | ECHO);
    tcsetattr(STDIN_FILENO, TCSANOW, &newt);
    oldf = fcntl(STDIN_FILENO, F_GETFL, 0);
    fcntl(STDIN_FILENO, F_SETFL, oldf | O_NONBLOCK);
    ch = getchar();
    tcsetattr(STDIN_FILENO, TCSANOW, &oldt);
    fcntl(STDIN_FILENO, F_SETFL, oldf);
    if(ch != EOF)
    {
        return ch;
    }
    return 0;
}

有时候没有回音。

例如我输入的是:abcdefgh 但是节目让我回答:abbccddeefghh

raspberry-pi getchar raspbian
1个回答
0
投票

我只是评论说

tcsetattr(STDIN_FILENO, TCSANOW, &oldt);

而它没有回声。看起来负责清除回声的东西几乎没有时间去做。

© www.soinside.com 2019 - 2024. All rights reserved.