2015-05-09 58 views
-1

我们试图将来自TCP流的值插入到RRDTool数据库中。 即使RRDTool接受第一个值,下一个值也不会被接受。 我们得到如下错误:转换为浮动不完整:尾 我们的客户端代码:从TCP流向RRDTool插入数据

#!/usr/bin/env python 
import socket 
import Adafruit_BBIO.GPIO as GPIO 
import Adafruit_BBIO.ADC as ADC 
import time 
import datetime 

TCP_IP = '192.168.1.138' 
TCP_PORT = 5005 
BUFFER_SIZE = 1024 
sensor_pin='P9_40' 
light_pin='p8_10' 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.connect((TCP_IP, TCP_PORT)) 
ADC.setup() 
GPIO.setup(light_pin, GPIO.OUT) 

while True: 
    reading = ADC.read(sensor_pin) 
    millivolts = reading * 1800 
    data = (millivolts-500)/10 
    data = round(data,2) 
    MESSAGE = str(data) 
    s.send(MESSAGE) 
    time.sleep(10) 
s.close() 

服务器端是这样的(只有TCP连接部分)

while True: 
    input=conn.recv(BUFFER_SIZE) 
    if input: 
      input = input.replace('\r\n','') 
      input = input.rstrip('\r|\n') 
      temp1=float(input) 
      x=datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f') 
      y=input 
      stream.write(dict(x=x, y=y)) 
      rrdtool.update('database/temp.rrd','N:input') 
      print temp1 
conn.close() 
stream.close() 

我们也尝试转换将输入值转换为浮点数(temp1)并将其输入到数据库中,但这种情况不起作用。 (同样的错误)

我们怀疑它与回车或换行有关,但目前无法找到答案。

任何提示都更受欢迎!

回答

0

找到了答案: 数据Enterring到数据库中与下面的代码行: rrdtool.update( '数据库/ temp.rrd', 'N:%s' 的%输入)