将阻塞调用与主循环分开

时间:2019-07-27 08:01:06

标签: python-3.x raspberry-pi3

我有一个带有Rpi3b +的超声波传感器接口,可通过calcDistance()查询距离,我还从picamera采集图像并使用opencv(实时应用程序)进行处理。

问题是距离查询功能具有等待循环,可能会阻塞例如的主要应用程序。如果电线松动。

如何将主循环的依赖项与距离函数分开,以防止calcDistance中出现问题时主循环不停止? 我应该使用多处理模块将其部署为单独的子流程吗?

def calcDistance(TRIG,ECHO):
    GPIO.output(TRIG, True)                  
    time.sleep(0.00001)                      
    GPIO.output(TRIG, False)                 
    while GPIO.input(ECHO)==0:   #blocking            
        pulse_start = time.time()              

    while GPIO.input(ECHO)==1:   # blocking           
        pulse_end = time.time()                 

    pulse_duration = pulse_end - pulse_start 

    distance = pulse_duration * 17150        
    distance = round(distance, 2)
    return distance    

0 个答案:

没有答案