为什么pyserial要暂停python程序

为什么pyserial要暂停python程序,python,pyserial,Python,Pyserial,我在循环中使用了一些python代码(在raspberry pi上运行),这对时间非常敏感(偏差不应超过+=.0001秒)。我发现了 if serial.Serial('/dev/ttyUSB0').read(): #what to do when there is data pending data = serial.Serial('/dev/ttyUSB0').read() 这似乎是个问题。我很少通过串行连接发送任何东西,当我这样做时,它小于10字节。这段代码似乎会一直保存程序,直

我在循环中使用了一些python代码(在raspberry pi上运行),这对时间非常敏感(偏差不应超过+=.0001秒)。我发现了

if serial.Serial('/dev/ttyUSB0').read(): #what to do when there is data pending
    data = serial.Serial('/dev/ttyUSB0').read()
这似乎是个问题。我很少通过串行连接发送任何东西,当我这样做时,它小于10字节。这段代码似乎会一直保存程序,直到收到数据为止

例如,如果我接收到一个恒定的数据流,并打印出每个循环的执行时间大约为.1ms,这对我来说是很好的,但是如果我一分钟没有收到任何东西,然后接收到数据,则循环需要60秒才能完成

我需要一点代码来跳过运行,如果串行数据中没有数据等待,就不会中断程序

下面是可能相关的更完整的代码部分:

raspi=serial.Serial('/dev/ttyUSB0')

    if raspi.read(): #what to do when there is data pending
    print data #this is a messy debugging tool to see what the pi recieves
    data = raspi.read()
    raspi.write(confirmed + data) #this is the data confirmed message
    if((str(data)[0]=='s' or str(data)[0]=='S' or str(data)[0]=='b' or str(data)[0]=='B')): #this is for going straight. Command is s# or b#, # being 1-9.
        lspeed=str(data)[1]
        print('lspeed is now ' + str(lspeed))
        raspi.write('lspeed is now ' + str(lspeed))
        rspeed=str(data)[1]
        print('rspeed is now ' + str(rspeed))
        raspi.write('rspeed is now ' + str(rspeed))
    if(str(data)[0]=='r' or str(data)[0]=='R'):
        rspeed=str(data)[1]
        print('rspeed is now ' + str(rspeed))
        raspi.write('rspeed is now ' + str(rspeed))
    if((str(data)[0]=='l' or str(data)[0]=='L') and str(data)!='launch'):
        lspeed=str(data)[1]
        print('lspeed is now ' + str(lspeed))
        raspi.write('lspeed is now ' + str(lspeed))

if-serial.serial('/dev/ttyUSB0').read():
替换为
if(serial.serial('/dev/ttyUSB0').inWaiting>=1):
执行此操作

如果没有数据等待,这种方法将跳过代码。我使用的参考资料误导了我