2016-11-04 66 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中。