2013-05-10 71 views
0

幾周前iIve問你關於我的python的scripy問題的解決方案。從Arduino腳本中讀取Python仍然不起作用

我剛剛開始我的項目,仍然有問題。

我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 
  • 筆 - 字母是下一行之間的分隔符
  • 第一個號碼是溼度
  • 二是溫度
  • 三是光敏
  • 下一個是土壤水分動態
  • 和最後一個是風扇的工作狀態(N - 不工作,Y - 工作)

我想用Python的腳本cron來寫與結果爲每一個傳感器數據的文本文件。

例如,我將使用cron每5分鐘,30分鐘,1小時,3小時,12小時,24小時保存4個文本文件(temp.txt,humi.txt,soil.txt,photo.txt)小時。

接下來,我將使用一個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「),items [2],repr(buffer)'看看你每次解析的是什麼? – 2013-05-10 18:05:22

回答

0

我懷疑是不是

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

你想

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

也許

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