h_error = abs(180 - current_pos)
if custom_tracker and h_error > 40:
if no_rot_in_progress:
if current_pos < 140:
no_rot_in_progress = False
rot_cen = (180 - current_pos) * 22
print('rotation time required ' + str(rot_cen))
turn_left_ptz = muterun_js('onvif_movement/turn_left.js', str(rot_cen))
if turn_left_ptz.exitcode == 0:
print('Custom Tracker - Turned Left')
no_rot_in_progress = True
# print(response.stdout)
else:
print('failed left')
实际上以exit_code完成的时间与旋转相机所需的时间之间存在时间间隔。因此,这个turn_left_ptz javascript被多次调用。
我需要找到一种方法来停止正在进行的摄像机运动,而该运动功能尚未完成。
例如:脚本在1秒后将其注册为完成状态,但是实际需要花费rot_cen(例如5秒)的时间来移动摄像机。
sleep函数导致整个脚本卡住。
答案 0 :(得分:0)
使用的python计时器。
if start_timer is None:
start_timer = timer()
turn_left_ptz = muterun_js('onvif_movement/turn_right.js', str(rot_cen))
custom_sync = True
rot_cen_in_sec = int(rot_cen / 1000)
time_required = rot_cen_in_sec + 3
end_timer = timer()
timer_diff = int(end_timer - start_timer)
if timer_diff >= time_required:
custom_sync = True
else:
custom_sync = False
if custom_sync:
start_timer = None
custom_sync_main = True
else:
custom_sync_main = False