2013-07-07 2 views
0

지금 저는 USB Weatherboard V3를 사용 중입니다.PySerial을 사용하여 usb weatherboard에서 데이터를 가져옵니다.

데이터는/dev/ttyUSB *에서 1 초마다 지속적으로 전송됩니다 ... PySerial을 사용하여 데이터를 가져 오려고했지만 여전히 실패했습니다.

출력 콘솔에서 "RESET"을 얻을 수 있습니다. 데이터를 가져올 수 없습니다. 내가 원하는 무엇

는 출력이 같다 :

SHT15 temperature: 2.5   75.1 deg F   
SHT15 humidity:     65%     
SHT15 dewpoint:     62.7 deg F 
BMP085 pressure: 2 2011, 10:05:235.967 in Hg FAIL 
BMP085 temperature:    75.3 deg F   
TEMT6000 light:     0.1%     
Weather meters wind speed: speci0.0 MPH   FAIL 
Weather meters wind direction: -1 degrees  FAIL 
Weather meters rainfall:  0.00 inches  FAIL 
External power:     0.00 Volts  FAIL 

^이 (유닉스 시리얼 프로그램) 전무에서 왔습니다.

나를 도와 줄 사람이 있습니까?

, BTW이 내 코드가 현재 : http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Sensors/Weather/USB_Weather_Board_V3_datasheet_110615.pdf :

import serial; 
import io; 
import time; 
import os; 

# Weather board script #  

if __name__ == '__main__' : 
    try : 
     print '===================================\n' 
     print 'USB Weatherboard V3 - Python Script' 
     print 'Connection datasheet : ' 
     print '(+) Port : /dev/ttyUSB0' 
     print '(+) Baud rate : 9600' 
     print '(+) Type : 8N1' 
     print '===================================\n' 
     ser = serial.Serial(port='/dev/ttyUSB0', baudrate=9600, timeout=1, xonxoff=False, rtscts=False, dsrdtr=True) 

     while True : 
      arr = ser.readlines() 
      for strarr in arr : 
       s = strarr.decode('cp1252').replace('\00','') 
       #s2 = s.encode('ascii'); 
       s2 = s 
       if s2[1:3] != '[H' : 
        print s2 
        pass 
       pass 
      pass 
    except : 
     print 'Program exit !' 
     pass 
    finally : 
     ser.close() 

    pass 

내 앞에 코드를 가진 사람이 나를 :)

판자 v3의 데이터 시트와 함께 공유하시기 바랍니다 경우 내가 그것을 수정하거나 도와주세요

판자의 V3 제품 : https://www.sparkfun.com/products/10586

+0

나는 더 많은 정보를 제공합니다. :) 실제로는 제공하지 않았습니다. 오류가 있지만 미니 코어가 나에게주는 것과 같은 출력을 얻을 수 없습니다. – psuedobot

+0

소스 코드에서'problem : unknown character byte'에 대해 언급했습니다. 이것은 많은 오류 출력의 마지막/첫 번째가되어야합니다. – phihag

+0

오, 그게 하나의 이전 오류입니다 ... 지금은 오류가 아니지만 내 스크립트는 내게 줄 Minicom 같은 측정을주지 않았어 ... – psuedobot

답변

0
arr = ser.readlines() 

모두 행을 직렬 장치에서 읽어 와서 만 반환합니다. 기기가 무한 데이터를 보내고 있기 때문에 다음과 같이 내용을 작성하는 동안 줄을 반복해야합니다.

import serial 
if __name__ == '__main__': 
    with serial.Serial(port='/dev/ttyUSB0', baudrate=9600, timeout=1, 
         xonxoff=False, rtscts=False, dsrdtr=True) as s: 
     for line in s: 
      print(s) 
+0

시도해 보았지만 때로는 weatherboard를 연결할 수없는 경우가 있습니다. 녹색 등이 희미해질 때까지 다시 연결해야합니다. – psuedobot

+0

@psuedobot 이 답변으로 대부분의 경우 원래 문제가 해결되었지만 몇 가지 연결 오류가 있다는 점을 정확하게 이해했는지 이해하고 있습니까? 그렇다면 실제로 문제가있는 프로그램인지 확인한 후 새 질문을 엽니 다 (프로그램을 실행하지 않은 경우) , 당신은 여전히 ​​같은 행동을 볼 수 있습니까?) – phihag

+0

하지만 올바른 솔루션을 생각 (연결 매개 변수 직렬) .. 나는 정답으로 표시됩니다 Logged – psuedobot

관련 문제