ttyACM0이 연결되었지만 수신된 데이터가 표시되지 않습니다.

ttyACM0이 연결되었지만 수신된 데이터가 표시되지 않습니다.

USB 인터페이스가 있는 STM32F4 마이크로 컨트롤러가 있고 이를 Raspberry Pi에 연결합니다. 연결되면 로 표시됩니다 /dev/ttyACM0. 매초마다 장치에서 일부 문자를 보내고 있습니다.

창문에서는 퍼티를 사용하면 모든 것이 잘 작동합니다. 캐릭터 잘 받았습니다.

Raspberry Pi에서 다음 명령을 실행하면:

>> sudo tail -f /dev/ttyACM0  

화면에는 아무것도 표시되지 않습니다. 내 디버거에서 장치가 "정지"되지 않고 올바르게 전송되는 것처럼 보입니다.

명령이 실행되지 않으면 tail장치(간단한 프로그램 포함)가 정지되고 감시 타이머가 시간 초과됩니다.

퍼티가 목록에 없을 때 Windows에서 동일한 증상이 나타나므로 이 동작은 정상적인 것 같습니다.

보낸 문자를 어떻게 표시하나요?

이게 권리 문제인가요? 다른 프로그램을 사용해야 하나요? 포럼에서 몇 가지 제안을 시도해 보았습니다. 99-com.rules, set all rights to/dev/ttyACM0`에서 규칙을 변경했지만 운이 없었습니다.

답변1

PuTTY는 터미널 에뮬레이터이므로 한 번에 한 문자를 처리하도록 설계되었습니다.

반면 tail에 명령 설계로 인해 또는 TTY 드라이버가 출력을 버퍼링하기 때문에(기본 설정이 재정의되지 않는 한) 기본적으로 전체 문자 라인이 필요할 수 있습니다.

.minicomcu​작동하지만 사용하기에 적합하지 않다고 판단되는 경우 stty -a -F /dev/ttyACM0포트를 사용하는 동안 TTY 장치 설정 목록을 사용한 다음 stty명령을 사용하여 해당 설정을 재현한 후 사용할 수 있습니다 tail -f. 이 사용 사례에 필요하지 않은 모든 TTY 장치 기본 기능을 비활성화하려면 다음과 같은 것이 필요할 수 있습니다.

stty -F /dev/ttyACM0 -crtscts ignbrk -icrnl -onlcr -ixon -opost -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke

참고: stty옵션 구문은 더 이상 사용되지 않습니다. 각 옵션 키워드 앞에 있는 빼기 기호는장애를 입히다해당 TTY 장치 옵션; 빼기 기호 없이 키워드를 사용하면 활성화됩니다.

tail사용 중인 명령 버전(아마도 GNU 패키지뿐만 아니라 RasPi에서 실행 중인 배포판 coreutils에서도 가능 )이 완전히 라인 지향적이고 변경할 수 없는 것으로 밝혀지면 여전히 적합하지 않을 수 있습니다. busybox때때로 마이크로컨트롤러가 보낸 문자에 Unix 스타일 개행 문자가 포함되어 있는 경우가 아니면 작업을 위해. (마이크로컨트롤러가 LF 대신 CR을 보내는 경우 icrnl해당 옵션을 활성화하면 TTY 드라이버가 문제를 해결할 수 있습니다.)

답변2

#!/bin/bash
cat < /dev/ttyACM0 | awk 'BEGIN { FS = "," } {OFMT = "%2.5f"}\
/GPGGA/ { print "ID: ", $1, "Time: ", $2, "Lat: ", $3, "Lon: ", $5, "Höhe: ", $10}' > data

이 스크립트는 라즈베리파이용입니다. 데이터는 "data" 파일에 저장됩니다.

관련 정보