我有一个带有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