为什么pyserial要暂停python程序
我在循环中使用了一些python代码(在raspberry pi上运行),这对时间非常敏感(偏差不应超过+=.0001秒)。我发现了为什么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字节。这段代码似乎会一直保存程序,直
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):
执行此操作
如果没有数据等待,这种方法将跳过代码。我使用的参考资料误导了我