2013-06-22 30 views
-1

我通過串行(pySerial)從arduino獲取數據。然後通過分隔符(:)分成3個值。我正在使用切片([0:5])刪除2個額外的字符(我認爲它是新行)。前導零/零填充不能正常工作

到目前爲止這麼好。但是,然後rjust或zfill甚至format()都無法正常工作。例如,如果我使用zfill(5)並且arduino輸出的值是8.00,則沒有變化,我會得到3個字符。如果我使用zfill(7),那麼它的工作原理和我得到7個總字符。

這是怎麼回事?

Arduino是輸出該每隔約1秒時:22.00:36.00:58.00

import time 
import serial 

connected = False 

port = '/dev/ttyACM0' 
baud = 9600 

ser = serial.Serial(port, baud) 

# loop until arduino is ready 
while not connected: 
    serin = ser.read() 
    connected = True 

# read aruino output 
while ser.readline(): 
    readings = ser.readline().split(':', 2) 

    lum = readings[2][0:5].rjust(5, '0') 
    #lum = readings[2][0:5].zfill(5) same result as with rjust 

    print(lum) 
    time.sleep(1) 

我使用的Arduino烏諾連接到樹莓裨運行Rasberian OS與IDLE作爲蟒編輯器。

回答

2

readline()包含換行符。換行換行。

readings = ser.readline().rstrip().split(':', 2) 

>>> '0.00\n'.rjust(5, '0') 
'0.00\n' 
>>> '0.00\n'.rstrip().rjust(5, '0') 
'00.00' 
+0

這就是它!謝謝! – DominicM

+0

@DominicM,[接受答案](http://stackoverflow.com/help/accepted-answer)。 – falsetru

+0

行+1之間的閱讀:) –