2013-07-07 116 views
0

我現在正在使用USB Weatherboard V3。使用PySerial從usb weatherboard獲取數據

數據每隔1秒從/ dev/ttyUSB *連續發送...我嘗試使用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 

^它來自小型機(UNIX串行程序)。

有人可以幫助我嗎?

順便說一句,這是我目前的代碼:

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數據表分享:http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Sensors/Weather/USB_Weather_Board_V3_datasheet_110615.pdf

檐V3產品:https://www.sparkfun.com/products/10586

+0

我已經提供了更多信息:) ...實際上它沒有給出錯誤,但我無法獲得與minicom一樣的輸出。 – psuedobot

+0

在源代碼中,你提到'問題:未知字符字節'。這應該是多行錯誤輸出中的最後/第一行。 – 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

我曾嘗試過,但仍然有時擋風玻板無法連接,我必須重新插入它,直到綠燈變暗 – psuedobot

+0

@psuedobot我理解你的評論是正確的,因爲這個答案在大多數情況下解決了你原來的問題,但是有一些連接錯誤?如果是這樣,請確認它確實是你的程序有問題後再開一個新問題(如果你不運行程序,你還看到相同的行爲嗎?) – phihag

+0

但我認爲你的解決方案是正確的(對於連接參數串行)..我將標記爲正確答案 – psuedobot