我需要在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
答案 0 :(得分:0)
我刚评论了一行
tcsetattr(STDIN_FILENO, TCSANOW, &oldt);
它没有回声。看起来负责清除回声的东西几乎没有时间去做。