私は定期的にcat
を使用して、シリアル接続を介してFPGA開発ボードからコンソールにデバッグ情報を表示していますが、ボーレートが何であるかをLinuxに伝える必要はありませんでした。 catはシリアル接続のボーレートをどのようにして知るのですか?
stty
ユーティリティは、標準入力であるデバイスの端末I/O特性を設定または報告します。これらの特性は、その特定のメディアを介して接続を確立するときに使用されます。 cat
はボーレート自体を知らないため、特定の接続から受信した情報を画面に出力します。
例としてstty -F /dev/ttyACM0
は、ttyACM0デバイスの現在のボーレートを示します。
cat
は、ポートがすでに構成されている設定を使用します。この小さなCスニペットを使用すると、特定のシリアルポートに現在設定されているボーレートを確認できます。
get-baud-rate.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
取得した数値は/usr/include/asm-generic/termios.h
で検索できます。#define
などのB9600
sがあります。ヘッダーファイルとget-baud-rate
出力の数値は8進数で。
たぶん、これらの数値が新しいブートでどのようになり、後で変更されるかどうかを実験して確認できます。