|
|
|
@ -689,7 +689,7 @@ void Gm_OpenSerialPort(int devidx)
|
|
|
|
|
fd = ::open(devparam[devidx].pathname, O_RDWR | O_NDELAY);
|
|
|
|
|
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');
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
@ -739,7 +739,7 @@ int GM_SerialComSend(unsigned char * cSendBuf, size_t nSendLen, int commid)
|
|
|
|
|
//isendtime = get_msec();
|
|
|
|
|
if (len < 0)
|
|
|
|
|
{
|
|
|
|
|
sprintf(szbuf, "%s", "write data error ");
|
|
|
|
|
sprintf(szbuf, "write data error ");
|
|
|
|
|
DebugLog(commid, szbuf, 'E');
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
@ -941,6 +941,10 @@ void Gm_InitSerialComm_Test()
|
|
|
|
|
Gm_InitSerialComm(sensorParam, "/sdcard/photo/");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uint8_t getdevtype(int devno)
|
|
|
|
|
{
|
|
|
|
|
return devparam[devno].ProtocolIdx;
|
|
|
|
|
}
|
|
|
|
|
// 初始化所有串口及所接传感器的配置
|
|
|
|
|
void Gm_InitSerialComm(SENSOR_PARAM *sensorParam, char *filedir)
|
|
|
|
|
{
|
|
|
|
@ -3614,40 +3618,41 @@ int GM_CameraSerialTimer(SIO_PARAM_SERIAL_DEF *pPortParam)
|
|
|
|
|
|
|
|
|
|
#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;
|
|
|
|
|
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;
|
|
|
|
|
|
|
|
|
|
cameraport.cameraaddr = addr;
|
|
|
|
|
cameraport.Retry = 0;
|
|
|
|
|
cameraport.RetryTime = 2000;
|
|
|
|
|
cameraport.WaitTime = 0;
|
|
|
|
|
cameraport.m_iRevStatus = 0;
|
|
|
|
|
cameraport.m_iRecvLen = 0;
|
|
|
|
|
cameraport.m_iNeedRevLength = 0;
|
|
|
|
|
cameraport.fd = -1;
|
|
|
|
|
memset(cameraport.m_au8RecvBuf, 0, RECVDATA_MAXLENTH); // 接收数据缓存区
|
|
|
|
|
ClearCameraCmdFormPollCmdBuf(&cameraport);
|
|
|
|
|
cameraport->cameraaddr = addr;
|
|
|
|
|
cameraport->Retry = 0;
|
|
|
|
|
cameraport->RetryTime = 2000;
|
|
|
|
|
cameraport->WaitTime = 0;
|
|
|
|
|
cameraport->m_iRevStatus = 0;
|
|
|
|
|
cameraport->m_iRecvLen = 0;
|
|
|
|
|
cameraport->m_iNeedRevLength = 0;
|
|
|
|
|
cameraport->fd = -1;
|
|
|
|
|
memset(cameraport->m_au8RecvBuf, 0, RECVDATA_MAXLENTH); // 接收数据缓存区
|
|
|
|
|
ClearCameraCmdFormPollCmdBuf(cameraport);
|
|
|
|
|
|
|
|
|
|
flag = Gm_OpenCameraSerial(&cameraport, serfile, baud);
|
|
|
|
|
flag = Gm_OpenCameraSerial(cameraport, serfile, baud);
|
|
|
|
|
|
|
|
|
|
#if 1
|
|
|
|
|
memset(szbuf, 0, sizeof(szbuf));
|
|
|
|
|
srdt.iLastGetPhotoNo = -1;
|
|
|
|
|
if (0 == cmdidx)
|
|
|
|
|
cameraport.image.state = SER_STARTSAMPLE;
|
|
|
|
|
cameraport->image.state = SER_STARTSAMPLE;
|
|
|
|
|
if ((0 == cmdidx) && (srdt.presetno > 0))
|
|
|
|
|
{
|
|
|
|
|
cameraport.SerialCmdidx = 10017;
|
|
|
|
|
cameraport->SerialCmdidx = 10017;
|
|
|
|
|
srdt.iLastGetPhotoNo = cmdidx;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
cameraport.SerialCmdidx = cmdidx;
|
|
|
|
|
cameraport.FirstCmdTimeCnt = get_msec();
|
|
|
|
|
cameraport->SerialCmdidx = cmdidx;
|
|
|
|
|
cameraport->FirstCmdTimeCnt = get_msec();
|
|
|
|
|
srdt.sendphotocmdcnt = 0;
|
|
|
|
|
//sprintf(szbuf, "摄像机");
|
|
|
|
|
//flag = 1;
|
|
|
|
@ -3665,14 +3670,14 @@ int GM_StartSerialCameraPhoto(uint8_t channel, int cmdidx, u_char bImageSize, in
|
|
|
|
|
|
|
|
|
|
if (0x00 == flag)
|
|
|
|
|
{
|
|
|
|
|
strcpy(szbuf, "摄像机启动串口定时器!");
|
|
|
|
|
sprintf(szbuf, "摄像机启动串口定时器!");
|
|
|
|
|
DebugLog(8, szbuf, 'I');
|
|
|
|
|
for (;;)
|
|
|
|
|
{
|
|
|
|
|
usleep(10);
|
|
|
|
|
//LOGW("polltime=%ldms", get_msec()-polltime);
|
|
|
|
|
//polltime = get_msec();
|
|
|
|
|
if (GM_CameraSerialTimer(&cameraport) < 0)
|
|
|
|
|
if (GM_CameraSerialTimer(cameraport) < 0)
|
|
|
|
|
{
|
|
|
|
|
//LOGE("12V state=%d", getInt(CMD_SET_12V_EN_STATE));
|
|
|
|
|
DebugLog(8, "退出操作摄像机流程!", 'V');
|
|
|
|
@ -3685,14 +3690,14 @@ int GM_StartSerialCameraPhoto(uint8_t channel, int cmdidx, u_char bImageSize, in
|
|
|
|
|
}
|
|
|
|
|
#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;
|
|
|
|
|
|
|
|
|
|
srdt.bImageSize = bImageSize;
|
|
|
|
|
srdt.presetno = presetno;
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
/* 串口启动接口函数 结束*/
|
|
|
|
@ -3701,6 +3706,7 @@ int CameraPhotoCmd(int phototime, u_char channel, int cmdidx, u_char bImageSize,
|
|
|
|
|
int GetWeatherData(Data_DEF *data, int datano)
|
|
|
|
|
{
|
|
|
|
|
int i;
|
|
|
|
|
char logbuf[512], szbuf[128];
|
|
|
|
|
|
|
|
|
|
if (NULL == data)
|
|
|
|
|
return -1;
|
|
|
|
@ -3708,6 +3714,36 @@ int GetWeatherData(Data_DEF *data, int datano)
|
|
|
|
|
return -1;
|
|
|
|
|
data->EuValue = weatherpntmsg[datano].EuValue;
|
|
|
|
|
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))
|
|
|
|
|
{
|
|
|
|
|
weatherpntmsg[datano].AiState = SER_IDLE;
|
|
|
|
@ -3718,10 +3754,14 @@ int GetWeatherData(Data_DEF *data, int datano)
|
|
|
|
|
|
|
|
|
|
int GetAirTempData(Data_DEF *airt)
|
|
|
|
|
{
|
|
|
|
|
char logbuf[512];
|
|
|
|
|
|
|
|
|
|
if (NULL == airt)
|
|
|
|
|
return -1;
|
|
|
|
|
airt->EuValue = weatherpntmsg[AirTempNo].EuValue;
|
|
|
|
|
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))
|
|
|
|
|
{
|
|
|
|
|
weatherpntmsg[AirTempNo].AiState = SER_IDLE;
|
|
|
|
@ -3732,10 +3772,14 @@ int GetAirTempData(Data_DEF *airt)
|
|
|
|
|
|
|
|
|
|
int GetHumidityData(Data_DEF *airt)
|
|
|
|
|
{
|
|
|
|
|
char logbuf[512];
|
|
|
|
|
|
|
|
|
|
if (NULL == airt)
|
|
|
|
|
return -1;
|
|
|
|
|
airt->EuValue = weatherpntmsg[HumidityNo].EuValue;
|
|
|
|
|
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))
|
|
|
|
|
{
|
|
|
|
|
weatherpntmsg[HumidityNo].AiState = SER_IDLE;
|
|
|
|
@ -3746,10 +3790,14 @@ int GetHumidityData(Data_DEF *airt)
|
|
|
|
|
|
|
|
|
|
int GetWindSpeedData(Data_DEF *airt)
|
|
|
|
|
{
|
|
|
|
|
char logbuf[512];
|
|
|
|
|
|
|
|
|
|
if (NULL == airt)
|
|
|
|
|
return -1;
|
|
|
|
|
airt->EuValue = weatherpntmsg[WindSpeedNo].EuValue;
|
|
|
|
|
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))
|
|
|
|
|
{
|
|
|
|
|
weatherpntmsg[WindSpeedNo].AiState = SER_IDLE;
|
|
|
|
@ -3760,10 +3808,14 @@ int GetWindSpeedData(Data_DEF *airt)
|
|
|
|
|
|
|
|
|
|
int GetWindDirectionData(Data_DEF *airt)
|
|
|
|
|
{
|
|
|
|
|
char logbuf[512];
|
|
|
|
|
|
|
|
|
|
if (NULL == airt)
|
|
|
|
|
return -1;
|
|
|
|
|
airt->EuValue = weatherpntmsg[WindDirectionNo].EuValue;
|
|
|
|
|
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))
|
|
|
|
|
{
|
|
|
|
|
weatherpntmsg[WindDirectionNo].AiState = SER_IDLE;
|
|
|
|
@ -3774,10 +3826,14 @@ int GetWindDirectionData(Data_DEF *airt)
|
|
|
|
|
|
|
|
|
|
int GetRainfallData(Data_DEF *airt)
|
|
|
|
|
{
|
|
|
|
|
char logbuf[512];
|
|
|
|
|
|
|
|
|
|
if (NULL == airt)
|
|
|
|
|
return -1;
|
|
|
|
|
airt->EuValue = weatherpntmsg[RainfallNo].EuValue;
|
|
|
|
|
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))
|
|
|
|
|
{
|
|
|
|
|
weatherpntmsg[RainfallNo].AiState = SER_IDLE;
|
|
|
|
@ -3788,10 +3844,14 @@ int GetRainfallData(Data_DEF *airt)
|
|
|
|
|
|
|
|
|
|
int GetAtmosData(Data_DEF *airt)
|
|
|
|
|
{
|
|
|
|
|
char logbuf[512];
|
|
|
|
|
|
|
|
|
|
if (NULL == airt)
|
|
|
|
|
return -1;
|
|
|
|
|
airt->EuValue = weatherpntmsg[AtmosNo].EuValue;
|
|
|
|
|
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))
|
|
|
|
|
{
|
|
|
|
|
weatherpntmsg[AtmosNo].AiState = SER_IDLE;
|
|
|
|
@ -3802,10 +3862,14 @@ int GetAtmosData(Data_DEF *airt)
|
|
|
|
|
|
|
|
|
|
int GetOpticalRadiationData(Data_DEF *airt)
|
|
|
|
|
{
|
|
|
|
|
char logbuf[512];
|
|
|
|
|
|
|
|
|
|
if (NULL == airt)
|
|
|
|
|
return -1;
|
|
|
|
|
airt->EuValue = weatherpntmsg[OpticalRadiationNo].EuValue;
|
|
|
|
|
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))
|
|
|
|
|
{
|
|
|
|
|
weatherpntmsg[OpticalRadiationNo].AiState = SER_IDLE;
|
|
|
|
@ -3816,6 +3880,8 @@ int GetOpticalRadiationData(Data_DEF *airt)
|
|
|
|
|
|
|
|
|
|
int GetPullValue(int devno, Data_DEF *data)
|
|
|
|
|
{
|
|
|
|
|
char logbuf[512];
|
|
|
|
|
|
|
|
|
|
if (NULL == data)
|
|
|
|
|
return -1;
|
|
|
|
|
if ((0 > devno) || (MAX_SERIAL_DEV_NUM < devno))
|
|
|
|
@ -3824,6 +3890,8 @@ int GetPullValue(int devno, Data_DEF *data)
|
|
|
|
|
return -1;
|
|
|
|
|
data->EuValue = srdt.ms_dev[devno].aiValue[0].EuValue;
|
|
|
|
|
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))
|
|
|
|
|
{
|
|
|
|
|
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)
|
|
|
|
|
{
|
|
|
|
|
char logbuf[512];
|
|
|
|
|
|
|
|
|
|
if (NULL == data)
|
|
|
|
|
return -1;
|
|
|
|
|
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->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))
|
|
|
|
|
{
|
|
|
|
|
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)
|
|
|
|
|
{
|
|
|
|
|
char logbuf[512];
|
|
|
|
|
|
|
|
|
|
if (NULL == photo)
|
|
|
|
|
return -1;
|
|
|
|
|
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));
|
|
|
|
|
photo->imagelen = serialport[0].image.imagelen;
|
|
|
|
|
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))
|
|
|
|
|
{
|
|
|
|
|
serialport[0].image.state = SER_IDLE;
|
|
|
|
|