2013-06-22 29 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之间的阅读:) –