반응형
지금까지 짠 코드는 아래와 같다.
import serial
import re
ser = serial.Serial(port='COM8', baudrate=9600, bytesize=serial.EIGHTBITS,
parity=serial.PARITY_NONE, timeout=0.1)
while(True):
ser.close()
ser.open()
#값 불러오기
res=ser.readline()
#문자열로 변환
res=str(res)
#숫자 부분 추출, 추출 결과는 ['숫자'] 형태
res=re.findall("\d+.\d+",res)
#문자열 추출
res=res[0]
#실수로 변환
res=float(res)
print(res)
영점 조절을 하거나 tare 를 할 때 코드가 종료된다. 또는 영점조절 직후 무게가 0인 경우 코드가 종료된다. 알고보니 지금까지는 무게가 0.03g 이 최소여서 오류가 안났던 것이었다.
>>> res.readline()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'list' object has no attribute 'readline'
확인해보니 영점조절이나 tare시 숫자가 입력이 안되서, 숫자 추출 후 res 에 빈 리스트가 입력된다.
>>> res
[]
리스트가 비어있어서 res=res[0] 이 코드에서 오류가 난 것이다. if문을 이용하여 리스트가 비어있는 경우 res에 "set0" 을 입력하도록 수정하였다. 진짜 0이 나오는 상황과 구분하기 위해 0.0으로 입력하지 않은 것이다.
import serial
import re
ser = serial.Serial(port='COM8', baudrate=9600, bytesize=serial.EIGHTBITS,
parity=serial.PARITY_NONE, timeout=0.1)
while(True):
ser.close()
ser.open()
#값 불러오기
res=ser.readline()
#문자열로 변환
res=str(res)
#숫자 부분 추출, 추출 결과는 ['숫자'] 형태
res=re.findall("\d+.\d+",res)
#문자열 추출
if len(res)==0 :
res="set0"
else :
res=res[0]
#실수로 변환
res=float(res)
print(res)
반응형
'GUI 프로젝트 > 저울 연결하기 (시리얼통신) (Tkinter)' 카테고리의 다른 글
[파이썬 저울 연결] 8. GUI 만들기 #2. 라벨 추가하기 (0) | 2022.01.10 |
---|---|
[파이썬 저울 연결] 7. GUI 만들기 #1. 윈도우 만들기 (0) | 2022.01.07 |
[파이썬 저울 연결] 5. timeout 옵션에 대하여 (0) | 2022.01.07 |
[파이썬 저울 연결] 4. 문자열에서 무게만 추출하기 (0) | 2022.01.07 |
[파이썬 저울 연결] 3. 명령어 입력 시 현재 무게 받아오기 (0) | 2022.01.06 |
댓글