Python 如何从pyserial解析字符串流并与预先指定的值进行比较

Python 如何从pyserial解析字符串流并与预先指定的值进行比较,python,arduino,pyserial,Python,Arduino,Pyserial,我发现很难表达这个问题,主要是因为我发现这个问题让我自己困惑 所以我有一个来自Arduino的IMU流,我正在通过pySerial流。基本上,它给了我这样的输出: **#1,2,3,4,5,6,7,8,9,10,11** 这是一个连续的流,直到我选择停止它。我试图做的是能够单独选取值,并将其与我已经确定的设定值进行比较 例如: 将值#2与预定义的整数b进行比较。我还没能弄明白它的代码。我们将不胜感激。到目前为止,我有这个简单的代码。它必须是实时的 import serial ser = ser

我发现很难表达这个问题,主要是因为我发现这个问题让我自己困惑

所以我有一个来自Arduino的IMU流,我正在通过pySerial流。基本上,它给了我这样的输出:

**#1,2,3,4,5,6,7,8,9,10,11**

这是一个连续的流,直到我选择停止它。我试图做的是能够单独选取值,并将其与我已经确定的设定值进行比较

例如: 将值#2与预定义的整数b进行比较。我还没能弄明白它的代码。我们将不胜感激。到目前为止,我有这个简单的代码。它必须是实时的

import serial

ser = serial.Serial('COM11', baudrate = 115200, timeout = 1)

def getValues():

    arduinoData = ser.readline().decode('ascii')
    return arduinoData


while(1):
        print(getValues())
这是我从getValues()获得的输出。它一直在走,直到我停下来。

如果
getValues
返回一个字符串,您可以将每个值存储在一个列表中供以后分析,例如:

getValues=lambda:'0,1,2,3,4'
值=[]
i=2
而我:
str_values=getValues()
values+=map(int,str_values.split(','))
i-=1
打印(值)
>>> [0, 1, 2, 3, 4, 0, 1, 2, 3, 4]
现在可以对每个值进行比较:

b=2
如果值[2]==b:
打印('值[2]等于b')
>>>值[2]等于b

我能够想出如何解决这个问题,我所做的只是将列表中的每个值保存到一个变量中。由于我不打算存储这些数据,我只是在声明的变量上重写,并将它们与循环中预定义的值进行比较

谢谢你给我提供帮助

这是我的密码

import serial

while True:
    while(arduinoData.inWaiting()==0):
        pass # do nothing

    arduinoString = arduinoData.readline().decode('ascii')
    dataArray = arduinoString.split(',')
    length = len(dataArray)
    if length == 13:
        TP = float(dataArray[1])
        TR = float(dataArray[2])
        IP = float(dataArray[3])
        IR =  float(dataArray[4])
    else:
        time.sleep(n)


每次调用
getValues
都会输出一个值?添加一个示例和所需的输出,因为它非常模糊。嘿,Marcos,刚刚更新了它。你应该发布代码而不是图像,以便人们可以复制它。代码需要6个IMU连接到Arduino。这对人们来说是很难复制的。所以我认为它不适用。我只是希望能够实时存储每个字符串值,并将其与不同的值进行比较。感谢您的帮助Marcos,此解决方案确实有所帮助。