2015-03-10 4 views
0

Я настроенные на Raspberry Pi UART, и это мой серийное чтение/запись код:Данные, полученный через последовательный в Python

ser = serial.Serial('/dev/ttyAMA0', 9600, timeout=1) 
ser.open() 
string = '#SET0\r\n' 
print string 
ser.write(string) 
bytes2read = ser.inWaiting() 
print bytes2read 
if (ser.inWaiting()>0): 
    incoming = ser.readline() 
    print incoming 
time.sleep(5) 
bytes2read1= ser.inWaiting() 
print bytes2read1 
if (ser.inWaiting()>0): 
    print "Data:" 
    cont = ser.read(bytesaleer1) 
print cont 

продолжения имеет следующий формат:

#D0:0:0:10 
#D1:0:0:56 
#D2:0:0:23 
#D3:1:1:90 
-------- 

Мой вопрос, как могу ли я получить и сохранить последнее 0 на этой переменной? Я хочу сохранить значения c0, c1, c2, c3, полученные из cont; 10,56,23 и 90. Пробовал с line.strip, но без хороших результатов.

+0

'Int (cont.split (':') [- 1])' –

+0

Int (cont.split (':') [- 1]) ValueError: неверный буквальным для Int() с основанием 10: '0 \ r \ n -------- \ r \ n' –

+0

Затем 'int (cont.split (':') [- 1] .rstrip ('\ r \ n-')) ' –

ответ

1

Если cont это строка, содержащая все пять строк текста, в том числе -------- разделительной линии, я бы начать, разделив его на строки:

cont.splitlines() 
    => [ '#D0:0:0:10', 
     '#D1:0:0:56', 
     '#D2:0:0:23', 
     '#D3:1:1:90', 
     '--------' ] 

Затем вы можете цикл по всем линиям, и если строка включает двоеточие, вытащить последнее значение и сохранить его.

vals = [] 
for line in cont.splitlines(): 
    if ':' in line: 
     v = int(line.split(':')[-1]) 
     vals.append(v) 

>>> vals 
[10, 56, 23, 90] 
+0

Работая, как шарм с вашим кодом Тим Пирс, действительно спасибо. –

Смежные вопросы