【问题标题】:Python read serial from Arduino and skip the first line readPython 从 Arduino 读取串行并跳过第一行读取
【发布时间】:2019-01-12 17:20:54
【问题描述】:

我有一个连接到 Raspberry Pi 的 Arduino,我正在使用 python 和串行从 Arduino 获取数据。我有 6 个传感器连接到 Arduino,但是当我从 pi 打印数据时,第一行总是 2 或 3 个传感器,然后所有 6 个传感器都打印出来。我将如何跳过从串口读取的第一行?

我的输出如下所示:

0 2 3
2 4 6 7 8 54
2 3 5 65 7 7
2 3 4 5 6 7

第一行总是少于 6 个传感器,并且值来自一个数组。因此,如果我要访问arr[4],它将超出范围。

这是python代码。我试图在不使用 while 循环的情况下执行此操作,我将创建另一个定期调用 sensorVals() 的函数来更新传感器值。我知道我可以使用循环,检查数组长度为 6 然后打印。

import serial
datetime.datetime.now()
ser=serial.Serial('/dev/ttyACM0',115200)
def sensorVals():
    while True:
        read_serial=ser.readline()
        val= read_serial.decode()
        val =val.strip()
        row = [x for x in val.split(' ')]
        if len(row) == 6:
            sensor1 = row[0]
            sensor2 = row[1]
            sensor3 = row[2]
            sensor4 = row[3]
            sensor5 = row[4]
            sensor6 = row[5]
            print (sensor4)
sensorVals()

【问题讨论】:

  • 只需添加类似first = True 的内容,然后在您的while 中执行:if first:(然后通过)、else:(然后是您的代码)。在if 中,您需要更新first 的值,以便在下一次循环迭代中输入else。
  • 我试图不为此使用 while 循环。相反,我将创建另一个调用 sensorVals() 来获取传感器数据的函数。问题是第一行读取总是少于 6 个传感器,但之后它将全部是 6 个。所以我需要跳过第一行读取
  • 无论如何,我给你的关于有一个变量来避免第一行处理的想法也适用于这种方法。
  • while True:, junk=ser.readline(), read_serial=ser.readline()
  • @MarkSetchell 那不是每两行获取一次吗?

标签: python arduino raspberry-pi


【解决方案1】:

这是一种不需要循环的方法,如果您确定只有一行甚至是 4 个值长:

# These lines moved to a new function so we avoid duplication
def readOneSensorLine():
    read_serial=ser.readline()
    val = read_serial.decode()
    val = val.strip()
    return val.split(' ') # You shouldn't need the list comprehension here

def sensorVals():
    row = readOneSensorLine()
    if len(row) == 4:
        # This row is short, so read again
        row = readOneSensorLine()

    return row #or print it, or whatever else needs to be done

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多