2016-11-04 65 views
1

我正在从一个函数读取一条线从arduino串行监视器 行输出:Licht:870温度:19.01 功能的第一次,但我打电话功能再次读取一个空行蟒蛇3 readline()两次从arduino串行监视器

这里是我的代码:

import serial 
import time 

class Serializer: 
def __init__(self, port, baudrate=9600, timeout=2): 
    self.port = serial.Serial(port = port, baudrate=baudrate, 
           timeout=timeout) 

def open(self): 
    ''' Open the serial port.''' 
    self.port.open() 

def close(self): 
    ''' Close the serial port.''' 
    self.port.close() 

def write(self, msg): 
    time.sleep(1.6) 
    self.port.write(msg.encode()) 

def recv(self): 
    return self.port.readline() 

这里是我的代码,以获得临时或勒克斯:

def getLux(self): 
    lux = int(self.getTempLight()[1]) 
    print(lux) 

def getTemp(self): 
    temp = float(self.getTempLight()[3]) 
    print(temp) 

def getTempLight(self): 
    data =self.recv() 
    data = str(data) 
    list = data.split() 
    return list 

我调用函数getTemp后,我想调用函数getLux()以获取与temp值相同的行的lux值。

例如从行: Licht的:870温度:19.01

我想要的值870和19.01与getTemp和getLux

回答

0

如果端口对象它将消耗上瓶坯readline()的功能一条线。即如果您执行第二个readline()它将返回您的arduino发送的下一行或者如果没有第二行可用则返回空字符串。

因此,您的arduino连续发送值,或者将读取行存储在您的Serializer -object中。