diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index 5108a00b..854f47fa 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -3681,64 +3681,74 @@ void CPhoneDevice::ConvertDngToPng(const std::string& dngPath, const std::string void CPhoneDevice::CameraCtrl(unsigned char waitTime, unsigned char delayTime, unsigned char channel, int cmdidx, unsigned char preset, const char *serfile, unsigned int baud, int addr) { - switch (cmdidx) { - case 2:{ + if(!(m_sensorsStatus && !m_cameraStatus)) { + CPhoneDevice *pThis = this; + std::thread ctrlThread([pThis, waitTime, delayTime, cmdidx, channel, preset, serfile, baud, + addr]() mutable { + switch (cmdidx) { + case 2: { // if(GetCameraStatus()) - OpenPTZSensors(waitTime); - CameraPhotoCmd(time(NULL), channel, MOVE_PRESETNO, 0, preset, serfile, baud, addr); - ClosePTZSensors(delayTime); - break; - } - case 3:{ + + pThis->OpenPTZSensors(waitTime); + CameraPhotoCmd(time(NULL), channel, MOVE_PRESETNO, 0, preset, serfile, baud, + addr); + pThis->ClosePTZSensors(delayTime); + break; + } + case 3: { // if(GetCameraStatus()) - OpenPTZSensors(waitTime); - CameraPhotoCmd(0, channel, MOVE_UP, 0, 0, serfile, baud, addr); - ClosePTZSensors(delayTime); - break; - } - case 4:{ + pThis->OpenPTZSensors(waitTime); + CameraPhotoCmd(0, channel, MOVE_UP, 0, 0, serfile, baud, addr); + pThis->ClosePTZSensors(delayTime); + break; + } + case 4: { // if(GetCameraStatus()) - OpenPTZSensors(waitTime); - CameraPhotoCmd(0, channel, MOVE_DOWN, 0, 0, serfile, baud, addr); - ClosePTZSensors(delayTime); - break; - } - case 5:{ + pThis->OpenPTZSensors(waitTime); + CameraPhotoCmd(0, channel, MOVE_DOWN, 0, 0, serfile, baud, addr); + pThis->ClosePTZSensors(delayTime); + break; + } + case 5: { // if(GetCameraStatus()) - OpenPTZSensors(waitTime); - CameraPhotoCmd(0, channel, MOVE_LEFT, 0, 0, serfile, baud, addr); - ClosePTZSensors(delayTime); - break; - } - case 6:{ + pThis->OpenPTZSensors(waitTime); + CameraPhotoCmd(0, channel, MOVE_LEFT, 0, 0, serfile, baud, addr); + pThis->ClosePTZSensors(delayTime); + break; + } + case 6: { // if(GetCameraStatus()) - OpenPTZSensors(waitTime); - CameraPhotoCmd(0, channel, MOVE_RIGHT, 0, 0, serfile, baud, addr); - ClosePTZSensors(delayTime); - break; - } - case 7:{ + pThis->OpenPTZSensors(waitTime); + CameraPhotoCmd(0, channel, MOVE_RIGHT, 0, 0, serfile, baud, addr); + pThis->ClosePTZSensors(delayTime); + break; + } + case 7: { // if(GetCameraStatus()) - OpenPTZSensors(waitTime); - CameraPhotoCmd(0, channel, ZOOM_WIDE, 0, 0, serfile, baud, addr); - ClosePTZSensors(delayTime); - break; - } - case 8:{ + pThis->OpenPTZSensors(waitTime); + CameraPhotoCmd(0, channel, ZOOM_WIDE, 0, 0, serfile, baud, addr); + pThis->ClosePTZSensors(delayTime); + break; + } + case 8: { // if(GetCameraStatus()) - OpenPTZSensors(waitTime); - CameraPhotoCmd(0, channel, ZOOM_TELE, 0, 0, serfile, baud, addr); - ClosePTZSensors(delayTime); - break; - } - case 9:{ + pThis->OpenPTZSensors(waitTime); + CameraPhotoCmd(0, channel, ZOOM_TELE, 0, 0, serfile, baud, addr); + pThis->ClosePTZSensors(delayTime); + break; + } + case 9: { // if(GetCameraStatus()) - OpenPTZSensors(waitTime); - CameraPhotoCmd(time(NULL), channel, SAVE_PRESETNO, 0, preset, serfile, baud, addr); - ClosePTZSensors(delayTime); - break; - } + pThis->OpenPTZSensors(waitTime); + CameraPhotoCmd(time(NULL), channel, SAVE_PRESETNO, 0, preset, serfile, baud, + addr); + pThis->ClosePTZSensors(delayTime); + break; + } + } + }); + ctrlThread.detach(); } }