반응형
    
    
    
  지금까지 짠 코드는 아래와 같다.
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 | 
 
										
									 
										
									 
										
									
댓글