catはシリアルポートのボーレートをどのように知るのですか?


24

catシリアル接続を介してFPGA開発ボードからコンソールでデバッグ情報を表示するために定期的に使用しますが、Linuxにボーレートを知らせる必要はありませんでした。catは、シリアル接続のボーレートをどのように知るのですか?


たとえばminicom以前にポートを設定しませんでしたか?ここでは機能しません。使用できるシリアルポートパラメータを設定した後にのみcat
マルコ

ボーレートを設定または認識せず、デバイスから読み取ります。
ウルリッヒダンジェル

@ Marco、Debianにデフォルトのボーレート設定があるかどうかはわかりませんが、どこにも設定していません。
スタンリ

回答:


34

sttyユーティリティセットまたは標準入力であるデバイス用の端子I / O特性のレポート。これらの特性は、その特定のメディアを介して接続を確立するときに使用されます。catボーレートを知らないので、特定の接続から受け取った情報を画面に出力します。

例として、stty -F /dev/ttyACM0ttyACM0デバイスの現在のボーレートを示します。


1
しかし、styはボーレートについてどのように知っていましたか?この答えは、ボーレートが自動検出できるか、ある時点で設定された場合(つまりを介してstty
人類

@humanityANDpeaceデフォルトのボーレートはたまたま使っていたものだと思います。後でデバイスのボーレートを変更したときに、stty経由で変更する必要がありました。
stanri

9

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でが存在するで検索できます。ヘッダーファイルと出力の数値は8進数であることに注意してください。#defineB9600get-baud-rate

たぶん、これらの数値が新しいブートでどのようなものか、後で変更するかどうかを実験して確認できます。


2
sttyこれを行うコマンドを見つけました。たとえばstty -F /dev/ttyACM0、デバイスに適した現在のボーレートが表示されます。
スタンリ

もちろん、それははるかに良いアイデアです。
クラック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.