본문 바로가기
지속가능티끌/Python

파이썬 . 시리얼 com 포트 통신 . PySerial

by i.got.it 2026. 7. 26.

 

 

파이썬 .  시리얼 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


 

댓글



비트코인




            암호화폐/외환/나스닥/골드          
       
현물 |선물 인버스 |선물 USDT , bybit MT5               프랍 트레이딩. MT4,MT5