ラズベリーパイで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