두 가지 다른 데이터를 참조해야 하기 때문에 타임스탬프가 있으므로 직렬 포트에 Cutecom을 사용하고 있습니다. 하지만 타임스탬프를 사용하여 이러한 데이터를 기록할 수 없으며 ms 단위의 정확성이 필요합니다. 어떤 제안이 있나요?
고마워요, 셀림.
답변1
터미널 에뮬레이터가 필요하지 않은 경우 타임스탬프와 함께 모든 I/O를 기록하는 옵션 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 및 Linux용 Windows 하위 시스템(WSL이라고도 함)에 도구가 moreutils
포함된 패키지를 설치할 수 있습니다 ts
. ts
표준 입력에 제공되는 텍스트 데이터에 타임스탬프를 추가합니다.
설치예를 들어 우분투에서:
$ 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