|
|
@@ -1742,6 +1742,45 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
|
|
|
case _:
|
|
|
pass
|
|
|
|
|
|
+ async def _do_camera_check(self):
|
|
|
+ """执行一次完整的状态查询检测,返回是否全部停止"""
|
|
|
+ self.send_get_all_info_to_mcu()
|
|
|
+ await asyncio.sleep(0.5)
|
|
|
+ return all(
|
|
|
+ value == 2
|
|
|
+ for value in [
|
|
|
+ self.state_camera_motor,
|
|
|
+ self.state_camera_steering,
|
|
|
+ self.state_turntable_steering,
|
|
|
+ self.state_overturn_steering,
|
|
|
+ ]
|
|
|
+ )
|
|
|
+
|
|
|
+ async def camera_check_mcu_move_is_stop(self, re_check=False):
|
|
|
+ _s = time.time()
|
|
|
+ check_times = 0
|
|
|
+ await self.cleanAllReceiveData()
|
|
|
+ while 1:
|
|
|
+ if self.action_state != 1:
|
|
|
+ return False
|
|
|
+ # 发送获取设备状态消息
|
|
|
+ if await self._do_camera_check():
|
|
|
+ # 首次检测通过,追加一次确认检测,防止读到旧状态误判
|
|
|
+ logger.info("拍照前运动检测首次通过,发起确认检测")
|
|
|
+ if await self._do_camera_check():
|
|
|
+ logger.info("拍照前运动检测状态[成功],确认通过,耗时%.1f秒", time.time() - _s)
|
|
|
+ await asyncio.sleep(0.5)
|
|
|
+ return True
|
|
|
+ else:
|
|
|
+ logger.warning("拍照前运动检测确认失败,继续等待")
|
|
|
+ check_times += 1
|
|
|
+ else:
|
|
|
+ check_times += 1
|
|
|
+ if check_times > 5:
|
|
|
+ logger.info("拍照前运动检测状态[失败],耗时%.1f秒", time.time() - _s)
|
|
|
+ return False
|
|
|
+ await asyncio.sleep(0.2)
|
|
|
+
|
|
|
def checkDevice(self):
|
|
|
print("检查设备是否运行中")
|
|
|
logger.info("检查设备是否运行中")
|