파이썬 . 시리얼 com 포트 통신
PySerial 설치
- 내부적으로 Win32 API 이용
- 설치 : pip install PySerial

주요 구현 개념
Baud Rate
USB CDC 로 인식된 com 포트의 경우 Baud Rate 설정값은 통신속도를 제한하지 않는다. 1115200 bps 로 해도 실제 통신속도는 USB 규격상 허용되는 최대 대역폭 내에서 이뤄지므로 고속 통신도 가능.
OS 수신버퍼 크기 확장
윈도우의 기본 버퍼는 개략 4kByte~16kbyte 정도이다. 수신 후 처리부 부하증가로 읽기 처리 못하면 버퍼 오버플로우로 데이터 유실 생길수도 있기에 고속 통신에서도 데이터 유실 없이 수신하려면 OS커널 버퍼 용량 증가( 예 : 1Mbyte 이상) 하는게 좋다.
Read 단위 (1바이트씩 읽기 금지)
1바이트식 반복 수신하는 방식은 좋지 않은 방식이다. 버퍼에 쌓여있는 바이트 전체를 한번에 모두 읽어오기 한다.
읽기 - 후처리 스래드 분리
COM 포트에서 읽어오기 스래드와 , 읽은 데이터를 후처리(파싱, 연산 등) 부는 분리 구현한다.
com 포트 수신 코드1. 기본
- com port 오픈하고 수신된 데이터 시험 출력.
- 후처리 스레드 없이 간단하게 확인하는 용도.
코드1 . 실행결과
- 기기( MCU : nRF52840 USB CDC )와 PC 와 USB 경유 com15 로 잡혀있는 상태.
- 기기에서 1ms 마다 100바이트 송신중.
- 100바이트를 읽은 경우도 있고 200바이트를 읽는 경우도 있다. 즉 100바이트 읽고 처리하는 동안 기기측에서 보낸 것이 버퍼에 누적되어 저장되고 있고 데이터 유실 없이 잘 수신함을 알 수있다.

수신된 데이터를 모두 출력해본다.
- 데이터 출력 처리 부하 증가하여 200, 300 바이트 단위로 읽기 처리 됨을 알 수있다.

com 포트 수신 코드2. que + thread
함수 run_serial_receiver(): 내에서 수신된 데이터는 스레드로 실행된 consumer_processing_thread(): 내에서 버퍼 buffer_bytes_seq 에 누적 저장하면서 후처리 실행하는 구조.
com 포트 송신 코드 1. 기본
com 포트 송신 코드 2. COBS encoding 된 프레임 송신
- cobs 라이브러리 설치.

첫 등록 : 2026.07.26
최종 수정 :
단축 주소 : https://igotit.tistory.com/6694
'지속가능티끌 > Python' 카테고리의 다른 글
| plotly . 다이아그램 그리기 (0) | 2024.08.24 |
|---|---|
| plotly . 웹으로 챠트 표현 (0) | 2024.08.23 |
| Python . Pandas DataFrame 클래스 (0) | 2024.08.22 |
| chatGPT 에 코딩 해달라고 해봤다. (0) | 2024.08.17 |
| 파이썬 포터블 개발환경 구축 - 설치 방식. (0) | 2024.08.16 |
댓글