猫はシリアルポートの転送速度をどのように知ることができますか?

猫はシリアルポートの転送速度をどのように知ることができますか?

私はしばしばcatシリアル接続を介してFPGAボードのコンソールからデバッグ情報を表示しますが、転送速度が何であるかをLinuxに通知する必要はありません。猫はシリアル接続の転送速度が何であるかをどうやって知ることができますか?

答え1

これsttyユーティリティは、デバイスのターミナルI / O特性を標準入力に設定または報告します。これらの特性は、特定のメディアを介して接続を確立するために使用されます。catBaud Rate自体はわかりませんが、特定の接続から受け取った情報を画面に出力します。

たとえば、stty -F /dev/ttyACM0ttyACM0 デバイスの現在の転送速度が提供されます。

答え2

catポートで設定した設定を使用できます。この小さなCコードフラグメントを使用すると、特定のシリアルポートに現在設定されている転送速度を確認できます。

転送速度を取得します。c

#include <termios.h>
#include <unistd.h>
#include <stdio.h>

int main() {
  struct termios tios;
  tcgetattr(0, &tios);
  speed_t ispeed = cfgetispeed(&tios);
  speed_t ospeed = cfgetospeed(&tios);
  printf("baud rate in: 0%o\n", ispeed);
  printf("baud rate out: 0%o\n", ospeed);
  return 0;
}

走る:

./get-baud-rate < /dev/ttyS0 # or whatever your serial port is

あなたが得る番号は、sなどが/usr/include/asm-generic/termios.hあるところで見つけることができます。ヘッダファイルと出力の数字は8進数です。#defineB9600get-baud-rate

たぶんあなたはそれを試してみて、新しいブーツの数がどのように見えるか、そして将来に変化があるかどうかを確認することができます。

答え3

シリアルポートは、cat以前に使用されたボーレートまたはデフォルトボーレートを想定します。転送速度を変更する必要がある場合は、stty次のように使用できます。

stty -F /dev/ttyS1 115200
cat /dev/ttyS1

上記のコマンドはボーレートを/dev/ttyS1115200に設定します。その後、catを使用すると、115200のボーレートで動作します。

関連情報