【问题标题】:python 3 readline() twice from arduino Serial Monitorpython 3 readline() 两次来自 arduino 串行监视器
【发布时间】:2016-11-04 14:34:19
【问题描述】:

我正在开发一个从 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() 从与温度值相同的行获取 lux 值。

例如从以下行: 光照:870 温度:19.01

我想要值 870 和 19.01 以及 getTemp 和 getLux 函数

【问题讨论】:

    标签: python python-3.x arduino pyserial readlines


    【解决方案1】:

    如果您在端口对象上执行readline(),它将消耗一行。 IE。如果您执行第二次readline(),它将返回您的 arduino 发送的下一行,如果没有第二行可用,则返回一个空字符串。

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

    【讨论】:

      猜你喜欢
      • 2021-04-28
      • 2020-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-03
      • 1970-01-01
      相关资源
      最近更新 更多