使用ts!

使用ts!

我使用 Cutecom 作為串行端口,因為它有時間戳,因為我需要引用兩個不同的數據。但我無法使用時間戳記記錄這些數據,並且需要精確的毫秒數。有什麼建議嗎?

謝謝,塞利姆。

答案1

如果您不需要終端模擬器,則可以使用socat使用-v時間戳記記錄所有 I/O 的選項。例如,

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

ttyS0無論您在此命令的標準輸入上鍵入什麼內容,都將以給定的波特率等發送到序列埠。在/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”並收到發回的“我的回覆”。

答案2

使用ts!

在任何 Unix 和 Windows Linux 子系統(又稱 WSL)中,您可以安裝moreutils包含該ts工具的軟體包。ts將時間戳記加入到饋送到其標準輸入的文字資料中。

安裝例如,在 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

在此範例中,序列埠每秒接收多於一行。由於時間戳分辨率為秒,因此多行具有相同的時間戳。要添加更高解析度的時間戳,ts讓您可以控制時間戳的格式。例如,%.s將以亞秒解析度顯示自 1970 年以來的秒數:

$ 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

相關內容