pySerial은 Python에서 시리얼 포트를 다루는 라이브러리입니다. 이 자료는 포트 찾기 → 소프트웨어 루프백 → 실제 수신 바이트 확인 순서로 문제를 좁혀 가는 실습 안내입니다. 첨부 ZIP에는 한국어 안내서와 직접 작성한 Python 예제 세 개가 들어 있습니다. pySerial 자체와 장치 드라이버는 포함하지 않습니다.
1. 준비와 설치
Windows에 Python 3가 설치되어 있다고 가정합니다. 명령 프롬프트 또는 PowerShell에서 아래 명령을 실행합니다. py 명령이 없다면 Python 설치 상태를 확인하고, 사용 중인 환경의 python 명령으로 바꿉니다.
py -m pip install pyserial
py -m serial.tools.list_ports -v
설치 패키지 이름은 pyserial, Python에서 가져오는 모듈 이름은 serial입니다. 설치 방법은 pySerial 공식 설치 문서를 참고하세요.
포트 목록에서 COM3 같은 이름과 설명, USB VID·PID를 확인합니다. 목록을 연결 전후로 비교하면 대상 어댑터를 찾는 데 도움이 됩니다. USB 세부 정보는 장치와 운영체제에 따라 없을 수 있으며, 포트가 표시된다는 사실만으로 배선이나 통신 성공이 확인되지는 않습니다. 공식 포트 조회 문서
2. 장비 없이 루프백 확인
첨부 파일의 압축을 풀고 해당 폴더에서 실행합니다.
py loopback_check.py
정상 실행 결과는 다음과 같습니다.
TX: 4a 2d 49 4f 54 2c 32 33 2e 35 0d 0a
RX: 4a 2d 49 4f 54 2c 32 33 2e 35 0d 0a
PASS: software loopback
예제는 serial.serial_for_url("loop://", ...)를 사용합니다. 보낸 데이터를 소프트웨어 내부에서 되돌려 받으므로 USB 어댑터나 배선이 필요 없습니다. 이 테스트는 Python 실행 환경과 송수신 코드의 기본 동작을 확인하며, 실제 UART 전기 신호나 장치 응답을 검증하지 않습니다. 공식 loop:// 문서
3. 실제 장치의 원시 데이터 확인
대상 장치의 통신 문서에서 포트 속도와 데이터 비트·패리티·정지 비트를 먼저 확인합니다. 아래 예제는 115200 bps, 8N1, 흐름 제어 없음인 장치가 스스로 데이터를 보내는 상황을 가정합니다. COM3은 실제 포트 이름으로 바꾸세요.
py serial_receive.py COM3 --baud 115200
약 10초 동안 받은 데이터를 HEX와 Python 바이트 표현으로 출력하고 종료합니다. 0d 0a는 CR·LF, 0a는 LF입니다. 이 스크립트는 응용 명령을 송신하지 않으므로 요청을 받아야 응답하는 장치는 조용할 수 있습니다. 다른 통신 형식은 serial_receive.py의 설정을 장치 문서에 맞게 수정해야 합니다.
포트를 열 때 드라이버가 DTR·RTS 상태를 바꿀 수 있습니다. 이 신호가 리셋에 연결된 보드는 재부팅될 수 있으므로, 실행 전 보드의 연결 방식을 확인하세요. pySerial 포트 설정과 제어선 설명
4. 증상별 점검 순서
| 증상 | 확인할 항목 |
|---|---|
| 포트 목록에 대상이 없음 | 케이블·USB 연결, 장치 관리자, 어댑터 제조사의 드라이버 |
| 포트를 열 수 없음 | 포트 이름, 다른 터미널의 사용 여부, 운영체제 접근 권한 |
| 열리지만 수신량이 0바이트 | 장치 전원, 송신 조건, RX·TX 연결, 문서에 정해진 통신 설정 |
| 문자가 깨짐 | HEX 원본, 통신 속도·패리티, 텍스트 인코딩, 바이너리 프로토콜 여부 |
| 한 줄이 여러 번에 나뉘어 출력됨 | 수신 청크와 메시지 경계를 구분하는 파서 필요 |
전기 연결은 장치 문서를 따릅니다. TTL UART, RS-232, RS-485는 같은 전기 인터페이스가 아니므로 각 인터페이스에 맞는 어댑터를 사용하세요.
5. 첨부 예제와 다음 단계
loopback_check.py: 물리 포트를 열지 않는 소프트웨어 루프백 실습.serial_receive.py: 실제 포트에서 약 10초 동안 수신한 원시 바이트 표시.line_framer.py: LF 기준으로 나뉜 데이터를 조립하는 학습용 파서.README-KO.md: 이 안내서.
수신 데이터가 끊겨 들어오거나 여러 줄이 한꺼번에 들어오는 이유와 파서 구현은 UART 수신 파서 설계: 분할 수신·연속 수신·버퍼 한도 처리하기에서 이어서 설명합니다. GUI 터미널이 필요하면 Tera Term 사용 안내도 참고하세요.
작성 기준: 2026-09-17. Python 예제는 소프트웨어 루프백과 분할 입력으로 확인했으며, 특정 보드·배선의 실측 결과를 의미하지 않습니다.