2013-10-31 139 views
0

我需要在树莓派写UART终端。这个想法是按键盘上的键连接到我的树莓并通过UART发送,然后打印通过UART接收的树莓。树莓派回声在getchar()

问题是在覆盆子pi回声。我不需要这个,但我不知道如何禁用它。我使用这个功能:

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

我只是注释行

tcsetattr(STDIN_FILENO, TCSANOW, &oldt); 

,它的工作没有回音。看起来像负责清除回声的东西没有时间去做。