stdin 및 stdout과 함께 minicom을 사용하는 방법은 무엇입니까?

stdin 및 stdout과 함께 minicom을 사용하는 방법은 무엇입니까?

Python을 사용하여 USB-RS-232 변환기를 통해 장치와 통신해야 합니다. 앱은 minicom원활하게 작동하므로 비대화형 모드에서 실행할 수 있다면 모든 것이 좋을 것입니다.

문서를 읽어보면 몇 가지 흥미로운 옵션이 있지만 그 중 어떤 것도 완전히 이해하지 못합니다.

 -t   Terminal type. With this flag, you can override the environment 
      TERM variable. 

 -S   script.   Run  the named script at startup.

내 앱과 사이에 데이터를 어떻게 전송하나요 minicom? 다른 것을 사용해야 하나요?

답변1

minicom대화형 사용에는 적합하지만 I/O 프로그래밍에 적합한 도구는 아닙니다.

/dev로컬 Python 프로그램은 노드의 직렬 포트를 열어야 합니다 . 파일에 쓰는 것과 동일하게 작동합니다.

fd = os.open('/dev/ttyUSB0', os.O_RDWR)
fd.write(...)

유일한 까다로운 부분은 비트 전송률 등을 설정하는 것입니다. 이렇게 하려면 다음을 사용하세요.Python termios 라이브러리:

attr = termios.tcgetattr(fd)
attr[5] = attr[6] = termios.B9600
termios.tcsetattr(fd, termios.TCSANOW, attr)

이에 대한 Python 문서에서는 이미 C에서 이 API를 사용하고 있으며 Python으로 변환하는 데 도움이 필요하다고 가정합니다. 따라서 이 길을 간다면 Stevens나 Largo와 같은 고전적인 방법을 사용해야 합니다.Unix 환경의 고급 프로그래밍.

더 높은 수준의 라이브러리는 수준을 뛰어 넘어 termios*ix 유형이 아닌 시스템으로의 이식성을 제공할 수 있습니다.py 직렬 포트.

답변2

위의 Warren Young의 답변은 정확하지만 게으름을 위해 더 나은 답변이 있습니다.

cat $file > /dev/ttyUSB0또한 작동합니다. tc(g|s)etattr호출 의 경우 stty명령(예 stty -F /dev/ttyUSB0 9600: )으로 처리됩니다!

답변3

사용 miniterm.py! 그것은pySerial 모듈에 포함되어 있습니다.워렌은 그의 답변에서 언급했습니다.

출력은 항상 stdout에 있으므로 파이프하고, tee하고, grep하고, awk하고, sed하고, 인쇄하고, 압축하고, 압축을 풀 수 있습니다.

pip를 사용하여 사용자를 위해 설치하고 실행할 수 있도록 miniterm.py배치해야 합니다 .~/.local/bin

$ pip3 install pySerial
$ miniterm.py /dev/ttyUSB0
--- Miniterm on /dev/ttyUSB0  9600,8,N,1 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---

그래도 작동하지 않으면 직렬 모듈을 실행할 수도 있습니다.

$ python3 -m serial /dev/ttyUSB0
--- Miniterm on /dev/ttyUSB0  9600,8,N,1 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---

종료하려면 Ctrl+를 사용하는 것을 잊지 마세요 !]

관련 정보