1

我有一个在 uno 中运行的简单程序,它使用 ping 传感器测量距离,现在我正在尝试根据 python 中的距离控制一些伺服系统,但是即使在这样的简单代码中,有条件的东西也不起作用

import serial
data = serial.Serial('COM7',9600)
while(1):        
    if(data.inWaiting()>0):
        dist = data.readline()
        if(dist>100):
            print("dist is greater than 100")
        else:
            print("this shit does not work")

如果可行的话,总是这样,我是菜鸟,请帮助我!

4

1 回答 1

1

来自串口类型的数据是str

您正在尝试读取数据并使用if .... > 100它永远不会工作。

您需要将数据读取到缓冲区然后检查它,您还需要一些同步帧来知道您已获得所有数据(这不是必须的,但它更容易)

例如,假设读取的数据是100!并且!是您的同步帧。

import serial
my_serial = serial.Serial('COM7',9600)
my_data = ""
while(1):        
    if(my_serial.inWaiting()>0):
        my_data = my_serial.readline()
        if '!' in my_data:
            break

my_data = [:my_data.find("!")]
if int(my_data) > 100:
    print("dist is greater than 100")
else:
    print("this shit does not work")
于 2014-08-10T12:24:35.990 回答