tty에 대한 동기/순차 읽기/쓰기

tty에 대한 동기/순차 읽기/쓰기

에 있는 장치와 통신하려고 합니다 /dev/ttyACM0. 다음 명령을 보내기 전에 명령을 작성하고 응답(ACK)을 기다려야 합니다.

나는 다음을 발견했다기사이것을 구현하는 방법에 관해서는 내 사용 사례에 맞게 작동하도록 할 수 없습니다. 내 생각에는 수신되는 데이터에 대한 이해가 부족하고 새 줄로 종료되지 않는 것 같습니다.

터미널을 열고 cat을 사용합니다.

cat -v /dev/ttyACM0

그런 다음 다른 터미널에서 인쇄합니다.

printf 'S0100000FF\x0d' > /dev/ttyACM0

터미널에서 tty를 읽을 때 받는 응답은 입니다 ^F. 다른 명령을 보내면 같은 줄에 다른 명령이 인쇄됩니다. 이제 해당 줄이 표시되므로 ^F^F새 줄로 끝나지 않는 것 같습니다.

위에 링크된 기사의 읽기 명령을 사용하는 경우(별도의 터미널에서):

(read -n 60 -t 20 RESP < /dev/ttyACM0; echo $RESP)&
[1] 21028

그런 다음 쓰기 터미널의 후속 쓰기는 읽기 터미널을 트리거하여 다른 것을 표시하지 않습니다.

또한 간단히 인쇄한 다음 tty에서 읽으려고 시도하여 완전히 동기식 쓰기를 시도했습니다.

printf 'S0100000FF\x0d' > /dev/ttyACM0
cat -v /dev/ttyACM0
# Blank, nothing in file

내 문제는 세 가지 질문으로 요약됩니다.

  1. 그것은 실제로 무엇을 의미하는가 ^F? 나는 ^M그것이 캐리지 리턴 문자라는 것을 알고 있지만 이러한 유형의 문자가 무엇인지 모릅니다(예: 접두사 문자 ^).
  2. 나는 tty가 단지 파일인 줄 알았는데 이전 예(서로 인쇄하고 읽기)에서 왜 파일이 ​​비어 있습니까?
  3. 동기식 읽기/쓰기 스크립트의 목적에 맞게 링크된 기사를 어떻게 조정합니까?

관련 정보