我需要在树莓派上为 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