인터페이스에서 출력을 리디렉션하시겠습니까?

인터페이스에서 출력을 리디렉션하시겠습니까?

모뎀 인터페이스( /dev/ttyUSB3)에 AT 명령을 에코하고 있는데 명령이 성공적으로 실행됩니다.

예를 들어 아래 명령은 작동하며 다음과 같은 출력을 갖습니다 OK.

echo -e "ATZ\r" > /dev/ttyUSB3

활성화 된 다른 터미널을 가짐으로써 이를 확인할 수 있습니다 cat /dev/ttyUSB3.

모뎀에서 반환된 데이터를 처리할 수 있도록 를 사용하는 대신 cat(예: 하나의 명령을 사용하여 명령을 보내고 출력을 다시 가져오는 것) 출력을 변수나 파일로 리디렉션하려면 어떻게 해야 합니까?OK

답변1

일반 파일과 마찬가지로 직렬 장치를 사용해야 합니다. 유일한 차이점은 속도 및 제어 라인 설정을 수행하려면 일부 ioctl()이 필요하다는 것입니다.

os.system("echo그러니 ...를 사용하지 마세요 . 그러나 f = open('/dev/ttyUSB3', 'rw')그리고 그리고 f.write()그리고 f.read().

ioctl()이론적으로는 속도 등을 설정하는 데 사용할 수 있지만 그 단계에서는 모든 매개변수를 마샬링하는 것보다 pySerial을 사용하는 것이 더 쉽습니다. ser = serial.Serial(port='/dev/ttyUSB3', baudrate=9600, timeout=1, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS)와 .ser.write()ser.read()

직렬 포트의 고유한 이름을 설정하려면 /dev/ttyUSB3을 하드 코딩하는 대신 udev를 사용해야 합니다. 이를 수행하는 방법은 다음과 같습니다.단일 USB/RS-232 어댑터그리고 그 방법은 다음과 같습니다멀티포트 USB/RS-232 어댑터.

답변2

read modem_output < /dev/ttyUSB3

관련 정보