私はしばしばcat
シリアル接続を介してFPGAボードのコンソールからデバッグ情報を表示しますが、転送速度が何であるかをLinuxに通知する必要はありません。猫はシリアル接続の転送速度が何であるかをどうやって知ることができますか?
答え1
これstty
ユーティリティは、デバイスのターミナルI / O特性を標準入力に設定または報告します。これらの特性は、特定のメディアを介して接続を確立するために使用されます。cat
Baud Rate自体はわかりませんが、特定の接続から受け取った情報を画面に出力します。
たとえば、stty -F /dev/ttyACM0
ttyACM0 デバイスの現在の転送速度が提供されます。
答え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進数です。#define
B9600
get-baud-rate
たぶんあなたはそれを試してみて、新しいブーツの数がどのように見えるか、そして将来に変化があるかどうかを確認することができます。
答え3
シリアルポートは、cat
以前に使用されたボーレートまたはデフォルトボーレートを想定します。転送速度を変更する必要がある場合は、stty
次のように使用できます。
stty -F /dev/ttyS1 115200
cat /dev/ttyS1
上記のコマンドはボーレートを/dev/ttyS1
115200に設定します。その後、catを使用すると、115200のボーレートで動作します。