修改串口拍照方式

N938
jxjajs 6 months ago
parent c2c6a2a10f
commit 517323a28e

@ -689,7 +689,7 @@ void Gm_OpenSerialPort(int devidx)
fd = ::open(devparam[devidx].pathname, O_RDWR | O_NDELAY); fd = ::open(devparam[devidx].pathname, O_RDWR | O_NDELAY);
if (fd < 0) if (fd < 0)
{ {
sprintf(szbuf, "装置%d 打开串口%d失败fd=%d", devidx + 1, devparam[devidx].commid + 1, fd); sprintf(szbuf, "装置%d 打开串口%d %s失败fd=%d", devidx+1, devparam[devidx].pathname, devparam[devidx].commid+1, fd);
DebugLog(devparam[devidx].commid, szbuf, 'E'); DebugLog(devparam[devidx].commid, szbuf, 'E');
return; return;
} }
@ -739,7 +739,7 @@ int GM_SerialComSend(unsigned char * cSendBuf, size_t nSendLen, int commid)
//isendtime = get_msec(); //isendtime = get_msec();
if (len < 0) if (len < 0)
{ {
sprintf(szbuf, "%s", "write data error "); sprintf(szbuf, "write data error ");
DebugLog(commid, szbuf, 'E'); DebugLog(commid, szbuf, 'E');
return -1; return -1;
} }
@ -941,6 +941,10 @@ void Gm_InitSerialComm_Test()
Gm_InitSerialComm(sensorParam, "/sdcard/photo/"); Gm_InitSerialComm(sensorParam, "/sdcard/photo/");
} }
uint8_t getdevtype(int devno)
{
return devparam[devno].ProtocolIdx;
}
// 初始化所有串口及所接传感器的配置 // 初始化所有串口及所接传感器的配置
void Gm_InitSerialComm(SENSOR_PARAM *sensorParam, char *filedir) void Gm_InitSerialComm(SENSOR_PARAM *sensorParam, char *filedir)
{ {
@ -3614,40 +3618,41 @@ int GM_CameraSerialTimer(SIO_PARAM_SERIAL_DEF *pPortParam)
#if 1 #if 1
// 启动使用串口拍照 // 启动使用串口拍照
int GM_StartSerialCameraPhoto(uint8_t channel, int cmdidx, u_char bImageSize, int phototime, u_char presetno, char *serfile, unsigned int baud, int addr) int GM_StartSerialCameraPhoto(int phototime, unsigned char channel, int cmdidx, unsigned char bImageSize, unsigned char presetno, char *serfile, unsigned int baud, int addr)
{ {
int flag = 0; int flag = 0;
char szbuf[128], logbuf[128]; char szbuf[128], logbuf[128];
SIO_PARAM_SERIAL_DEF cameraport; SIO_PARAM_SERIAL_DEF *cameraport;
cameraport = (SIO_PARAM_SERIAL_DEF*)malloc(sizeof(SIO_PARAM_SERIAL_DEF));
srdt.RephotographCnt = 0; srdt.RephotographCnt = 0;
cameraport.cameraaddr = addr; cameraport->cameraaddr = addr;
cameraport.Retry = 0; cameraport->Retry = 0;
cameraport.RetryTime = 2000; cameraport->RetryTime = 2000;
cameraport.WaitTime = 0; cameraport->WaitTime = 0;
cameraport.m_iRevStatus = 0; cameraport->m_iRevStatus = 0;
cameraport.m_iRecvLen = 0; cameraport->m_iRecvLen = 0;
cameraport.m_iNeedRevLength = 0; cameraport->m_iNeedRevLength = 0;
cameraport.fd = -1; cameraport->fd = -1;
memset(cameraport.m_au8RecvBuf, 0, RECVDATA_MAXLENTH); // 接收数据缓存区 memset(cameraport->m_au8RecvBuf, 0, RECVDATA_MAXLENTH); // 接收数据缓存区
ClearCameraCmdFormPollCmdBuf(&cameraport); ClearCameraCmdFormPollCmdBuf(cameraport);
flag = Gm_OpenCameraSerial(&cameraport, serfile, baud); flag = Gm_OpenCameraSerial(cameraport, serfile, baud);
#if 1 #if 1
memset(szbuf, 0, sizeof(szbuf)); memset(szbuf, 0, sizeof(szbuf));
srdt.iLastGetPhotoNo = -1; srdt.iLastGetPhotoNo = -1;
if (0 == cmdidx) if (0 == cmdidx)
cameraport.image.state = SER_STARTSAMPLE; cameraport->image.state = SER_STARTSAMPLE;
if ((0 == cmdidx) && (srdt.presetno > 0)) if ((0 == cmdidx) && (srdt.presetno > 0))
{ {
cameraport.SerialCmdidx = 10017; cameraport->SerialCmdidx = 10017;
srdt.iLastGetPhotoNo = cmdidx; srdt.iLastGetPhotoNo = cmdidx;
} }
else else
cameraport.SerialCmdidx = cmdidx; cameraport->SerialCmdidx = cmdidx;
cameraport.FirstCmdTimeCnt = get_msec(); cameraport->FirstCmdTimeCnt = get_msec();
srdt.sendphotocmdcnt = 0; srdt.sendphotocmdcnt = 0;
//sprintf(szbuf, "摄像机"); //sprintf(szbuf, "摄像机");
//flag = 1; //flag = 1;
@ -3665,14 +3670,14 @@ int GM_StartSerialCameraPhoto(uint8_t channel, int cmdidx, u_char bImageSize, in
if (0x00 == flag) if (0x00 == flag)
{ {
strcpy(szbuf, "摄像机启动串口定时器!"); sprintf(szbuf, "摄像机启动串口定时器!");
DebugLog(8, szbuf, 'I'); DebugLog(8, szbuf, 'I');
for (;;) for (;;)
{ {
usleep(10); usleep(10);
//LOGW("polltime=%ldms", get_msec()-polltime); //LOGW("polltime=%ldms", get_msec()-polltime);
//polltime = get_msec(); //polltime = get_msec();
if (GM_CameraSerialTimer(&cameraport) < 0) if (GM_CameraSerialTimer(cameraport) < 0)
{ {
//LOGE("12V state=%d", getInt(CMD_SET_12V_EN_STATE)); //LOGE("12V state=%d", getInt(CMD_SET_12V_EN_STATE));
DebugLog(8, "退出操作摄像机流程!", 'V'); DebugLog(8, "退出操作摄像机流程!", 'V');
@ -3685,14 +3690,14 @@ int GM_StartSerialCameraPhoto(uint8_t channel, int cmdidx, u_char bImageSize, in
} }
#endif #endif
int CameraPhotoCmd(int phototime, u_char channel, int cmdidx, u_char bImageSize, u_char presetno, char *serfile, unsigned int baud, int addr) int CameraPhotoCmd(int phototime, unsigned char channel, int cmdidx, unsigned char bImageSize, unsigned char presetno, char *serfile, unsigned int baud, int addr)
{ {
int flag = 0; int flag = 0;
srdt.bImageSize = bImageSize; srdt.bImageSize = bImageSize;
srdt.presetno = presetno; srdt.presetno = presetno;
srdt.sendphototime = phototime; srdt.sendphototime = phototime;
flag = GM_StartSerialCameraPhoto(channel, cmdidx, bImageSize, phototime, presetno, serfile, baud, addr); flag = GM_StartSerialCameraPhoto(phototime, channel, cmdidx, bImageSize, presetno, serfile, baud, addr);
return flag; return flag;
} }
/* 串口启动接口函数 结束*/ /* 串口启动接口函数 结束*/
@ -3701,6 +3706,7 @@ int CameraPhotoCmd(int phototime, u_char channel, int cmdidx, u_char bImageSize,
int GetWeatherData(Data_DEF *data, int datano) int GetWeatherData(Data_DEF *data, int datano)
{ {
int i; int i;
char logbuf[512], szbuf[128];
if (NULL == data) if (NULL == data)
return -1; return -1;
@ -3708,6 +3714,36 @@ int GetWeatherData(Data_DEF *data, int datano)
return -1; return -1;
data->EuValue = weatherpntmsg[datano].EuValue; data->EuValue = weatherpntmsg[datano].EuValue;
data->AiState = weatherpntmsg[datano].AiState; data->AiState = weatherpntmsg[datano].AiState;
memset(szbuf, 0, sizeof(szbuf));
switch (datano)
{
case AirTempNo:
sprintf(szbuf, "温度");
break;
case HumidityNo:
sprintf(szbuf, "湿度");
break;
case WindSpeedNo:
sprintf(szbuf, "风速");
break;
case WindDirectionNo:
sprintf(szbuf, "风向");
break;
case RainfallNo:
sprintf(szbuf, "雨量");
break;
case AtmosNo:
sprintf(szbuf, "大气压");
break;
case OpticalRadiationNo:
sprintf(szbuf, "大气压");
break;
default:
sprintf(szbuf, "未知");
break;
}
sprintf(logbuf, "data_state=%d, 拉力value=%0.3f", data->AiState, data->EuValue);
DebugLog(8, logbuf, 'I');
if ((SER_SAMPLEFAIL == data->AiState) || (SAMPLINGSUCCESS == data->AiState)) if ((SER_SAMPLEFAIL == data->AiState) || (SAMPLINGSUCCESS == data->AiState))
{ {
weatherpntmsg[datano].AiState = SER_IDLE; weatherpntmsg[datano].AiState = SER_IDLE;
@ -3718,10 +3754,14 @@ int GetWeatherData(Data_DEF *data, int datano)
int GetAirTempData(Data_DEF *airt) int GetAirTempData(Data_DEF *airt)
{ {
char logbuf[512];
if (NULL == airt) if (NULL == airt)
return -1; return -1;
airt->EuValue = weatherpntmsg[AirTempNo].EuValue; airt->EuValue = weatherpntmsg[AirTempNo].EuValue;
airt->AiState = weatherpntmsg[AirTempNo].AiState; airt->AiState = weatherpntmsg[AirTempNo].AiState;
sprintf(logbuf, "data_state=%d, 温度value=%0.3f", airt->AiState, airt->EuValue);
DebugLog(8, logbuf, 'I');
if ((SER_SAMPLEFAIL == airt->AiState) || (SAMPLINGSUCCESS == airt->AiState)) if ((SER_SAMPLEFAIL == airt->AiState) || (SAMPLINGSUCCESS == airt->AiState))
{ {
weatherpntmsg[AirTempNo].AiState = SER_IDLE; weatherpntmsg[AirTempNo].AiState = SER_IDLE;
@ -3732,10 +3772,14 @@ int GetAirTempData(Data_DEF *airt)
int GetHumidityData(Data_DEF *airt) int GetHumidityData(Data_DEF *airt)
{ {
char logbuf[512];
if (NULL == airt) if (NULL == airt)
return -1; return -1;
airt->EuValue = weatherpntmsg[HumidityNo].EuValue; airt->EuValue = weatherpntmsg[HumidityNo].EuValue;
airt->AiState = weatherpntmsg[HumidityNo].AiState; airt->AiState = weatherpntmsg[HumidityNo].AiState;
sprintf(logbuf, "data_state=%d, 湿度value=%0.3f", airt->AiState, airt->EuValue);
DebugLog(8, logbuf, 'I');
if ((SER_SAMPLEFAIL == airt->AiState) || (SAMPLINGSUCCESS == airt->AiState)) if ((SER_SAMPLEFAIL == airt->AiState) || (SAMPLINGSUCCESS == airt->AiState))
{ {
weatherpntmsg[HumidityNo].AiState = SER_IDLE; weatherpntmsg[HumidityNo].AiState = SER_IDLE;
@ -3746,10 +3790,14 @@ int GetHumidityData(Data_DEF *airt)
int GetWindSpeedData(Data_DEF *airt) int GetWindSpeedData(Data_DEF *airt)
{ {
char logbuf[512];
if (NULL == airt) if (NULL == airt)
return -1; return -1;
airt->EuValue = weatherpntmsg[WindSpeedNo].EuValue; airt->EuValue = weatherpntmsg[WindSpeedNo].EuValue;
airt->AiState = weatherpntmsg[WindSpeedNo].AiState; airt->AiState = weatherpntmsg[WindSpeedNo].AiState;
sprintf(logbuf, "data_state=%d, 风速value=%0.3f", airt->AiState, airt->EuValue);
DebugLog(8, logbuf, 'I');
if ((SER_SAMPLEFAIL == airt->AiState) || (SAMPLINGSUCCESS == airt->AiState)) if ((SER_SAMPLEFAIL == airt->AiState) || (SAMPLINGSUCCESS == airt->AiState))
{ {
weatherpntmsg[WindSpeedNo].AiState = SER_IDLE; weatherpntmsg[WindSpeedNo].AiState = SER_IDLE;
@ -3760,10 +3808,14 @@ int GetWindSpeedData(Data_DEF *airt)
int GetWindDirectionData(Data_DEF *airt) int GetWindDirectionData(Data_DEF *airt)
{ {
char logbuf[512];
if (NULL == airt) if (NULL == airt)
return -1; return -1;
airt->EuValue = weatherpntmsg[WindDirectionNo].EuValue; airt->EuValue = weatherpntmsg[WindDirectionNo].EuValue;
airt->AiState = weatherpntmsg[WindDirectionNo].AiState; airt->AiState = weatherpntmsg[WindDirectionNo].AiState;
sprintf(logbuf, "data_state=%d, 风向value=%0.3f", airt->AiState, airt->EuValue);
DebugLog(8, logbuf, 'I');
if ((SER_SAMPLEFAIL == airt->AiState) || (SAMPLINGSUCCESS == airt->AiState)) if ((SER_SAMPLEFAIL == airt->AiState) || (SAMPLINGSUCCESS == airt->AiState))
{ {
weatherpntmsg[WindDirectionNo].AiState = SER_IDLE; weatherpntmsg[WindDirectionNo].AiState = SER_IDLE;
@ -3774,10 +3826,14 @@ int GetWindDirectionData(Data_DEF *airt)
int GetRainfallData(Data_DEF *airt) int GetRainfallData(Data_DEF *airt)
{ {
char logbuf[512];
if (NULL == airt) if (NULL == airt)
return -1; return -1;
airt->EuValue = weatherpntmsg[RainfallNo].EuValue; airt->EuValue = weatherpntmsg[RainfallNo].EuValue;
airt->AiState = weatherpntmsg[RainfallNo].AiState; airt->AiState = weatherpntmsg[RainfallNo].AiState;
sprintf(logbuf, "data_state=%d, 雨量value=%0.3f", airt->AiState, airt->EuValue);
DebugLog(8, logbuf, 'I');
if ((SER_SAMPLEFAIL == airt->AiState) || (SAMPLINGSUCCESS == airt->AiState)) if ((SER_SAMPLEFAIL == airt->AiState) || (SAMPLINGSUCCESS == airt->AiState))
{ {
weatherpntmsg[RainfallNo].AiState = SER_IDLE; weatherpntmsg[RainfallNo].AiState = SER_IDLE;
@ -3788,10 +3844,14 @@ int GetRainfallData(Data_DEF *airt)
int GetAtmosData(Data_DEF *airt) int GetAtmosData(Data_DEF *airt)
{ {
char logbuf[512];
if (NULL == airt) if (NULL == airt)
return -1; return -1;
airt->EuValue = weatherpntmsg[AtmosNo].EuValue; airt->EuValue = weatherpntmsg[AtmosNo].EuValue;
airt->AiState = weatherpntmsg[AtmosNo].AiState; airt->AiState = weatherpntmsg[AtmosNo].AiState;
sprintf(logbuf, "data_state=%d, 大气压value=%0.3f", airt->AiState, airt->EuValue);
DebugLog(8, logbuf, 'I');
if ((SER_SAMPLEFAIL == airt->AiState) || (SAMPLINGSUCCESS == airt->AiState)) if ((SER_SAMPLEFAIL == airt->AiState) || (SAMPLINGSUCCESS == airt->AiState))
{ {
weatherpntmsg[AtmosNo].AiState = SER_IDLE; weatherpntmsg[AtmosNo].AiState = SER_IDLE;
@ -3802,10 +3862,14 @@ int GetAtmosData(Data_DEF *airt)
int GetOpticalRadiationData(Data_DEF *airt) int GetOpticalRadiationData(Data_DEF *airt)
{ {
char logbuf[512];
if (NULL == airt) if (NULL == airt)
return -1; return -1;
airt->EuValue = weatherpntmsg[OpticalRadiationNo].EuValue; airt->EuValue = weatherpntmsg[OpticalRadiationNo].EuValue;
airt->AiState = weatherpntmsg[OpticalRadiationNo].AiState; airt->AiState = weatherpntmsg[OpticalRadiationNo].AiState;
sprintf(logbuf, "data_state=%d, 日照value=%0.3f", airt->AiState, airt->EuValue);
DebugLog(8, logbuf, 'I');
if ((SER_SAMPLEFAIL == airt->AiState) || (SAMPLINGSUCCESS == airt->AiState)) if ((SER_SAMPLEFAIL == airt->AiState) || (SAMPLINGSUCCESS == airt->AiState))
{ {
weatherpntmsg[OpticalRadiationNo].AiState = SER_IDLE; weatherpntmsg[OpticalRadiationNo].AiState = SER_IDLE;
@ -3816,6 +3880,8 @@ int GetOpticalRadiationData(Data_DEF *airt)
int GetPullValue(int devno, Data_DEF *data) int GetPullValue(int devno, Data_DEF *data)
{ {
char logbuf[512];
if (NULL == data) if (NULL == data)
return -1; return -1;
if ((0 > devno) || (MAX_SERIAL_DEV_NUM < devno)) if ((0 > devno) || (MAX_SERIAL_DEV_NUM < devno))
@ -3824,6 +3890,8 @@ int GetPullValue(int devno, Data_DEF *data)
return -1; return -1;
data->EuValue = srdt.ms_dev[devno].aiValue[0].EuValue; data->EuValue = srdt.ms_dev[devno].aiValue[0].EuValue;
data->AiState = srdt.ms_dev[devno].aiValue[0].AiState; data->AiState = srdt.ms_dev[devno].aiValue[0].AiState;
sprintf(logbuf, "装置%d, ID=%d, data_state=%d, 拉力value=%0.3f", devno + 1, devparam[devno].devaddr, data->AiState, data->EuValue);
DebugLog(8, logbuf, 'I');
if ((SER_SAMPLEFAIL == data->AiState) || (SAMPLINGSUCCESS == data->AiState)) if ((SER_SAMPLEFAIL == data->AiState) || (SAMPLINGSUCCESS == data->AiState))
{ {
srdt.ms_dev[devno].aiValue[0].AiState = SER_IDLE; srdt.ms_dev[devno].aiValue[0].AiState = SER_IDLE;
@ -3834,6 +3902,8 @@ int GetPullValue(int devno, Data_DEF *data)
int GetAngleValue(int devno, Data_DEF *data, int Xy) int GetAngleValue(int devno, Data_DEF *data, int Xy)
{ {
char logbuf[512];
if (NULL == data) if (NULL == data)
return -1; return -1;
if ((0 > devno) || (MAX_SERIAL_DEV_NUM < devno)) if ((0 > devno) || (MAX_SERIAL_DEV_NUM < devno))
@ -3845,6 +3915,8 @@ int GetAngleValue(int devno, Data_DEF *data, int Xy)
data->EuValue = srdt.ms_dev[devno].aiValue[Xy].EuValue; data->EuValue = srdt.ms_dev[devno].aiValue[Xy].EuValue;
data->AiState = srdt.ms_dev[devno].aiValue[Xy].AiState; data->AiState = srdt.ms_dev[devno].aiValue[Xy].AiState;
sprintf(logbuf, "装置%d, ID=%d, data_state=%d, 倾角value[%d]=%0.3f", devno + 1, devparam[devno].devaddr, data->AiState, Xy, data->EuValue);
DebugLog(8, logbuf, 'I');
if ((SER_SAMPLEFAIL == data->AiState) || (SAMPLINGSUCCESS == data->AiState)) if ((SER_SAMPLEFAIL == data->AiState) || (SAMPLINGSUCCESS == data->AiState))
{ {
srdt.ms_dev[devno].aiValue[Xy].AiState = SER_IDLE; srdt.ms_dev[devno].aiValue[Xy].AiState = SER_IDLE;
@ -3855,6 +3927,8 @@ int GetAngleValue(int devno, Data_DEF *data, int Xy)
int GetImage(int devno, IMAGE_DEF *photo) int GetImage(int devno, IMAGE_DEF *photo)
{ {
char logbuf[512];
if (NULL == photo) if (NULL == photo)
return -1; return -1;
photo->presetno = serialport[0].image.presetno; photo->presetno = serialport[0].image.presetno;
@ -3863,6 +3937,9 @@ int GetImage(int devno, IMAGE_DEF *photo)
memmove(photo->photoname, serialport[0].image.photoname, sizeof(photo->photoname)); memmove(photo->photoname, serialport[0].image.photoname, sizeof(photo->photoname));
photo->imagelen = serialport[0].image.imagelen; photo->imagelen = serialport[0].image.imagelen;
photo->state = serialport[0].image.state; photo->state = serialport[0].image.state;
sprintf(logbuf, "装置%d, image_state=%d, 预置点:%d,拍照时间:%d, pic_name:%s", devno + 1, photo->state, photo->presetno, photo->phototime, photo->photoname);
DebugLog(8, logbuf, 'I');
if ((SER_SAMPLEFAIL == photo->state) || (SAMPLINGSUCCESS == photo->state)) if ((SER_SAMPLEFAIL == photo->state) || (SAMPLINGSUCCESS == photo->state))
{ {
serialport[0].image.state = SER_IDLE; serialport[0].image.state = SER_IDLE;

Loading…
Cancel
Save