./dev/ttyUSB0
od
그래서 다음 명령을 사용했습니다.
od -x --endian=big < /dev/ttyUSB0
어제 사용했을 때 차단되지 않고 다음과 같이 탈출하거나 반환하지 않고 무언가만 표시했습니다.
0000000 55aa 03ff 0104 0616 835a a555 aaff 0302
0000020 1104 e0e1 025a a555 aa03 ff01 0506 8682 ...
하지만 오늘 사용하면 od
인쇄 후 즉시 중지되고 반환됩니다.
0000000
내가 여기서 무엇을 놓치고 있는지 아는 사람 있나요?
답변1
아마도 tty
장치는 표준 모드(tty 라인 규칙이 간단한 라인 편집기를 구현하는 모드)에 있으므로 eof
다른 쪽 끝에서 수신된 문자로 인해 (기본적으로 ^D
read()
) 아무것도 반환되지 않습니다.
달릴 때도 마찬가지
od -vx --endian=big
터미널에 입력하세요 Ctrl-D.
또 다른 설명은 표준 모드가 꺼져 있지만 VMIN
termios 설정이 0으로 설정되어 있다는 것입니다. VMIN = 0이면 read()
장치 파일의 a는 즉시 읽을 준비가 된 항목을 반환하고, 그렇지 않으면 아무것도 반환하지 않습니다(최종 파일을 의미)(VTIME > 0이 아닌 경우 VTIME을 기다림) 1초당 최소 1바이트 ).
이번에도 터미널에서 시도해 볼 수 있습니다.
s=$(stty -g); stty -icanon min 0 time 0; od -vx --endian=big; stty "$s"
다음 명령을 사용하여 현재 설정을 확인하십시오.
stty -a < /dev/ttyUSB0
/dev/ttyUSB0
데이터 전송에만 사용되며 터미널로는 사용되지 않는 직렬 장치인 경우 다음을 발행해야 합니다.
stty raw -echo < /dev/ttyUSB0
실제로 이는 tty 라인 규칙의 효과 대부분을 비활성화합니다.
바라보다각 PTY(의사 터미널) 구성 요소(소프트웨어, 마스터 측, 슬레이브 측)의 역할은 무엇입니까?자세한 내용은 termios(3)
매뉴얼 페이지를 참조하세요 .stty(1)