Python에서 Threading 예제

시리얼 포트로 들어오는 데이터 처리하는 가운데 Blocking 때문에 발생하는 이슈가 있음

우선은 단순히 non-blocking 모드로 serial 오픈하고, 정해진 byte 만 읽어오는 방식으로 수정해서 돌아는 가는데 좀더 fancy 한 방법이 보여서 스크랩

Readline을 별도의 스레드로 빼는 방법인데, 이렇게하면 정해진 바이트가 아니어도 데이터 처리하는데 문제가 없을듯.. 나중에 수정해보자

출처는 https://stackoverflow.com/questions/17553543/pyserial-non-blocking-read-loop

import threading
import serial

connected = False
port = 'COM4'
baud = 9600

serial_port = serial.Serial(port, baud, timeout=0)

def handle_data(data):
    print(data)

def read_from_port(ser):
    while not connected:
        #serin = ser.read()
        connected = True

        while True:
           print("test")
           reading = ser.readline().decode()
           handle_data(reading)

thread = threading.Thread(target=read_from_port, args=(serial_port,))
thread.start()

Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *