2013-06-22 3 views
-1

Я получаю данные от arduino через Serial (pySerial). Затем он делится на 3 значения разделителем (:). Я использую slice ([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 Uno, связанные с Raspberry Pi работающей 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 для чтения между линиями :) –