From 467d042a7b38edfa8bbf86ed6c79d88190508cde Mon Sep 17 00:00:00 2001 From: "XI.CHEN" <2311041011@qq.com> Date: Wed, 18 Dec 2024 15:33:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=87=8D=E5=90=AF=E5=90=8E?= =?UTF-8?q?=E5=A4=9A=E6=8B=8D=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/cpp/PhoneDevice.cpp | 47 +++++++++++++++++++------------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index ec9c468e..5108a00b 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -1781,35 +1781,44 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< std::this_thread::sleep_for(std::chrono::seconds(5)); } time_t ts = time(NULL); - if(!pThis->GetPTZSensorsStatus() && !pThis->GetCameraStatus()) - { - pThis->OpenPTZSensors(localPhotoInfo.selfTestingTime); - } + + pThis->OpenPTZSensors(localPhotoInfo.selfTestingTime); + CameraPhotoCmd(ts, localPhotoInfo.channel, 0, localPhotoInfo.resolution, 0, param.serfile, param.baud, param.addr); XYLOG(XYLOG_SEVERITY_INFO, "Taking photo over"); + pThis->ClosePTZSensors(localPhotoInfo.closeDelayTime); + GpioControl::setCam3V3Enable(false, localPhotoInfo.closeDelayTime); + + time_t takingTime = time(NULL); + if (localPhotoInfo.remedy != 0) + { + if ((takingTime - localPhotoInfo.scheduleTime) > 30) + { + takingTime = localPhotoInfo.scheduleTime + localPhotoInfo.channel * 2; + } + } IMAGE_DEF photo = { 0 }; std::vector objects; GetImage(0, &photo); - if(photo.state == 5){ + if(photo.state == 5) + { XYLOG(XYLOG_SEVERITY_INFO,"Get Serials Photo, PhotoID = %s", photo.photoname); - + localPhotoInfo.photoTime = takingTime; cv::Mat img = cv::imread(photo.photoname, cv::IMREAD_COLOR); if (!img.empty()) { int result = std::remove(photo.photoname); - pThis->TakePhotoCb(1, localPhotoInfo, "", photo.phototime - 28800, objects); + pThis->TakePhotoCb(1, localPhotoInfo, "", takingTime, objects); pThis->PostProcessPhoto(localPhotoInfo, osds, path, "", img); } }else { XYLOG(XYLOG_SEVERITY_WARNING,"Get Serials Photo Failed"); - pThis->TakePhotoCb(0, localPhotoInfo, path, photo.phototime - 28800, objects); + pThis->TakePhotoCb(0, localPhotoInfo, path, takingTime, objects); } // pThis->TakePTZPhotoCb(3, localPhotoInfo); - pThis->ClosePTZSensors(localPhotoInfo.closeDelayTime); - GpioControl::setCam3V3Enable(false, localPhotoInfo.closeDelayTime); pThis->ReleaseWakelock(wid_serial); }); @@ -1900,17 +1909,17 @@ bool CPhoneDevice::OpenPTZSensors(uint32_t sec) { uint64_t wid = RequestWakelock(0); unsigned long long time_now = GetMicroTimeStamp(); - if(time_now < localDelayTime-1000) { std::lock_guard lock(m_cameraLocker); - m_sensorsStatus = true; - m_cameraStatus = true; - OpenSensors(MAIN_POWER_OPEN); - OpenSensors(CAMERA_SENSOR_OPEN); - } - { - std::lock_guard lock(m_cameraLocker); -// std::unique_lock lock(m_cameraLocker); + if(time_now < localDelayTime-1000) + { + std::lock_guard lock(m_cameraLocker); + m_sensorsStatus = true; + m_cameraStatus = true; + OpenSensors(MAIN_POWER_OPEN); + OpenSensors(CAMERA_SENSOR_OPEN); + } + if (!m_cameraStatus && !m_sensorsStatus) { m_sensorsStatus = true;