2013-05-10 2 views
0

iIve попросил вас несколько недель назад о решении моей проблемы с скриптом python.Чтение Python из скрипта Arduino все еще не работает

Я только что начал свой проект и все еще испытывал проблемы.

Моего Arduino работает отлично, команда Sudo экран/DEV/ttyACM0 работают идеально, и я получаю:

T: 52.80% 23.80 15% 92% N 
T: 52.80% 23.80 15% 92% N 
T: 52.80% 23.80 15% 92% N 
  • T - буква разделитель между следующей строкой
  • Первого номера Влажность
  • Во-вторых, температура
  • Третий является фоторезистор
  • Следующая одна почва moisure
  • и последний из которых является вентилятор рабочее состояние (N - не работает, Y - работает)

Я хотел бы использовать сценарий Python с хрон, чтобы написать текстовый файл с результатами для каждого датчика данных.

Например, я буду использовать cron для сохранения 4 текстовых файлов (temp.txt, humi.txt, soil.txt, photo.txt) каждые 5 минут, 30 минут, 1 час, 3 часа, 12 часов, 24 ч.

Далее я использую скрипт php для отображения данных в виде диаграмм на моем веб-сайте.

Но проблема с моим скриптом python. У меня есть решение здесь, и на данный момент я использую следующий сценарий (пример температуры в):

#!/usr/bin/python 

import serial 
import time 

buffer = bytes() 
ser = serial.Serial('/dev/ttyACM0',9600, timeout=10) 
while buffer.count('T:') < 2: 
    buffer += ser.read(30) 
ser.close(); 
# Now we have at least one complete datum. Isolate it. 
start = buffer.index('T:') 
end = buffer.index('T:', start+1) 
items = buffer[start:end].strip().split() 
print time.strftime("%Y-%m-%d %H:%M:%S"), items[2] 

Но в моем текстовом файл я получил неверную информацию, которая выглядит как:

2013-05-10 19:47:01 12% 
2013-05-10 19:48:01 
2013-05-10 19:49:01 N 
2013-05-10 19:50:01 24.10 
2013-05-10 19:51:01 24.10 
2013-05-10 19:52:01 7% 
2013-05-10 19:53:01 24.10 

но оно должно быть 2013-05-10 19:47:01 24.10 все время.

Что в этом плохого?

+1

Может быть, вы могли бы изменить последнюю строку 'печати time.strftime ("% Y -% m-% d% H:% M:% S "), пункты [2], repr (buffer)', чтобы увидеть, что именно вы разобрали каждый раз? –

ответ

0

Я подозреваю, что вместо

items = buffer[start:end].strip().split() 

вы хотите

items = buffer[start:end].split().strip() 

или, может быть,

items = buffer[start:end].split() 
Смежные вопросы