使用 ts!

使用 ts!

我使用 cutecom 作为串行端口,因为它有时间戳,因为我需要引用两个不同的数据。但我无法记录带有时间戳的数据,并且需要毫秒级的精度。有什么建议吗?

谢谢,塞利姆。

答案1

如果你不需要终端仿真器,你可以使用带有时间戳记录所有 i/o 的socat选项-v。例如,

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 和适用于 Linux 的 Windows 子系统(又名 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

相关内容