|
|
@ -13,6 +13,7 @@
|
|
|
|
#include <fcntl.h>
|
|
|
|
#include <fcntl.h>
|
|
|
|
#include <string.h>
|
|
|
|
#include <string.h>
|
|
|
|
#include <termios.h>
|
|
|
|
#include <termios.h>
|
|
|
|
|
|
|
|
#include <asm/termbits.h>
|
|
|
|
#include <time.h>
|
|
|
|
#include <time.h>
|
|
|
|
#include "GPIOControl.h"
|
|
|
|
#include "GPIOControl.h"
|
|
|
|
#include "serialComm.h"
|
|
|
|
#include "serialComm.h"
|
|
|
@ -738,7 +739,7 @@ void Gm_InitSerialComm_Test(SENSOR_PARAM *sensorParam)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
int i, j;
|
|
|
|
int i, j;
|
|
|
|
|
|
|
|
|
|
|
|
#if 1
|
|
|
|
#if 0
|
|
|
|
srdt.PtzCmdType = Cmd_Cancel; // 云台指令类型
|
|
|
|
srdt.PtzCmdType = Cmd_Cancel; // 云台指令类型
|
|
|
|
for(i=0; i<MAX_SERIAL_PORT_NUM; i++)
|
|
|
|
for(i=0; i<MAX_SERIAL_PORT_NUM; i++)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -763,6 +764,7 @@ void Gm_InitSerialComm_Test(SENSOR_PARAM *sensorParam)
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
if(NULL == sensorParam)
|
|
|
|
if(NULL == sensorParam)
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
|
|
|
|
#if COLLECT_DATA
|
|
|
|
srdt.camerauseserial = -1;
|
|
|
|
srdt.camerauseserial = -1;
|
|
|
|
sensorParam[0].SensorsType = WEATHER_PROTOCOL;
|
|
|
|
sensorParam[0].SensorsType = WEATHER_PROTOCOL;
|
|
|
|
sensorParam[0].baudrate = 9600;
|
|
|
|
sensorParam[0].baudrate = 9600;
|
|
|
@ -894,7 +896,7 @@ void Gm_InitSerialComm_Test(SENSOR_PARAM *sensorParam)
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
sensorParam[13].SensorsType = SLANT_PROTOCOL;
|
|
|
|
sensorParam[13].SensorsType = SLANT_PROTOCOL;
|
|
|
|
sensorParam[13].baudrate = B9600;
|
|
|
|
sensorParam[13].baudrate = 9600;
|
|
|
|
sensorParam[13].databit = 8;
|
|
|
|
sensorParam[13].databit = 8;
|
|
|
|
//memset(devparam[13].stopbit, 0, sizeof(devparam[13].stopbit));
|
|
|
|
//memset(devparam[13].stopbit, 0, sizeof(devparam[13].stopbit));
|
|
|
|
//sprintf(devparam[13].stopbit, "1");
|
|
|
|
//sprintf(devparam[13].stopbit, "1");
|
|
|
@ -902,7 +904,7 @@ void Gm_InitSerialComm_Test(SENSOR_PARAM *sensorParam)
|
|
|
|
sensorParam[13].parity = 0;
|
|
|
|
sensorParam[13].parity = 0;
|
|
|
|
//devparam[13].PowerPort = 4;
|
|
|
|
//devparam[13].PowerPort = 4;
|
|
|
|
sensorParam[13].IsNoInsta = 1;
|
|
|
|
sensorParam[13].IsNoInsta = 1;
|
|
|
|
sensorParam[13].devaddr = 3;
|
|
|
|
sensorParam[13].devaddr = 2;
|
|
|
|
#if 0
|
|
|
|
#if 0
|
|
|
|
devparam[14].ProtocolIdx = SLANT_PROTOCOL;
|
|
|
|
devparam[14].ProtocolIdx = SLANT_PROTOCOL;
|
|
|
|
devparam[14].baudrate = 1200;
|
|
|
|
devparam[14].baudrate = 1200;
|
|
|
@ -912,8 +914,7 @@ void Gm_InitSerialComm_Test(SENSOR_PARAM *sensorParam)
|
|
|
|
devparam[14].IsNoInsta = 1;
|
|
|
|
devparam[14].IsNoInsta = 1;
|
|
|
|
//devparam[14].PowerPort = 2;
|
|
|
|
//devparam[14].PowerPort = 2;
|
|
|
|
devparam[14].devaddr = 3;
|
|
|
|
devparam[14].devaddr = 3;
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
|
|
|
|
devparam[15].ProtocolIdx = LEIRALLY_PROTOCOL;
|
|
|
|
devparam[15].ProtocolIdx = LEIRALLY_PROTOCOL;
|
|
|
|
//#endif
|
|
|
|
//#endif
|
|
|
|
devparam[15].ProtocolIdx = WIND_PROTOCOL;
|
|
|
|
devparam[15].ProtocolIdx = WIND_PROTOCOL;
|
|
|
@ -974,6 +975,17 @@ void Gm_InitSerialComm_Test(SENSOR_PARAM *sensorParam)
|
|
|
|
rallypntmsg[i][j].AiParam.EuValueDelta = 0;
|
|
|
|
rallypntmsg[i][j].AiParam.EuValueDelta = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
sensorParam[3].SensorsType = PELCO_P_PROTOCOL;
|
|
|
|
|
|
|
|
sensorParam[3].baudrate = 38400;
|
|
|
|
|
|
|
|
sensorParam[3].databit = 8;
|
|
|
|
|
|
|
|
sensorParam[3].stopbit = 1;
|
|
|
|
|
|
|
|
sensorParam[3].parity = 0;
|
|
|
|
|
|
|
|
sensorParam[3].IsNoInsta = 1;
|
|
|
|
|
|
|
|
//devparam[3].PowerPort = 15;
|
|
|
|
|
|
|
|
sensorParam[3].CameraChannel = 1;
|
|
|
|
|
|
|
|
sensorParam[3].devaddr = 0;
|
|
|
|
|
|
|
|
#endif
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 初始化所有串口及所接传感器的配置
|
|
|
|
// 初始化所有串口及所接传感器的配置
|
|
|
@ -985,6 +997,7 @@ void Gm_InitSerialComm()
|
|
|
|
|
|
|
|
|
|
|
|
//if(NULL == sensorParam)
|
|
|
|
//if(NULL == sensorParam)
|
|
|
|
// return;
|
|
|
|
// return;
|
|
|
|
|
|
|
|
memset(sensorParam, 0, sizeof(sensorParam));
|
|
|
|
Gm_InitSerialComm_Test(sensorParam);
|
|
|
|
Gm_InitSerialComm_Test(sensorParam);
|
|
|
|
// srdt 配置
|
|
|
|
// srdt 配置
|
|
|
|
//srdt.PtzCmdType = Cmd_Cancel; // 云台指令类型
|
|
|
|
//srdt.PtzCmdType = Cmd_Cancel; // 云台指令类型
|
|
|
@ -1005,7 +1018,7 @@ void Gm_InitSerialComm()
|
|
|
|
for(i=0; i<MAX_SERIAL_DEV_NUM; i++)
|
|
|
|
for(i=0; i<MAX_SERIAL_DEV_NUM; i++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
memset(szbuf, 0, sizeof(szbuf));
|
|
|
|
memset(szbuf, 0, sizeof(szbuf));
|
|
|
|
switch (devparam[i].ProtocolIdx)
|
|
|
|
switch (sensorParam[i].SensorsType)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
case 0:
|
|
|
|
case 0:
|
|
|
|
sprintf(szbuf, "传感器%d没有接!", i + 1);
|
|
|
|
sprintf(szbuf, "传感器%d没有接!", i + 1);
|
|
|
@ -1040,9 +1053,9 @@ void Gm_InitSerialComm()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//LOGI("%s", szbuf);
|
|
|
|
//LOGI("%s", szbuf);
|
|
|
|
|
|
|
|
|
|
|
|
sprintf(szbuf, "%s 地址%d!;", szbuf, devparam[i].devaddr);
|
|
|
|
sprintf(szbuf, "%s 地址%d!;", szbuf, sensorParam[i].devaddr);
|
|
|
|
//LOGI("%s", szbuf);
|
|
|
|
//LOGI("%s", szbuf);
|
|
|
|
if (0 == devparam[i].IsNoInsta)
|
|
|
|
if (0 == sensorParam[i].IsNoInsta)
|
|
|
|
sprintf(szbuf, "没有启用!;");
|
|
|
|
sprintf(szbuf, "没有启用!;");
|
|
|
|
else
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -1050,7 +1063,12 @@ void Gm_InitSerialComm()
|
|
|
|
LOGI("%s", szbuf);
|
|
|
|
LOGI("%s", szbuf);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#if COLLECT_DATA
|
|
|
|
Collect_sensor_data(sensorParam);
|
|
|
|
Collect_sensor_data(sensorParam);
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
CameraPhoto(sensorParam, 1, 0);
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#if 0
|
|
|
|
#if 0
|
|
|
|
//u_char UseSerialidx; // 使用的串口序号
|
|
|
|
//u_char UseSerialidx; // 使用的串口序号
|
|
|
@ -1144,11 +1162,17 @@ void GM_StartSerialComm()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if(i == srdt.camerauseserial)
|
|
|
|
if(i == srdt.camerauseserial)
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
|
|
|
|
serialport[i].Retry = 0;
|
|
|
|
|
|
|
|
//serialport[i].RetryTime = 500/TIMER_CNT;
|
|
|
|
|
|
|
|
serialport[i].RetryTime = 300/TIMER_CNT;
|
|
|
|
|
|
|
|
serialport[i].WaitTime = 0;
|
|
|
|
serialport[i].m_iRevStatus = 0;
|
|
|
|
serialport[i].m_iRevStatus = 0;
|
|
|
|
serialport[i].m_iRecvLen = 0;
|
|
|
|
serialport[i].m_iRecvLen = 0;
|
|
|
|
serialport[i].m_iNeedRevLength = 0;
|
|
|
|
serialport[i].m_iNeedRevLength = 0;
|
|
|
|
serialport[i].fd = -1;
|
|
|
|
serialport[i].fd = -1;
|
|
|
|
ClearCmdAllFlag(i);
|
|
|
|
memset(serialport[i].m_au8RecvBuf, 0, RECVDATA_MAXLENTH); // 接收数据缓存区
|
|
|
|
|
|
|
|
ClearCmdFormPollCmdBuf(i);
|
|
|
|
|
|
|
|
//ClearCmdAllFlag(i);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#if 0/* 简化插入使用摄像机过程,摄像机使用单独的串口*/
|
|
|
|
#if 0/* 简化插入使用摄像机过程,摄像机使用单独的串口*/
|
|
|
@ -1294,11 +1318,19 @@ void GM_StartSerialCameraPhoto(BYTE channel, int cmdidx)
|
|
|
|
if(0x01 == (srdt.sampling & 0x01))
|
|
|
|
if(0x01 == (srdt.sampling & 0x01))
|
|
|
|
flag = 0;
|
|
|
|
flag = 0;
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
i = srdt.camerauseserial;
|
|
|
|
|
|
|
|
if((i<0) ||(i > MAX_SERIAL_PORT_NUM))
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
serialport[i].Retry = 0;
|
|
|
|
|
|
|
|
//serialport[i].RetryTime = 500/TIMER_CNT;
|
|
|
|
|
|
|
|
serialport[i].RetryTime = 3000/TIMER_CNT;
|
|
|
|
|
|
|
|
serialport[i].WaitTime = 0;
|
|
|
|
serialport[i].m_iRevStatus = 0;
|
|
|
|
serialport[i].m_iRevStatus = 0;
|
|
|
|
serialport[i].m_iRecvLen = 0;
|
|
|
|
serialport[i].m_iRecvLen = 0;
|
|
|
|
serialport[i].m_iNeedRevLength = 0;
|
|
|
|
serialport[i].m_iNeedRevLength = 0;
|
|
|
|
serialport[i].fd = -1;
|
|
|
|
serialport[i].fd = -1;
|
|
|
|
ClearCmdAllFlag(i);
|
|
|
|
memset(serialport[i].m_au8RecvBuf, 0, RECVDATA_MAXLENTH); // 接收数据缓存区
|
|
|
|
|
|
|
|
ClearCmdFormPollCmdBuf(i);
|
|
|
|
|
|
|
|
|
|
|
|
// 初始化串口使用状态
|
|
|
|
// 初始化串口使用状态
|
|
|
|
for(i=0; i<MAX_SERIAL_DEV_NUM; i++)
|
|
|
|
for(i=0; i<MAX_SERIAL_DEV_NUM; i++)
|
|
|
@ -1308,6 +1340,7 @@ void GM_StartSerialCameraPhoto(BYTE channel, int cmdidx)
|
|
|
|
srdt.ms_dev[i].IsNeedSerial = 0;
|
|
|
|
srdt.ms_dev[i].IsNeedSerial = 0;
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
memset(szbuf, 0, sizeof(szbuf));
|
|
|
|
switch(devparam[i].ProtocolIdx)
|
|
|
|
switch(devparam[i].ProtocolIdx)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
case SERIALCAMERA_PROTOCOL: /* 串口摄像机协议*/
|
|
|
|
case SERIALCAMERA_PROTOCOL: /* 串口摄像机协议*/
|
|
|
@ -1332,6 +1365,7 @@ void GM_StartSerialCameraPhoto(BYTE channel, int cmdidx)
|
|
|
|
srdt.ms_dev[i].SerialCmdidx = cmdidx;
|
|
|
|
srdt.ms_dev[i].SerialCmdidx = cmdidx;
|
|
|
|
srdt.ms_dev[i].FirstCmdTimeCnt = get_msec();
|
|
|
|
srdt.ms_dev[i].FirstCmdTimeCnt = get_msec();
|
|
|
|
srdt.sendphotocmdcnt = 0;
|
|
|
|
srdt.sendphotocmdcnt = 0;
|
|
|
|
|
|
|
|
sprintf(szbuf, "摄像机");
|
|
|
|
flag = 1;
|
|
|
|
flag = 1;
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
default:
|
|
|
@ -1340,6 +1374,13 @@ void GM_StartSerialCameraPhoto(BYTE channel, int cmdidx)
|
|
|
|
srdt.ms_dev[i].IsNeedSerial = 0;
|
|
|
|
srdt.ms_dev[i].IsNeedSerial = 0;
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if(1 == srdt.ms_dev[i].IsNeedSerial)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
LOGI("装置%d, IsNoInsta=%d, 类型:%s", i+1, devparam[i].IsNoInsta, szbuf);
|
|
|
|
|
|
|
|
Gm_OpenSensorsPower(i);
|
|
|
|
|
|
|
|
Gm_OpenSerialPort(i);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if(0x01 == flag)
|
|
|
|
if(0x01 == flag)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -1355,12 +1396,13 @@ void GM_StartSerialCameraPhoto(BYTE channel, int cmdidx)
|
|
|
|
//LOGE("12V state=%d", getInt(CMD_SET_12V_EN_STATE));
|
|
|
|
//LOGE("12V state=%d", getInt(CMD_SET_12V_EN_STATE));
|
|
|
|
LOGV("退出采样流程!");
|
|
|
|
LOGV("退出采样流程!");
|
|
|
|
sleep(15);
|
|
|
|
sleep(15);
|
|
|
|
GM_StartSerialComm();
|
|
|
|
//GM_StartSerialComm();
|
|
|
|
|
|
|
|
GM_StartSerialCameraPhoto(1,0);
|
|
|
|
//break;
|
|
|
|
//break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return;
|
|
|
|
//return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
@ -1426,9 +1468,9 @@ void Gm_FindAllSensorsCommand(void)
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case PELCO_D_PROTOCOL: /* 摄像机协议*/
|
|
|
|
case PELCO_D_PROTOCOL: /* 摄像机协议*/
|
|
|
|
case PELCO_P_PROTOCOL: /* 摄像机协议*/
|
|
|
|
case PELCO_P_PROTOCOL: /* 摄像机协议*/
|
|
|
|
|
|
|
|
case SERIALCAMERA_PROTOCOL: /* 串口摄像机协议*/
|
|
|
|
flag = FindNextCameraPhotoCommand(curidx);
|
|
|
|
flag = FindNextCameraPhotoCommand(curidx);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case SERIALCAMERA_PROTOCOL: /* 串口摄像机协议*/
|
|
|
|
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if(flag == -1)
|
|
|
|
if(flag == -1)
|
|
|
@ -1481,7 +1523,7 @@ void GM_IsCloseSensors(void)
|
|
|
|
case SERIALCAMERA_PROTOCOL: /* 串口摄像机协议*/
|
|
|
|
case SERIALCAMERA_PROTOCOL: /* 串口摄像机协议*/
|
|
|
|
if(-1 == srdt.ms_dev[i].SerialCmdidx)
|
|
|
|
if(-1 == srdt.ms_dev[i].SerialCmdidx)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if(srdt.ms_dev[i].FirstCmdTimeCnt > 6*1000/TIMER_CNT)
|
|
|
|
//if(srdt.ms_dev[i].FirstCmdTimeCnt > 6*1000/TIMER_CNT)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
srdt.ms_dev[i].IsNeedSerial = 0;
|
|
|
|
srdt.ms_dev[i].IsNeedSerial = 0;
|
|
|
|
//srdt.sampling &= 0xFB;
|
|
|
|
//srdt.sampling &= 0xFB;
|
|
|
@ -1522,7 +1564,10 @@ void GM_AllSerialComRecv(void)
|
|
|
|
if(recvlen < 1)
|
|
|
|
if(recvlen < 1)
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
sprintf(buf, "收到串口%d, %d字节数据:", j+1, recvlen);
|
|
|
|
sprintf(buf, "收到串口%d, %d字节数据:", j+1, recvlen);
|
|
|
|
BytestreamLOG(buf, recvbuf, recvlen, 'I');
|
|
|
|
if(recvlen < 101)
|
|
|
|
|
|
|
|
BytestreamLOG(buf, recvbuf, recvlen, 'I');
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
LOGI("%s", buf);
|
|
|
|
|
|
|
|
|
|
|
|
SerialDataProcess(srdt.curdevidx[j], recvbuf, recvlen);
|
|
|
|
SerialDataProcess(srdt.curdevidx[j], recvbuf, recvlen);
|
|
|
|
|
|
|
|
|
|
|
@ -1679,40 +1724,134 @@ void SerialDataProcess(int devidx, u_char *buf, int len)
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case RESERVE2_PROTOCOL: /* 意科电池电量读取协议*/
|
|
|
|
case RESERVE2_PROTOCOL: /* 意科电池电量读取协议*/
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case RESERVE5_PROTOCOL: /* 网络安全加密协议*/
|
|
|
|
case PELCO_D_PROTOCOL: /* 摄像机协议*/
|
|
|
|
//EncryptRecvData(devidx, buf, len);
|
|
|
|
case PELCO_P_PROTOCOL: /* 摄像机协议*/
|
|
|
|
break;
|
|
|
|
case SERIALCAMERA_PROTOCOL: /* 串口摄像机协议*/
|
|
|
|
case SERIALCAMERA_PROTOCOL: /* 青青子木串口摄像机协议*/
|
|
|
|
CameraRecvData(devidx, buf, len);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*******************************************************************
|
|
|
|
|
|
|
|
* 读 摄像机 数据 *
|
|
|
|
|
|
|
|
*******************************************************************/
|
|
|
|
|
|
|
|
void CameraRecvData(int devno, u_char *buf, int len)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
int i;
|
|
|
|
|
|
|
|
SIO_PARAM_SERIAL_DEF *pPortParam;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if((devno<0) || (devno > MAX_SERIAL_DEV_NUM))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
pPortParam = &serialport[devparam[devno].commid];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for(i=0; i<len; i++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
switch(pPortParam->m_iRevStatus)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
case 0: // 0x68
|
|
|
|
|
|
|
|
pPortParam->m_iRecvLen = 0;
|
|
|
|
|
|
|
|
pPortParam->m_au8RecvBuf[pPortParam->m_iRecvLen++] = buf[i];
|
|
|
|
|
|
|
|
if(0x68 == buf[i])
|
|
|
|
|
|
|
|
pPortParam->m_iRevStatus++;
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
pPortParam->m_iRevStatus = 18;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 1: // len1
|
|
|
|
|
|
|
|
pPortParam->m_au8RecvBuf[pPortParam->m_iRecvLen++] = buf[i];
|
|
|
|
|
|
|
|
pPortParam->m_iRevStatus++;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 2: // len2
|
|
|
|
|
|
|
|
pPortParam->m_au8RecvBuf[pPortParam->m_iRecvLen++] = buf[i];
|
|
|
|
|
|
|
|
pPortParam->m_iRevStatus++;
|
|
|
|
|
|
|
|
pPortParam->m_iNeedRevLength = pPortParam->m_au8RecvBuf[pPortParam->m_iRecvLen-2]*256+buf[i]+5;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 3: // 0x68
|
|
|
|
|
|
|
|
pPortParam->m_au8RecvBuf[pPortParam->m_iRecvLen++] = buf[i];
|
|
|
|
|
|
|
|
pPortParam->m_iNeedRevLength--;
|
|
|
|
|
|
|
|
if(0x68 == buf[i])
|
|
|
|
|
|
|
|
pPortParam->m_iRevStatus++;
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
pPortParam->m_iRevStatus = 18;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 4: // 正确接收数据
|
|
|
|
|
|
|
|
pPortParam->m_iNeedRevLength--;
|
|
|
|
|
|
|
|
pPortParam->m_au8RecvBuf[pPortParam->m_iRecvLen++] = buf[i];
|
|
|
|
|
|
|
|
if(pPortParam->m_iNeedRevLength > 0)
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
if(buf[i] != 0x16)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
pPortParam->m_iRevStatus=18;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(pPortParam->m_au8RecvBuf[pPortParam->m_iRecvLen-2] ==
|
|
|
|
|
|
|
|
CalLpc( &pPortParam->m_au8RecvBuf[4], pPortParam->m_iRecvLen-6 ))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
CameraPhotoPortDataProcess(devno);
|
|
|
|
|
|
|
|
pPortParam->m_iRevStatus = 0;
|
|
|
|
|
|
|
|
pPortParam->RevCmdFlag = 1;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
pPortParam->m_iRevStatus = 0;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
pPortParam->m_iRecvLen = 0;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 255:// 错误接收数据
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
|
|
|
if(buf[i] == 0x68)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
pPortParam->m_iRevStatus = 1;
|
|
|
|
|
|
|
|
pPortParam->m_iRecvLen = 1;
|
|
|
|
|
|
|
|
pPortParam->m_au8RecvBuf[0] = buf[i];
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else if(buf[i] == 0x16)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
pPortParam->m_au8RecvBuf[pPortParam->m_iRecvLen++] = buf[i];
|
|
|
|
|
|
|
|
pPortParam->m_iRevStatus = 0;
|
|
|
|
|
|
|
|
pPortParam->m_iRecvLen = 0;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
pPortParam->m_au8RecvBuf[pPortParam->m_iRecvLen++] = buf[i];
|
|
|
|
|
|
|
|
if(pPortParam->m_iRecvLen > 200)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
pPortParam->m_iRecvLen = 0;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*********************************************************************************
|
|
|
|
/*********************************************************************************
|
|
|
|
CameraPhoto 端口数据处理
|
|
|
|
CameraPhoto 端口数据处理
|
|
|
|
**********************************************************************************/
|
|
|
|
**********************************************************************************/
|
|
|
|
void CameraPhotoPortDataProcess( int port)
|
|
|
|
void CameraPhotoPortDataProcess( int devno)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
RTUMSG rtumsg;
|
|
|
|
RTUMSG rtumsg;
|
|
|
|
SERIAL_DEV_DEF *pPortParam;
|
|
|
|
SERIAL_DEV_DEF *pPortParam;
|
|
|
|
SIO_PARAM_SERIAL_DEF *serialport;
|
|
|
|
SIO_PARAM_SERIAL_DEF *curserial;
|
|
|
|
int img_file_size, packetnum, iNo, packsize, i=0, presetno, iphototime;
|
|
|
|
int img_file_size, packetnum, iNo, packsize, i=0, presetno, iphototime;
|
|
|
|
char szbuf[128];
|
|
|
|
char szbuf[128];
|
|
|
|
WORD uDevAddr;
|
|
|
|
WORD uDevAddr;
|
|
|
|
BYTE cmdidx, recvend;
|
|
|
|
BYTE cmdidx, recvend;
|
|
|
|
|
|
|
|
|
|
|
|
pPortParam = &srdt.ms_dev[port];
|
|
|
|
pPortParam = &srdt.ms_dev[devno];
|
|
|
|
serialport = &serialport[pPortParam->UseSerialidx];
|
|
|
|
curserial = &serialport[devparam[devno].commid];
|
|
|
|
|
|
|
|
|
|
|
|
memset((void*)rtumsg.MsgData, 0, sizeof(rtumsg.MsgData));
|
|
|
|
memset((void*)rtumsg.MsgData, 0, sizeof(rtumsg.MsgData));
|
|
|
|
memcpy((void*)rtumsg.MsgData, (void*)serialport->m_au8RecvBuf, pPortParam->m_iRecvLen);
|
|
|
|
memcpy((void*)rtumsg.MsgData, (void*)curserial->m_au8RecvBuf, curserial->m_iRecvLen);
|
|
|
|
rtumsg.MsgLen = pPortParam->m_iRecvLen;
|
|
|
|
rtumsg.MsgLen = curserial->m_iRecvLen;
|
|
|
|
rtumsg.PortIdx = port;
|
|
|
|
rtumsg.PortIdx = devparam[devno].commid;
|
|
|
|
cmdidx = serialport->m_au8RecvBuf[5];
|
|
|
|
cmdidx = curserial->m_au8RecvBuf[5];
|
|
|
|
uDevAddr = serialport->m_au8RecvBuf[4];
|
|
|
|
uDevAddr = curserial->m_au8RecvBuf[4];
|
|
|
|
|
|
|
|
|
|
|
|
//sprintf(szbuf, "摄像机地址%d,命令%02X!", uDevAddr, cmdidx);
|
|
|
|
//sprintf(szbuf, "摄像机地址%d,命令%02X!", uDevAddr, cmdidx);
|
|
|
|
//DebugStringPrintf(szbuf, strlen(szbuf), 1);
|
|
|
|
//DebugStringPrintf(szbuf, strlen(szbuf), 1);
|
|
|
|
if(uDevAddr != devparam[port].devaddr)
|
|
|
|
if(uDevAddr != devparam[devno].devaddr)
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
|
|
switch(cmdidx)
|
|
|
|
switch(cmdidx)
|
|
|
@ -1724,8 +1863,7 @@ void CameraPhotoPortDataProcess( int port)
|
|
|
|
if(srdt.RephotographCnt > 2)
|
|
|
|
if(srdt.RephotographCnt > 2)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
pPortParam->SerialCmdidx = -1;
|
|
|
|
pPortParam->SerialCmdidx = -1;
|
|
|
|
sprintf(szbuf, "因摄像机重拍%d次均未成功!结束拍照!",srdt.RephotographCnt);
|
|
|
|
LOGE("因摄像机重拍%d次均未成功!结束拍照!",srdt.RephotographCnt);
|
|
|
|
//DebugStringPrintf(szbuf, strlen(szbuf), 1);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -1736,41 +1874,32 @@ void CameraPhotoPortDataProcess( int port)
|
|
|
|
img_file_size = rtumsg.MsgData[i+3]+ (rtumsg.MsgData[i+2]<<8)+(rtumsg.MsgData[i+1]<<16)+(rtumsg.MsgData[i]<<24);
|
|
|
|
img_file_size = rtumsg.MsgData[i+3]+ (rtumsg.MsgData[i+2]<<8)+(rtumsg.MsgData[i+1]<<16)+(rtumsg.MsgData[i]<<24);
|
|
|
|
packetnum = rtumsg.MsgData[i+5]+(rtumsg.MsgData[i+4]<<8);
|
|
|
|
packetnum = rtumsg.MsgData[i+5]+(rtumsg.MsgData[i+4]<<8);
|
|
|
|
srdt.imagepacketnum = packetnum;
|
|
|
|
srdt.imagepacketnum = packetnum;
|
|
|
|
srdt.historyimagenum[devparam[port].CameraChannel-1] = rtumsg.MsgData[i+7]+(rtumsg.MsgData[i+6]<<8);
|
|
|
|
srdt.historyimagenum[devparam[devno].CameraChannel-1] = rtumsg.MsgData[i+7]+(rtumsg.MsgData[i+6]<<8);
|
|
|
|
sprintf(szbuf, "有%d张历史图片!",srdt.historyimagenum[devparam[port].CameraChannel-1]);
|
|
|
|
sprintf(szbuf, "有%d张历史图片!",srdt.historyimagenum[devparam[devno].CameraChannel-1]);
|
|
|
|
//DebugStringPrintf(szbuf, strlen(szbuf), 1);
|
|
|
|
LOGV("%s", szbuf);
|
|
|
|
//presetno = (int)GetPhotoPresetNo(pPortParam->CameraChannel);
|
|
|
|
|
|
|
|
presetno = (int)rtumsg.MsgData[i+8];
|
|
|
|
presetno = (int)rtumsg.MsgData[i+8];
|
|
|
|
//if(0 == netportparam.InitTimeFlag)
|
|
|
|
curserial->RevCmdFlag = 1;
|
|
|
|
{
|
|
|
|
|
|
|
|
serialport->RevCmdFlag = 1;
|
|
|
|
|
|
|
|
srdt.sendphotocmdcnt = 0;
|
|
|
|
|
|
|
|
pPortParam->SerialCmdidx = 10001;
|
|
|
|
|
|
|
|
/* 保存图片*/
|
|
|
|
|
|
|
|
//break
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
serialport->RevCmdFlag = 1;
|
|
|
|
|
|
|
|
pPortParam->SerialCmdidx = 1;
|
|
|
|
pPortParam->SerialCmdidx = 1;
|
|
|
|
srdt.sendphotocmdcnt = 0;
|
|
|
|
srdt.sendphotocmdcnt = 0;
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case 0x11: /* 图片数据包*/
|
|
|
|
case 0x11: /* 图片数据包*/
|
|
|
|
// if(0 == netportparam.InitTimeFlag)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
serialport->RevCmdFlag = 1;
|
|
|
|
|
|
|
|
srdt.sendphotocmdcnt = 0;
|
|
|
|
|
|
|
|
pPortParam->SerialCmdidx = 10001;
|
|
|
|
|
|
|
|
/* 保存图片*/
|
|
|
|
|
|
|
|
//break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
i = 6;
|
|
|
|
i = 6;
|
|
|
|
iNo = rtumsg.MsgData[i+1]+rtumsg.MsgData[i]*256;
|
|
|
|
iNo = rtumsg.MsgData[i+1]+rtumsg.MsgData[i]*256;
|
|
|
|
packsize = rtumsg.MsgData[i+3]+rtumsg.MsgData[i+2]*256;
|
|
|
|
packsize = rtumsg.MsgData[i+3]+rtumsg.MsgData[i+2]*256;
|
|
|
|
sprintf(szbuf, "收到第%d(总%d包)", iNo, srdt.imagepacketnum);
|
|
|
|
sprintf(szbuf, "收到第%d(总%d包)", iNo, srdt.imagepacketnum);
|
|
|
|
//DebugStringPrintf(szbuf, strlen(szbuf), 1);
|
|
|
|
LOGV("%s", szbuf);
|
|
|
|
serialport->RevCmdFlag = 1;
|
|
|
|
curserial->RevCmdFlag = 1;
|
|
|
|
pPortParam->FirstCmdTimeCnt = 0;
|
|
|
|
pPortParam->FirstCmdTimeCnt = get_msec();
|
|
|
|
if((iNo == pPortParam->SerialCmdidx) && (0xFF > rtumsg.MsgData[i+2]))
|
|
|
|
if((iNo == pPortParam->SerialCmdidx) && (0xFF > rtumsg.MsgData[i+2]))
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
if(iNo == srdt.imagepacketnum)
|
|
|
|
|
|
|
|
recvend = 1;
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
recvend = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(packsize > MAX_PHOTO_FRAME_LEN)
|
|
|
|
|
|
|
|
recvend = 0xFF;
|
|
|
|
|
|
|
|
|
|
|
|
if(1 == recvend)
|
|
|
|
if(1 == recvend)
|
|
|
|
pPortParam->SerialCmdidx = 10002;/* 图片读取完成*/
|
|
|
|
pPortParam->SerialCmdidx = 10002;/* 图片读取完成*/
|
|
|
|
else if(0xFF == recvend)
|
|
|
|
else if(0xFF == recvend)
|
|
|
@ -1792,6 +1921,7 @@ void CameraPhotoPortDataProcess( int port)
|
|
|
|
srdt.errorPhotoNoCnt++;
|
|
|
|
srdt.errorPhotoNoCnt++;
|
|
|
|
sprintf(szbuf, "问询第%d包图片摄像机应答第%d包,连续错误%d次!",
|
|
|
|
sprintf(szbuf, "问询第%d包图片摄像机应答第%d包,连续错误%d次!",
|
|
|
|
pPortParam->SerialCmdidx, iNo, srdt.errorPhotoNoCnt);
|
|
|
|
pPortParam->SerialCmdidx, iNo, srdt.errorPhotoNoCnt);
|
|
|
|
|
|
|
|
LOGE("%s", szbuf);
|
|
|
|
if(srdt.errorPhotoNoCnt > 5)
|
|
|
|
if(srdt.errorPhotoNoCnt > 5)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
pPortParam->SerialCmdidx = 0;
|
|
|
|
pPortParam->SerialCmdidx = 0;
|
|
|
@ -1800,16 +1930,15 @@ void CameraPhotoPortDataProcess( int port)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
pPortParam->SerialCmdidx = -1;
|
|
|
|
pPortParam->SerialCmdidx = -1;
|
|
|
|
sprintf(szbuf, "因摄像机重拍%d次均未成功!结束拍照!",srdt.RephotographCnt);
|
|
|
|
sprintf(szbuf, "因摄像机重拍%d次均未成功!结束拍照!",srdt.RephotographCnt);
|
|
|
|
//DebugStringPrintf(szbuf, strlen(szbuf), 1);
|
|
|
|
LOGE("%s", szbuf);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case 0x03:
|
|
|
|
case 0x03:
|
|
|
|
sprintf(szbuf, "设置波特率%d成功", devparam[port].baudrate);
|
|
|
|
sprintf(szbuf, "设置波特率%d成功", devparam[devno].baudrate);
|
|
|
|
//DebugStringPrintf(szbuf, strlen(szbuf), 1);
|
|
|
|
LOGD("%s", szbuf);
|
|
|
|
//pPortParam->Baud = serialport->Baud;
|
|
|
|
|
|
|
|
pPortParam->SerialCmdidx = srdt.iLastGetPhotoNo;
|
|
|
|
pPortParam->SerialCmdidx = srdt.iLastGetPhotoNo;
|
|
|
|
serialport->RevCmdFlag = 1;
|
|
|
|
curserial->RevCmdFlag = 1;
|
|
|
|
pPortParam->FirstCmdTimeCnt = 0;
|
|
|
|
pPortParam->FirstCmdTimeCnt = 0;
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case 0x15:
|
|
|
|
case 0x15:
|
|
|
@ -1817,7 +1946,7 @@ void CameraPhotoPortDataProcess( int port)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
pPortParam->SerialCmdidx = -1;
|
|
|
|
pPortParam->SerialCmdidx = -1;
|
|
|
|
sprintf(szbuf, "没有历史图片!结束读取图片!");
|
|
|
|
sprintf(szbuf, "没有历史图片!结束读取图片!");
|
|
|
|
//DebugStringPrintf(szbuf, strlen(szbuf), 1);
|
|
|
|
LOGI("%s", szbuf);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
i = 6;
|
|
|
|
i = 6;
|
|
|
@ -1827,20 +1956,11 @@ void CameraPhotoPortDataProcess( int port)
|
|
|
|
img_file_size = rtumsg.MsgData[i+3]+ (rtumsg.MsgData[i+2]<<8)+(rtumsg.MsgData[i+1]<<16)+(rtumsg.MsgData[i]<<24);
|
|
|
|
img_file_size = rtumsg.MsgData[i+3]+ (rtumsg.MsgData[i+2]<<8)+(rtumsg.MsgData[i+1]<<16)+(rtumsg.MsgData[i]<<24);
|
|
|
|
packetnum = rtumsg.MsgData[i+5]+(rtumsg.MsgData[i+4]<<8);
|
|
|
|
packetnum = rtumsg.MsgData[i+5]+(rtumsg.MsgData[i+4]<<8);
|
|
|
|
srdt.imagepacketnum = packetnum;
|
|
|
|
srdt.imagepacketnum = packetnum;
|
|
|
|
srdt.historyimagenum[devparam[port].CameraChannel-1] = rtumsg.MsgData[i+7]+(rtumsg.MsgData[i+6]<<8);
|
|
|
|
srdt.historyimagenum[devparam[devno].CameraChannel-1] = rtumsg.MsgData[i+7]+(rtumsg.MsgData[i+6]<<8);
|
|
|
|
//presetno = netportparam.CurPresetno[pPortParam->CameraChannel-1];
|
|
|
|
|
|
|
|
presetno = rtumsg.MsgData[i+8];
|
|
|
|
presetno = rtumsg.MsgData[i+8];
|
|
|
|
sprintf(szbuf, "读取历史图片,还有%d张历史图片!",srdt.historyimagenum[devparam[port].CameraChannel-1]);
|
|
|
|
sprintf(szbuf, "读取历史图片,还有%d张历史图片!",srdt.historyimagenum[devparam[devno].CameraChannel-1]);
|
|
|
|
//DebugStringPrintf(szbuf, strlen(szbuf), 1);
|
|
|
|
LOGI("%s", szbuf);
|
|
|
|
//if(0 == netportparam.InitTimeFlag)
|
|
|
|
curserial->RevCmdFlag = 1;
|
|
|
|
{
|
|
|
|
|
|
|
|
serialport->RevCmdFlag = 1;
|
|
|
|
|
|
|
|
srdt.sendphotocmdcnt = 0;
|
|
|
|
|
|
|
|
pPortParam->SerialCmdidx = -1;
|
|
|
|
|
|
|
|
//netportparam.PhotosFlag = FALSE;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
serialport->RevCmdFlag = 1;
|
|
|
|
|
|
|
|
pPortParam->SerialCmdidx = 1;
|
|
|
|
pPortParam->SerialCmdidx = 1;
|
|
|
|
srdt.sendphotocmdcnt = 0;
|
|
|
|
srdt.sendphotocmdcnt = 0;
|
|
|
|
break;
|
|
|
|
break;
|
|
|
@ -1849,30 +1969,22 @@ void CameraPhotoPortDataProcess( int port)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
pPortParam->SerialCmdidx = -1;
|
|
|
|
pPortParam->SerialCmdidx = -1;
|
|
|
|
sprintf(szbuf, "图片保存失败!");
|
|
|
|
sprintf(szbuf, "图片保存失败!");
|
|
|
|
//DebugStringPrintf(szbuf, strlen(szbuf), 1);
|
|
|
|
LOGE("%s", szbuf);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if(0 == rtumsg.MsgData[10])
|
|
|
|
if(0 == rtumsg.MsgData[10])
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if(0 == srdt.historyimagenum[devparam[port].CameraChannel-1])
|
|
|
|
if(0 == srdt.historyimagenum[devparam[devno].CameraChannel-1])
|
|
|
|
{
|
|
|
|
{
|
|
|
|
//netportparam.SerialCameraPowerCtrl[devparam[port].CameraChannel-1] = 0;
|
|
|
|
;
|
|
|
|
//srdt.sampling &= 0xFB;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
|
pPortParam->FirstCmdTimeCnt = -3*60*1000/TIMER_CNT;
|
|
|
|
pPortParam->FirstCmdTimeCnt = get_msec();
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
//srdt.sampling &= 0xFB;
|
|
|
|
|
|
|
|
//netportparam.SerialCameraPowerCtrl[pPortParam->CameraChannel-1] = 0;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
pPortParam->SerialCmdidx = -1;
|
|
|
|
pPortParam->SerialCmdidx = -1;
|
|
|
|
serialport->RevCmdFlag = 1;
|
|
|
|
curserial->RevCmdFlag = 1;
|
|
|
|
//if(0 == netportparam.InitTimeFlag)
|
|
|
|
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
default:
|
|
|
|
serialport->RevCmdFlag = 1;
|
|
|
|
curserial->RevCmdFlag = 1;
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -2018,18 +2130,20 @@ int FindNextCameraPhotoCommand(int devidx)
|
|
|
|
char szbuf[128];
|
|
|
|
char szbuf[128];
|
|
|
|
|
|
|
|
|
|
|
|
//如果命令缓冲区仍有命令,则退出本函数
|
|
|
|
//如果命令缓冲区仍有命令,则退出本函数
|
|
|
|
if((devparam[devidx].commid < 1) || (devparam[devidx].commid >= MAX_SERIAL_PORT_NUM))
|
|
|
|
if((devparam[devidx].commid+1 < 1) || (devparam[devidx].commid+1 >= MAX_SERIAL_PORT_NUM))
|
|
|
|
return -1;
|
|
|
|
return -1;
|
|
|
|
if(-1 == srdt.ms_dev[devidx].SerialCmdidx)/* 下发拍照指令*/
|
|
|
|
if(-1 == srdt.ms_dev[devidx].SerialCmdidx)/* 下发拍照指令*/
|
|
|
|
return -1;
|
|
|
|
return -1;
|
|
|
|
cmdno = srdt.ms_dev[devidx].SerialCmdidx;
|
|
|
|
cmdno = srdt.ms_dev[devidx].SerialCmdidx;
|
|
|
|
if(0 == cmdno)/* 下发拍照指令*/
|
|
|
|
if(0 == cmdno)/* 下发拍照指令*/
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if(srdt.ms_dev[devidx].FirstCmdTimeCnt < 4*1000/TIMER_CNT)
|
|
|
|
if((get_msec()-srdt.ms_dev[devidx].FirstCmdTimeCnt > 3*35*1000) ||(get_msec()-srdt.ms_dev[devidx].FirstCmdTimeCnt < 0))
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
srdt.ms_dev[devidx].FirstCmdTimeCnt = get_msec();
|
|
|
|
return -1;
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if(srdt.ms_dev[devidx].FirstCmdTimeCnt > 35*1000/TIMER_CNT)
|
|
|
|
|
|
|
|
|
|
|
|
if(get_msec() - srdt.ms_dev[devidx].FirstCmdTimeCnt > 35*1000)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
srdt.ms_dev[devidx].SerialCmdidx = -1;
|
|
|
|
srdt.ms_dev[devidx].SerialCmdidx = -1;
|
|
|
|
sprintf(szbuf, "串口摄像机未接或故障!结束拍照!");
|
|
|
|
sprintf(szbuf, "串口摄像机未接或故障!结束拍照!");
|
|
|
@ -2079,7 +2193,8 @@ int FindNextCameraPhotoCommand(int devidx)
|
|
|
|
srdt.ms_dev[devidx].SerialCmdidx = srdt.iLastGetPhotoNo;
|
|
|
|
srdt.ms_dev[devidx].SerialCmdidx = srdt.iLastGetPhotoNo;
|
|
|
|
return -1;
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if(srdt.ms_dev[devidx].FirstCmdTimeCnt > 15*1000/TIMER_CNT)
|
|
|
|
|
|
|
|
|
|
|
|
if(get_msec()- srdt.ms_dev[devidx].FirstCmdTimeCnt > 15*1000)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
srdt.ms_dev[devidx].SerialCmdidx = -1;
|
|
|
|
srdt.ms_dev[devidx].SerialCmdidx = -1;
|
|
|
|
sprintf(szbuf, "设置串口摄像机参数时,15秒未收到摄像机应答!退出设置!");
|
|
|
|
sprintf(szbuf, "设置串口摄像机参数时,15秒未收到摄像机应答!退出设置!");
|
|
|
@ -2109,7 +2224,7 @@ int FindNextCameraPhotoCommand(int devidx)
|
|
|
|
imagesize = 0xFF;
|
|
|
|
imagesize = 0xFF;
|
|
|
|
packetsize = (WORD)srdt.ms_dev[devidx].SerialCmdidx;
|
|
|
|
packetsize = (WORD)srdt.ms_dev[devidx].SerialCmdidx;
|
|
|
|
cmdidx = 0x11;
|
|
|
|
cmdidx = 0x11;
|
|
|
|
if(srdt.ms_dev[devidx].FirstCmdTimeCnt > 35*1000/TIMER_CNT)
|
|
|
|
if(get_msec()-srdt.ms_dev[devidx].FirstCmdTimeCnt > 35*1000)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
srdt.ms_dev[devidx].SerialCmdidx = -1;
|
|
|
|
srdt.ms_dev[devidx].SerialCmdidx = -1;
|
|
|
|
sprintf(szbuf, "读取第%d包图片数据35秒未收到!结束拍照!",packetsize);
|
|
|
|
sprintf(szbuf, "读取第%d包图片数据35秒未收到!结束拍照!",packetsize);
|
|
|
@ -2118,7 +2233,8 @@ int FindNextCameraPhotoCommand(int devidx)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
MakeCameraPhotoCommand(devidx, cmdidx, imagesize, packetsize, imagequality);
|
|
|
|
MakeCameraPhotoCommand(devidx, cmdidx, imagesize, packetsize, imagequality);
|
|
|
|
srdt.curdevidx[srdt.ms_dev[devidx].UseSerialidx] = devidx;
|
|
|
|
//MakeCameraPhotoCommand(devidx, 2, imagesize, packetsize, imagequality);
|
|
|
|
|
|
|
|
srdt.curdevidx[devparam[devidx].commid] = devidx;
|
|
|
|
return 1;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -2145,6 +2261,9 @@ void MakeCameraPhotoCommand( int portno, BYTE cmdidx, int OneParam, WORD TwoPara
|
|
|
|
sendbuf[i++] = cmdidx; /* 命令字*/
|
|
|
|
sendbuf[i++] = cmdidx; /* 命令字*/
|
|
|
|
switch(cmdidx)
|
|
|
|
switch(cmdidx)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
case 0x02: /* */
|
|
|
|
|
|
|
|
sendbuf[i-2] = 0xFF;
|
|
|
|
|
|
|
|
break;
|
|
|
|
case 0x03: /*设置传感器通讯参数(03H)*/
|
|
|
|
case 0x03: /*设置传感器通讯参数(03H)*/
|
|
|
|
sendbuf[i++] = 0x00; /* 波特率*/
|
|
|
|
sendbuf[i++] = 0x00; /* 波特率*/
|
|
|
|
sendbuf[i++] = 0x00;
|
|
|
|
sendbuf[i++] = 0x00;
|
|
|
@ -2163,7 +2282,7 @@ void MakeCameraPhotoCommand( int portno, BYTE cmdidx, int OneParam, WORD TwoPara
|
|
|
|
sendbuf[i++] = HIBYTE(LOWORD(icurtime+8*60*60));
|
|
|
|
sendbuf[i++] = HIBYTE(LOWORD(icurtime+8*60*60));
|
|
|
|
sendbuf[i++] = LOBYTE(LOWORD(icurtime+8*60*60));
|
|
|
|
sendbuf[i++] = LOBYTE(LOWORD(icurtime+8*60*60));
|
|
|
|
sendbuf[i++] = Threep;/*图像质量(ImageQuality)*/
|
|
|
|
sendbuf[i++] = Threep;/*图像质量(ImageQuality)*/
|
|
|
|
//sendbuf[i++] = netportparam.CurPresetno[srdt.ms_dev[portno].CameraChannel-1];/*拍照预置点(PresetNo)*/
|
|
|
|
sendbuf[i++] = 0;//netportparam.CurPresetno[srdt.ms_dev[portno].CameraChannel-1];/*拍照预置点(PresetNo)*/
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case 0x11: /* 获取指定包数据(11H)*/
|
|
|
|
case 0x11: /* 获取指定包数据(11H)*/
|
|
|
|
sendbuf[i++] = HIBYTE(TwoParam);/*图片包号:(PackageNo)*/
|
|
|
|
sendbuf[i++] = HIBYTE(TwoParam);/*图片包号:(PackageNo)*/
|
|
|
@ -2187,7 +2306,7 @@ void MakeCameraPhotoCommand( int portno, BYTE cmdidx, int OneParam, WORD TwoPara
|
|
|
|
sendbuf[3] = (BYTE)((i-10)>>8);
|
|
|
|
sendbuf[3] = (BYTE)((i-10)>>8);
|
|
|
|
sendbuf[4] = (BYTE)(i-10);
|
|
|
|
sendbuf[4] = (BYTE)(i-10);
|
|
|
|
serialport[srdt.ms_dev[portno].UseSerialidx].cmdlen = i;
|
|
|
|
serialport[srdt.ms_dev[portno].UseSerialidx].cmdlen = i;
|
|
|
|
return;
|
|
|
|
//return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 准备发送云台指令
|
|
|
|
// 准备发送云台指令
|
|
|
@ -2210,6 +2329,7 @@ int Gm_CtrlPtzCmd(u_char channel, DWORD ptzcmd)
|
|
|
|
LOGI("%s", szbuf);
|
|
|
|
LOGI("%s", szbuf);
|
|
|
|
return 1;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
if((2 > srdt.ms_dev[i].UseSerialidx+1) ||(MAX_SERIAL_PORT_NUM < srdt.ms_dev[i].UseSerialidx+1))
|
|
|
|
if((2 > srdt.ms_dev[i].UseSerialidx+1) ||(MAX_SERIAL_PORT_NUM < srdt.ms_dev[i].UseSerialidx+1))
|
|
|
|
{
|
|
|
|
{
|
|
|
|
sprintf(szbuf, "通道%d摄像机错误的使用了串口%d", channel, srdt.ms_dev[i].UseSerialidx+1);
|
|
|
|
sprintf(szbuf, "通道%d摄像机错误的使用了串口%d", channel, srdt.ms_dev[i].UseSerialidx+1);
|
|
|
@ -2218,9 +2338,10 @@ int Gm_CtrlPtzCmd(u_char channel, DWORD ptzcmd)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
else
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
#endif
|
|
|
|
sprintf(szbuf, "摄像机通道%d 使用串口%d", channel, srdt.ms_dev[i].UseSerialidx+1);
|
|
|
|
sprintf(szbuf, "摄像机通道%d 使用串口%d", channel, srdt.ms_dev[i].UseSerialidx+1);
|
|
|
|
LOGI("%s", szbuf);
|
|
|
|
LOGI("%s", szbuf);
|
|
|
|
}
|
|
|
|
//}
|
|
|
|
srdt.usecameradevidx = i;
|
|
|
|
srdt.usecameradevidx = i;
|
|
|
|
// 查找串口序号
|
|
|
|
// 查找串口序号
|
|
|
|
srdt.camerauseserial = srdt.ms_dev[i].UseSerialidx;
|
|
|
|
srdt.camerauseserial = srdt.ms_dev[i].UseSerialidx;
|
|
|
@ -2243,12 +2364,14 @@ int Gm_Camera_Timer(void)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
char szbuf[128];
|
|
|
|
char szbuf[128];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
if((2 > srdt.camerauseserial+1) ||(MAX_SERIAL_PORT_NUM < srdt.camerauseserial+1))
|
|
|
|
if((2 > srdt.camerauseserial+1) ||(MAX_SERIAL_PORT_NUM < srdt.camerauseserial+1))
|
|
|
|
{
|
|
|
|
{
|
|
|
|
sprintf(szbuf, "摄像机错误的使用了串口%d", srdt.camerauseserial+1);
|
|
|
|
sprintf(szbuf, "摄像机错误的使用了串口%d", srdt.camerauseserial+1);
|
|
|
|
LOGI("%s", szbuf);
|
|
|
|
LOGI("%s", szbuf);
|
|
|
|
return 1;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|
|
|
|
if(PELCO_D_PROTOCOL == devparam[srdt.usecameradevidx].ProtocolIdx)
|
|
|
|
if(PELCO_D_PROTOCOL == devparam[srdt.usecameradevidx].ProtocolIdx)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
switch(srdt.PtzCmdType)
|
|
|
|
switch(srdt.PtzCmdType)
|
|
|
@ -3146,5 +3269,39 @@ void Collect_sensor_data(SENSOR_PARAM *sensorParam)
|
|
|
|
GM_StartSerialComm();
|
|
|
|
GM_StartSerialComm();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CameraPhoto(SENSOR_PARAM *sensorParam, unsigned char channel, int cmdidx)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
int i;
|
|
|
|
|
|
|
|
//speed_t baudrate;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for(i=0; i<MAX_SERIAL_DEV_NUM; i++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
devparam[i].IsNoInsta = sensorParam[i].IsNoInsta;
|
|
|
|
|
|
|
|
if(0 == sensorParam[i].IsNoInsta)
|
|
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
devparam[i].ProtocolIdx = sensorParam[i].SensorsType;
|
|
|
|
|
|
|
|
devparam[i].devaddr = sensorParam[i].devaddr;
|
|
|
|
|
|
|
|
//baudrate = getBaudrate(sensorParam[i].baudrate);
|
|
|
|
|
|
|
|
devparam[i].baudrate = getBaudrate(sensorParam[i].baudrate);
|
|
|
|
|
|
|
|
//devparam[i].baudrate = 17;
|
|
|
|
|
|
|
|
devparam[i].databit = sensorParam[i].databit;
|
|
|
|
|
|
|
|
if((sensorParam[i].stopbit > 0) && (sensorParam[i].stopbit < 3))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
memset(devparam[i].stopbit, 0, sizeof(devparam[i].stopbit));
|
|
|
|
|
|
|
|
sprintf(devparam[i].stopbit, "%0.1f", sensorParam[i].stopbit);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
devparam[i].CameraChannel = sensorParam[i].CameraChannel;
|
|
|
|
|
|
|
|
devparam[i].Phase = sensorParam[i].Phase;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
for(;;)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
Gm_CtrlPtzCmd(1, P_MOVE_LEFT);
|
|
|
|
|
|
|
|
sleep(3);
|
|
|
|
|
|
|
|
Gm_CtrlPtzCmd(1, Cmd_Cancel);
|
|
|
|
|
|
|
|
sleep(10);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//GM_StartSerialComm();
|
|
|
|
|
|
|
|
//GM_StartSerialCameraPhoto(1, 0);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|