簡體   English   中英

python 3 readline()兩次來自arduino Serial Monitor

[英]python 3 readline() twice from arduino Serial Monitor

我正在研究一個從arduino串行監視器讀取一行的函數,該行輸出:Licht:870 Temp:19.01第一次該函數有效但在我再次調用該函數后它讀取一個空行

這是我的代碼:

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 Temp:19.01

我希望值為870和19.01的函數為getTemp和getLux

如果在port-object上readline() ,它將占用一行。 即如果你執行第二個readline() ,它將返回你的arduino發送的下一行,如果沒有第二行可用,則返回一個空字符串。

因此,您的arduino要么連續發送值,要么將讀取行存儲在Serializer -object中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM