tsを使用してください!

tsを使用してください!

2 つの異なるデータを参照する必要があるため、シリアル ポートに cutecom を使用しています。これはタイムスタンプがあるためです。ただし、タイムスタンプ付きのこれらのデータをログに記録することはできず、ms の精度が必要です。何か提案はありますか?

ありがとう、セリム。

答え1

ターミナルエミュレータが必要ない場合は、すべての入出力をタイムスタンプ付きで記録するオプションsocatを使用できます-v。たとえば、

socat -v READLINE /dev/ttyS0,b19200,raw,echo=0 2>/tmp/log

ttyS0このコマンドのstdinに入力したものは、指定されたボーレートなどでシリアルポートに送信されます。シリアルポートからの入力はすべてstdoutに表示されます。/tmp/log次のような行があります。

> 2019/11/06 13:56:27.996129  length=6 from=0 to=5
hello
< 2019/11/06 13:56:37.024451  length=8 from=0 to=7
my reply

これは、「hello\n」と入力して「my reply」が返されるのと同じです。

答え2

tsを使用してください!

任意の Unix および Windows Subsystem for Linux (別名 WSL) では、ツールmoreutilsを含むパッケージをインストールできますtsts標準入力に入力されるテキスト データにタイムスタンプを追加します。

インストール例えばUbuntuの場合:

$ sudo apt-get install moreutils

使用法

シリアルポートが、例えば であると仮定するとttyS70、このコマンド ラインを実行すると、

  • このポートからシリアルデータを読み取ります( を使用cat)。
  • タイムスタンプを追加し( を使用ts)、
  • 結果の行を印刷し、同時にファイルに保存します( を使用tee)。
$ cat /dev/ttyS70 | ts | tee logfile

私の種類のシリアルデータの場合、結果は次のようになります。

Feb 14 18:37:03 13438 1     0     0.0     19  -80.00    0.00 1
Feb 14 18:37:03 13440 1     0     0.0     19  -80.00    0.00 1
Feb 14 18:37:04 13441 1     0     0.0     19  -80.00    0.00 1
Feb 14 18:37:04 13442 1     0     0.0     19  -80.00    0.00 1
Feb 14 18:37:04 13444 1     0     0.0     19  -80.00    0.00 1

この例では、シリアル ポートは 1 秒あたり 1 行以上を受信します。タイムスタンプの解像度は秒単位なので、複数の行に同じタイムスタンプが付きます。より高い解像度のタイムスタンプを追加するには、tsタイムスタンプのフォーマット方法を制御できます。たとえば、%.s1970 年からの秒数を 1 秒未満の解像度で表示します。

$ cat /dev/ttyS70 | ts %.s | tee logfile

結果的に

1676396776.277146 18963 1     0     0.0     19  -80.00    0.00 1
1676396776.405363 18964 1     0     0.0     19  -80.00    0.00 1
1676396776.532999 18966 1     0     0.0     19  -80.00    0.00 1
1676396776.660920 18967 1     0     0.0     19  -80.00    0.00 1
1676396776.789261 18968 1     0     0.0     19  -80.00    0.00 1
1676396776.917136 18969 1     0     0.0     19  -80.00    0.00 1

絶対時間データが必要ない場合は、スイッチを使用します-s。これにより、プログラムの開始からの経過時間が得られます。

$ cat /dev/ttyS70 | ts -s %.s | tee logfile

結果的に

0.072230 6459 42     0     0.0  20567 -100.00    0.00 1
0.199964 6459 42     0     0.0  20567 -100.00    0.00 1
0.311792 6460 42     0     0.0  20568 -100.00    0.00 1
0.439221 6460 42     0     0.0  20566 -100.00    0.00 1
0.567191 6460 42     0     0.0  20566 -100.00    0.00 1
0.694773 6460 42     0     0.0  20566 -100.00    0.00 1
0.822279 6461 42     0     0.0  20567 -100.00    0.00 1
0.950085 6461 42     0     0.0  20566 -100.00    0.00 1
1.061797 6461 42     0     0.0  20567 -100.00    0.00 1
1.189510 6461 42     0     0.0  20568 -100.00    0.00 1

関連情報