리눅스 커맨드 라인에서 시리얼로부터 읽기


51

Linux 명령 줄을 사용하여 테스트하려는 직렬 포트 장치가 있습니다.

직렬 포트로 명령을 보내기 위해 stty 및 echo를 사용할 수 있지만 장치가 응답 할 때 직렬 포트에서 오는 내용을 읽을 수있는 방법이 없습니다. 나는 사용하고있다

stty -F /dev/ttyS0 speed 9600 cs8 -cstopb -parenb && echo -n ^R^B > /dev/ttyS0

장치에 명령을 보냅니다. 장치가 작동하여 300ms 후에 응답을 보냅니다. 명령 행을 사용하여 콘솔에 해당 응답을 인쇄하려면 어떻게합니까?

답변:


56

출력과 동일합니다. 예:

cat /dev/ttyS0

또는:

cat < /dev/ttyS0

첫 번째 예는 직렬 포트를 열고 읽은 내용을 해당 stdout콘솔로 전달하는 앱입니다 (콘솔). 두 번째는 시리얼 포트 트래픽을 원하는 앱으로 보내는 쉘입니다. 이 특정 응용 프로그램은 단지 그것의 릴레이 stdin합니다 stdout.

트래픽에 대한 가시성을 높이려면 16 진 덤프를 선호 할 수 있습니다.

od -x < /dev/ttyS0

또는socat stdio /dev/ttyS0
pstanton

작업중인 장치에 명령을 보냈습니다. 명령은 다음과 같습니다. echo "1GAINS"| sudo tee / dev / ttyUSB0 .... 그리고 응답으로 동일한 메시지를 반복하는 무한 스트림이 나타납니다. 어떤 아이디어? 장치 자체는 한 번 보내는 명령을 다시 표시해야하지만 이상한 피드백을받는 것과 같습니다.
user391339

직렬 분석기를 사용하여 피드백이 "실제"가 아닌지 확인했습니다. 장치는 명령을 한 번만 에코하지만 위의 명령을 사용하면 터미널 출력에서 ​​끝없이 반복됩니다.
user391339

이진 데이터와 함께 작동합니까?
ransh

@ransh-답의 16 진 덤프 부분을보십시오. 궁극적으로 특정 바이너리 데이터를 이해하거나 리버스 엔지니어링 할 수있는 사람이나 도구가 필요합니다.
Jirka Hanika
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.