2013-10-31 138 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); 

,它的工作沒有迴音。看起來像負責清除回聲的東西沒有時間去做。