diff --git a/app/src/main/cpp/PhoneDevice.cpp b/app/src/main/cpp/PhoneDevice.cpp index ef21d967..3fafc88b 100644 --- a/app/src/main/cpp/PhoneDevice.cpp +++ b/app/src/main/cpp/PhoneDevice.cpp @@ -1694,20 +1694,27 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector< } else if (mPhotoInfo.mediaType == 0 && (mPhotoInfo.cameraType == CAM_TYPE_SERIAL)) { - if (photoInfo.preset != 0 && photoInfo.preset != 0xFF) + CPhoneDevice* pThis = this; + IDevice::PHOTO_INFO localPhotoInfo = mPhotoInfo; + std::thread t([localPhotoInfo, path, pThis]() mutable + { + if (localPhotoInfo.preset != 0 && localPhotoInfo.preset != 0xFF) { - CameraPhotoCmd(time(NULL), photoInfo.channel, MOVE_PRESETNO, 0, photoInfo.preset); - std::this_thread::sleep_for(std::chrono::seconds(2)); + CameraPhotoCmd(time(NULL), localPhotoInfo.channel, MOVE_PRESETNO, 0, localPhotoInfo.preset); + std::this_thread::sleep_for(std::chrono::seconds(3)); } time_t ts = time(NULL); - if(!GetPTZSensorsStatus() && !GetCameraStatus()) + if(!pThis->GetPTZSensorsStatus() && !pThis->GetCameraStatus()) { - XYLOG(XYLOG_SEVERITY_INFO, "Camera is SeltTesting, selfTestingtime = %d", photoInfo.selfTestingTime); - OpenPTZSensors(photoInfo.selfTestingTime); + XYLOG(XYLOG_SEVERITY_INFO, "Camera is SeltTesting, selfTestingtime = %d", localPhotoInfo.selfTestingTime); + pThis->OpenPTZSensors(localPhotoInfo.selfTestingTime); } - CameraPhotoCmd(ts, photoInfo.channel, 0, photoInfo.resolution, 0); - XYLOG(XYLOG_SEVERITY_INFO, "Takeing photo over"); - res = TakePTZPhotoCb(3, photoInfo); + CameraPhotoCmd(ts, localPhotoInfo.channel, 0, localPhotoInfo.resolution, 0); + XYLOG(XYLOG_SEVERITY_INFO, "Taking photo over"); + pThis->TakePTZPhotoCb(3, localPhotoInfo); + }); + + t.detach(); } else if (mPhotoInfo.usingSysCamera == 1) { @@ -3496,7 +3503,7 @@ int CPhoneDevice::GetIceData(IDevice::ICE_INFO *iceInfo, IDevice::ICE_TAIL *iceT if(airt.AiState == 2) { iceInfo->t_sensor_data[angleno].deflection_angle = airt.EuValue; - XYLOG(XYLOG_SEVERITY_INFO,"地址%d, 倾斜角 = %f", sensorParam[num].devaddr, iceInfo->t_sensor_data[angleno].deflection_angle); + XYLOG(XYLOG_SEVERITY_INFO,"地址%d, x = %f", sensorParam[num].devaddr, iceInfo->t_sensor_data[angleno].deflection_angle); } else iceInfo->t_sensor_data[angleno].deflection_angle = 0xff; @@ -3504,7 +3511,7 @@ int CPhoneDevice::GetIceData(IDevice::ICE_INFO *iceInfo, IDevice::ICE_TAIL *iceT if(airt.AiState == 2) { iceInfo->t_sensor_data[angleno].windage_yaw_angle = airt.EuValue; - XYLOG(XYLOG_SEVERITY_INFO,"地址%d, 风偏角 = %f", sensorParam[num].devaddr, iceInfo->t_sensor_data[angleno].windage_yaw_angle); + XYLOG(XYLOG_SEVERITY_INFO,"地址%d, y = %f", sensorParam[num].devaddr, iceInfo->t_sensor_data[angleno].windage_yaw_angle); } else iceInfo->t_sensor_data[angleno].windage_yaw_angle =0xff; diff --git a/app/src/main/cpp/SensorsProtocol.cpp b/app/src/main/cpp/SensorsProtocol.cpp index 70147713..38f72441 100644 --- a/app/src/main/cpp/SensorsProtocol.cpp +++ b/app/src/main/cpp/SensorsProtocol.cpp @@ -695,6 +695,7 @@ void Gm_OpenSerialPort(int devidx) sprintf(szbuf, "装置%d 打开串口%d %s成功!fd=%d", devidx + 1, devparam[devidx].commid + 1, devparam[devidx].pathname, fd); DebugLog(devparam[devidx].commid, szbuf, 'I'); serialport[devparam[devidx].commid].fd = fd; + Gm_SetSerialPortParam(devparam[devidx].commid); return; } sprintf(szbuf, "装置%d 串口%d %s已经打开!fd=%d", devidx + 1, devparam[devidx].commid + 1, devparam[devidx].pathname, serialport[devparam[devidx].commid].fd); @@ -1394,7 +1395,7 @@ void GM_StartSerialCameraPhoto(uint8_t channel, int cmdidx) if ((i < 0) || (i >= MAX_SERIAL_PORT_NUM)) return; serialport[i].Retry = 0; - serialport[i].RetryTime = 1000; + serialport[i].RetryTime = 2000; serialport[i].WaitTime = 0; serialport[i].m_iRevStatus = 0; serialport[i].m_iRecvLen = 0; @@ -2220,9 +2221,9 @@ void SendCmdFormPollCmdBuf(int port) serialport[devparam[srdt.curdevidx[port]].commid].m_iRevStatus = 0; if (serialport[port].fd < 0) return; - ret = Gm_SetSerialPortParam(port); - if (ret < 0) - return; + //ret = Gm_SetSerialPortParam(port); + //if (ret < 0) + // return; len = GM_SerialComSend(&pPortParam->PollCmd[2], pPortParam->cmdlen - 2, port); if (len < 1) { @@ -2751,7 +2752,7 @@ void Gm_SendPelco_pCommand(uint32_t cmdtype) commandbuf[len] = (uint8_t)Gm_Pelco_pXORCheck(commandbuf, len); len++; serialport[srdt.camerauseserial].cmdlen = len; - Gm_SetSerialPortParam(srdt.camerauseserial); + //Gm_SetSerialPortParam(srdt.camerauseserial); //unsigned char sendbuf[] = {0x68,0x00,0x00,0x68,0x0ff,0x02,0x01,0x16}; //len = GM_SerialComSend(sendbuf, sizeof(sendbuf), srdt.camerauseserial); @@ -2803,7 +2804,7 @@ void Gm_SendPelco_DCommand(uint32_t cmdtype) #endif len++; serialport[srdt.camerauseserial].cmdlen = len; - Gm_SetSerialPortParam(srdt.camerauseserial); + //Gm_SetSerialPortParam(srdt.camerauseserial); len = GM_SerialComSend(commandbuf, len, srdt.camerauseserial); if (len < 1) {