반응형
다음과 같은 직렬 데이터를 읽고 있습니다.
connected = False
port = 'COM4'
baud = 9600
ser = serial.Serial(port, baud, timeout=0)
while not connected:
#serin = ser.read()
connected = True
while True:
print("test")
reading = ser.readline().decode()
문제는 bottle py 웹 프레임 워크를 포함하여 다른 것이 실행되는 것을 방지한다는 것입니다. sleep ()
추가는 도움이되지 않습니다.
"while True" "를"while ser.readline () : "으로 변경하면"test "가 출력되지 않습니다. 이것은 Python 2.7에서 작동했기 때문에 이상합니다. 무엇이 잘못 될 수 있는가?
이상적으로는 가능한 경우에만 직렬 데이터를 읽을 수 있어야합니다. 1,000ms마다 데이터가 전송됩니다.
해결 방법
예를 들어, 별도의 스레드에 넣으십시오.
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()
참조 페이지 https://stackoverflow.com/questions/17553543
반응형
'파이썬' 카테고리의 다른 글
파이썬 `anaconda`는 각각의 새로운 환경에 대해 별도의 PYTHONPATH 변수를 생성합니까? (0) | 2021.01.14 |
---|---|
파이썬 PythonMagick의 문서 및 예제 (0) | 2021.01.14 |
파이썬 목록 대 배열-언제 사용합니까? (0) | 2021.01.13 |
파이썬 `with open (...)`과`sys.stdout`을 모두 멋지게 처리하는 방법은 무엇입니까? (0) | 2021.01.13 |
파이썬에서 역 인덱싱? (0) | 2021.01.13 |
댓글