Matthew 6 months ago
commit 4f77f847b1

@ -1694,20 +1694,27 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector<
} }
else if (mPhotoInfo.mediaType == 0 && (mPhotoInfo.cameraType == CAM_TYPE_SERIAL)) 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); CameraPhotoCmd(time(NULL), localPhotoInfo.channel, MOVE_PRESETNO, 0, localPhotoInfo.preset);
std::this_thread::sleep_for(std::chrono::seconds(2)); std::this_thread::sleep_for(std::chrono::seconds(3));
} }
time_t ts = time(NULL); time_t ts = time(NULL);
if(!GetPTZSensorsStatus() && !GetCameraStatus()) if(!pThis->GetPTZSensorsStatus() && !pThis->GetCameraStatus())
{ {
XYLOG(XYLOG_SEVERITY_INFO, "Camera is SeltTesting, selfTestingtime = %d", photoInfo.selfTestingTime); XYLOG(XYLOG_SEVERITY_INFO, "Camera is SeltTesting, selfTestingtime = %d", localPhotoInfo.selfTestingTime);
OpenPTZSensors(photoInfo.selfTestingTime); pThis->OpenPTZSensors(localPhotoInfo.selfTestingTime);
} }
CameraPhotoCmd(ts, photoInfo.channel, 0, photoInfo.resolution, 0); CameraPhotoCmd(ts, localPhotoInfo.channel, 0, localPhotoInfo.resolution, 0);
XYLOG(XYLOG_SEVERITY_INFO, "Takeing photo over"); XYLOG(XYLOG_SEVERITY_INFO, "Taking photo over");
res = TakePTZPhotoCb(3, photoInfo); pThis->TakePTZPhotoCb(3, localPhotoInfo);
});
t.detach();
} }
else if (mPhotoInfo.usingSysCamera == 1) else if (mPhotoInfo.usingSysCamera == 1)
{ {
@ -3496,7 +3503,7 @@ int CPhoneDevice::GetIceData(IDevice::ICE_INFO *iceInfo, IDevice::ICE_TAIL *iceT
if(airt.AiState == 2) if(airt.AiState == 2)
{ {
iceInfo->t_sensor_data[angleno].deflection_angle = airt.EuValue; 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 else
iceInfo->t_sensor_data[angleno].deflection_angle = 0xff; 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) if(airt.AiState == 2)
{ {
iceInfo->t_sensor_data[angleno].windage_yaw_angle = airt.EuValue; 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 else
iceInfo->t_sensor_data[angleno].windage_yaw_angle =0xff; iceInfo->t_sensor_data[angleno].windage_yaw_angle =0xff;

@ -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); sprintf(szbuf, "装置%d 打开串口%d %s成功fd=%d", devidx + 1, devparam[devidx].commid + 1, devparam[devidx].pathname, fd);
DebugLog(devparam[devidx].commid, szbuf, 'I'); DebugLog(devparam[devidx].commid, szbuf, 'I');
serialport[devparam[devidx].commid].fd = fd; serialport[devparam[devidx].commid].fd = fd;
Gm_SetSerialPortParam(devparam[devidx].commid);
return; return;
} }
sprintf(szbuf, "装置%d 串口%d %s已经打开fd=%d", devidx + 1, devparam[devidx].commid + 1, devparam[devidx].pathname, serialport[devparam[devidx].commid].fd); 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)) if ((i < 0) || (i >= MAX_SERIAL_PORT_NUM))
return; return;
serialport[i].Retry = 0; serialport[i].Retry = 0;
serialport[i].RetryTime = 1000; serialport[i].RetryTime = 2000;
serialport[i].WaitTime = 0; serialport[i].WaitTime = 0;
serialport[i].m_iRevStatus = 0; serialport[i].m_iRevStatus = 0;
serialport[i].m_iRecvLen = 0; serialport[i].m_iRecvLen = 0;
@ -2220,9 +2221,9 @@ void SendCmdFormPollCmdBuf(int port)
serialport[devparam[srdt.curdevidx[port]].commid].m_iRevStatus = 0; serialport[devparam[srdt.curdevidx[port]].commid].m_iRevStatus = 0;
if (serialport[port].fd < 0) if (serialport[port].fd < 0)
return; return;
ret = Gm_SetSerialPortParam(port); //ret = Gm_SetSerialPortParam(port);
if (ret < 0) //if (ret < 0)
return; // return;
len = GM_SerialComSend(&pPortParam->PollCmd[2], pPortParam->cmdlen - 2, port); len = GM_SerialComSend(&pPortParam->PollCmd[2], pPortParam->cmdlen - 2, port);
if (len < 1) if (len < 1)
{ {
@ -2751,7 +2752,7 @@ void Gm_SendPelco_pCommand(uint32_t cmdtype)
commandbuf[len] = (uint8_t)Gm_Pelco_pXORCheck(commandbuf, len); commandbuf[len] = (uint8_t)Gm_Pelco_pXORCheck(commandbuf, len);
len++; len++;
serialport[srdt.camerauseserial].cmdlen = 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}; //unsigned char sendbuf[] = {0x68,0x00,0x00,0x68,0x0ff,0x02,0x01,0x16};
//len = GM_SerialComSend(sendbuf, sizeof(sendbuf), srdt.camerauseserial); //len = GM_SerialComSend(sendbuf, sizeof(sendbuf), srdt.camerauseserial);
@ -2803,7 +2804,7 @@ void Gm_SendPelco_DCommand(uint32_t cmdtype)
#endif #endif
len++; len++;
serialport[srdt.camerauseserial].cmdlen = len; serialport[srdt.camerauseserial].cmdlen = len;
Gm_SetSerialPortParam(srdt.camerauseserial); //Gm_SetSerialPortParam(srdt.camerauseserial);
len = GM_SerialComSend(commandbuf, len, srdt.camerauseserial); len = GM_SerialComSend(commandbuf, len, srdt.camerauseserial);
if (len < 1) if (len < 1)
{ {

Loading…
Cancel
Save