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
+를 사용하는 것을 잊지 마세요 !]