|
|
|
@ -640,12 +640,21 @@ void Gm_OpenSerialPort(int devidx)
|
|
|
|
|
// 关闭串口通讯
|
|
|
|
|
void Gm_CloseSerialPort(void)
|
|
|
|
|
{
|
|
|
|
|
int i;
|
|
|
|
|
|
|
|
|
|
for(i=0; i<MAX_SERIAL_PORT_NUM; i++)
|
|
|
|
|
{
|
|
|
|
|
if(serialport[i].fd > 0)
|
|
|
|
|
{
|
|
|
|
|
close(serialport[i].fd);
|
|
|
|
|
serialport[i].fd = -1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*******************************************************************************
|
|
|
|
|
函数名称: kal_uint16 GM_SerialComSend(const BYTE * cSendBuf, DWORD nSendLen, int commid)
|
|
|
|
|
函数名称: int GM_SerialComSend(const BYTE * cSendBuf, DWORD nSendLen, int commid)
|
|
|
|
|
功能说明:串口发送数据 返回实际发送的字节数
|
|
|
|
|
输入参数:
|
|
|
|
|
输出参数:
|
|
|
|
@ -668,9 +677,9 @@ int GM_SerialComSend(unsigned char * cSendBuf, unsigned long nSendLen, int commi
|
|
|
|
|
}
|
|
|
|
|
else if(len > 0)
|
|
|
|
|
{
|
|
|
|
|
memset(szbuf, 0, sizeof(szbuf));
|
|
|
|
|
sprintf(szbuf, "串口%d发送%d字节:", commid+1, len);
|
|
|
|
|
BytestreamLOG(szbuf, cSendBuf, len, 'D');
|
|
|
|
|
//memset(szbuf, 0, sizeof(szbuf));
|
|
|
|
|
//sprintf(szbuf, "串口%d发送%d字节:", commid+1, len);
|
|
|
|
|
//BytestreamLOG(szbuf, cSendBuf, len, 'D');
|
|
|
|
|
#if 0
|
|
|
|
|
for (i = 0; i < len; i++)
|
|
|
|
|
{
|
|
|
|
@ -697,22 +706,250 @@ int Gm_SetSerialPortParam(int commid)
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Gm_InitSerialComm_Test(void)
|
|
|
|
|
{
|
|
|
|
|
int i, j;
|
|
|
|
|
|
|
|
|
|
srdt.sampling = 0;
|
|
|
|
|
srdt.PtzCmdType = Cmd_Cancel; // 云台指令类型
|
|
|
|
|
for(i=0; i<MAX_SERIAL_PORT_NUM; i++)
|
|
|
|
|
{
|
|
|
|
|
//***************** 串行端口信息 ************************
|
|
|
|
|
//g_serialparam[i].Baud = 1200;
|
|
|
|
|
//g_serialparam[i].dataBits = 8;
|
|
|
|
|
//g_serialparam[i].stopBits = 1;
|
|
|
|
|
//g_serialparam[i].parity = 0;
|
|
|
|
|
//******************** Poll Cmd ****************************
|
|
|
|
|
serialport[i].Retry = 0;
|
|
|
|
|
//serialport[i].RetryTime = 500/TIMER_CNT;
|
|
|
|
|
j = TIMER_CNT;
|
|
|
|
|
serialport[i].RetryTime = 300/TIMER_CNT;
|
|
|
|
|
j = 1500/TIMER_CNT;
|
|
|
|
|
serialport[i].WaitTime = 0;
|
|
|
|
|
memset(serialport[i].m_au8RecvBuf, 0, RECVDATA_MAXLENTH); // 接收数据缓存区
|
|
|
|
|
ClearCmdFormPollCmdBuf(i);
|
|
|
|
|
}
|
|
|
|
|
//g_serialparam[1].Baud = 1200;
|
|
|
|
|
for(i=0; i<MAX_SERIAL_DEV_NUM; i++)
|
|
|
|
|
devparam[i].IsNoInsta = 0;
|
|
|
|
|
devparam[0].ProtocolIdx = WEATHER_PROTOCOL;
|
|
|
|
|
devparam[0].baudrate = B9600;
|
|
|
|
|
devparam[0].databit = 8;
|
|
|
|
|
memset(devparam[0].stopbit, 0, sizeof(devparam[0].stopbit));
|
|
|
|
|
sprintf(devparam[0].stopbit, "1");
|
|
|
|
|
devparam[0].parity = 0;
|
|
|
|
|
devparam[0].IsNoInsta = 1;
|
|
|
|
|
//devparam[0].PowerPort = 2;
|
|
|
|
|
devparam[0].devaddr = 4;
|
|
|
|
|
|
|
|
|
|
devparam[1].ProtocolIdx = WEATHER_PROTOCOL;
|
|
|
|
|
devparam[1].baudrate = B9600;
|
|
|
|
|
devparam[1].databit = 8;
|
|
|
|
|
memset(devparam[1].stopbit, 0, sizeof(devparam[1].stopbit));
|
|
|
|
|
sprintf(devparam[1].stopbit, "1");
|
|
|
|
|
devparam[1].parity = 0;
|
|
|
|
|
devparam[1].IsNoInsta = 1;
|
|
|
|
|
//devparam[1].PowerPort = 14;
|
|
|
|
|
devparam[1].devaddr = 1;
|
|
|
|
|
#if 0
|
|
|
|
|
devparam[2].ProtocolIdx = SLANT_PROTOCOL;
|
|
|
|
|
devparam[2].baudrate = 1200;
|
|
|
|
|
devparam[2].databit = 8;
|
|
|
|
|
devparam[2].stopbit = 1;
|
|
|
|
|
devparam[2].parity = 0;
|
|
|
|
|
devparam[2].IsNoInsta = 0;
|
|
|
|
|
//devparam[2].PowerPort = 3;
|
|
|
|
|
devparam[2].devaddr = 2;
|
|
|
|
|
|
|
|
|
|
devparam[3].ProtocolIdx = PELCO_P_PROTOCOL;
|
|
|
|
|
devparam[3].baudrate = 9600;
|
|
|
|
|
devparam[3].databit = 8;
|
|
|
|
|
devparam[3].stopbit = 1;
|
|
|
|
|
devparam[3].parity = 0;
|
|
|
|
|
devparam[3].IsNoInsta = 0;
|
|
|
|
|
//devparam[3].PowerPort = 15;
|
|
|
|
|
devparam[3].CameraChannel = 1;
|
|
|
|
|
devparam[3].devaddr = 0;
|
|
|
|
|
|
|
|
|
|
devparam[4].ProtocolIdx = WDIITEMP_PROTOCOL_NEW;
|
|
|
|
|
devparam[4].baudrate = 1200;
|
|
|
|
|
devparam[4].databit = 8;
|
|
|
|
|
devparam[4].stopbit = 1;
|
|
|
|
|
devparam[4].parity = 0;
|
|
|
|
|
devparam[4].IsNoInsta = 0;
|
|
|
|
|
//devparam[4].PowerPort = 17;
|
|
|
|
|
devparam[4].devaddr = 4;
|
|
|
|
|
|
|
|
|
|
devparam[5].ProtocolIdx = RALLY_PROTOCOL_NEW;
|
|
|
|
|
devparam[5].baudrate = 9600;
|
|
|
|
|
devparam[5].databit = 8;
|
|
|
|
|
devparam[5].stopbit = 1;
|
|
|
|
|
devparam[5].parity = 0;
|
|
|
|
|
devparam[5].IsNoInsta = 1;
|
|
|
|
|
//devparam[5].PowerPort = 6;
|
|
|
|
|
devparam[5].devaddr = 11;
|
|
|
|
|
|
|
|
|
|
devparam[6].ProtocolIdx = RALLY_PROTOCOL_NEW;
|
|
|
|
|
devparam[6].baudrate = 9600;
|
|
|
|
|
devparam[6].databit = 8;
|
|
|
|
|
devparam[6].stopbit = 1;
|
|
|
|
|
devparam[6].parity = 0;
|
|
|
|
|
devparam[6].IsNoInsta = 1;
|
|
|
|
|
//devparam[6].PowerPort = 6;
|
|
|
|
|
devparam[6].devaddr = 12;
|
|
|
|
|
|
|
|
|
|
devparam[7].ProtocolIdx = RALLY_PROTOCOL_NEW;
|
|
|
|
|
devparam[7].baudrate = 9600;
|
|
|
|
|
devparam[7].databit = 8;
|
|
|
|
|
devparam[7].stopbit = 1;
|
|
|
|
|
devparam[7].parity = 0;
|
|
|
|
|
devparam[7].IsNoInsta = 1;
|
|
|
|
|
//devparam[7].PowerPort = 6;
|
|
|
|
|
devparam[7].devaddr = 10;
|
|
|
|
|
|
|
|
|
|
devparam[8].ProtocolIdx = PELCO_P_PROTOCOL;
|
|
|
|
|
devparam[8].baudrate = 9600;
|
|
|
|
|
devparam[8].databit = 8;
|
|
|
|
|
devparam[8].stopbit = 1;
|
|
|
|
|
devparam[8].parity = 0;
|
|
|
|
|
devparam[8].IsNoInsta = 0;
|
|
|
|
|
//devparam[8].PowerPort = 10;
|
|
|
|
|
devparam[8].CameraChannel = 2;
|
|
|
|
|
devparam[8].devaddr = 0;
|
|
|
|
|
|
|
|
|
|
devparam[9].ProtocolIdx = WDIITEMP_PROTOCOL_NEW;
|
|
|
|
|
devparam[9].baudrate = 9600;
|
|
|
|
|
devparam[9].databit = 8;
|
|
|
|
|
devparam[9].stopbit = 1;
|
|
|
|
|
devparam[9].parity = 0;
|
|
|
|
|
devparam[9].IsNoInsta = 1;
|
|
|
|
|
//devparam[9].PowerPort = 17;
|
|
|
|
|
devparam[9].devaddr = 47;
|
|
|
|
|
|
|
|
|
|
devparam[10].ProtocolIdx = LCURRENT_PROTOCOL;
|
|
|
|
|
devparam[10].baudrate = 9600;
|
|
|
|
|
devparam[10].databit = 8;
|
|
|
|
|
devparam[10].stopbit = 1;
|
|
|
|
|
devparam[10].parity = 0;
|
|
|
|
|
devparam[10].IsNoInsta = 1;
|
|
|
|
|
//devparam[10].PowerPort = 5;
|
|
|
|
|
devparam[10].devaddr = 7;
|
|
|
|
|
|
|
|
|
|
devparam[11].ProtocolIdx = LCURRENT_PROTOCOL;
|
|
|
|
|
devparam[11].baudrate = 9600;
|
|
|
|
|
devparam[11].databit = 8;
|
|
|
|
|
devparam[11].stopbit = 1;
|
|
|
|
|
devparam[11].parity = 0;
|
|
|
|
|
devparam[11].IsNoInsta = 1;
|
|
|
|
|
//devparam[11].PowerPort = 6;
|
|
|
|
|
devparam[11].devaddr = 6;
|
|
|
|
|
|
|
|
|
|
devparam[12].ProtocolIdx = LCURRENT_PROTOCOL;
|
|
|
|
|
devparam[12].baudrate = 9600;
|
|
|
|
|
devparam[12].databit = 8;
|
|
|
|
|
devparam[12].stopbit = 1;
|
|
|
|
|
devparam[12].parity = 0;
|
|
|
|
|
devparam[12].IsNoInsta = 1;
|
|
|
|
|
//devparam[12].PowerPort = 8;
|
|
|
|
|
devparam[12].devaddr = 5;
|
|
|
|
|
|
|
|
|
|
devparam[13].ProtocolIdx = SLANT_PROTOCOL;
|
|
|
|
|
devparam[13].baudrate = 1200;
|
|
|
|
|
devparam[13].databit = 8;
|
|
|
|
|
devparam[13].stopbit = 1;
|
|
|
|
|
devparam[13].parity = 0;
|
|
|
|
|
//devparam[13].PowerPort = 4;
|
|
|
|
|
devparam[13].IsNoInsta = 1;
|
|
|
|
|
devparam[13].devaddr = 2;
|
|
|
|
|
|
|
|
|
|
devparam[14].ProtocolIdx = SLANT_PROTOCOL;
|
|
|
|
|
devparam[14].baudrate = 1200;
|
|
|
|
|
devparam[14].databit = 8;
|
|
|
|
|
devparam[14].stopbit = 1;
|
|
|
|
|
devparam[14].parity = 0;
|
|
|
|
|
devparam[14].IsNoInsta = 1;
|
|
|
|
|
//devparam[14].PowerPort = 2;
|
|
|
|
|
devparam[14].devaddr = 3;
|
|
|
|
|
#endif
|
|
|
|
|
#if 0
|
|
|
|
|
devparam[15].ProtocolIdx = LEIRALLY_PROTOCOL;
|
|
|
|
|
//#endif
|
|
|
|
|
devparam[15].ProtocolIdx = WIND_PROTOCOL;
|
|
|
|
|
devparam[15].baudrate = 9600;
|
|
|
|
|
devparam[15].databit = 8;
|
|
|
|
|
devparam[15].stopbit = 1;
|
|
|
|
|
devparam[15].parity = 0;
|
|
|
|
|
devparam[15].IsNoInsta = 1;
|
|
|
|
|
devparam[15].PowerPort = 14;
|
|
|
|
|
devparam[15].devaddr = 1;
|
|
|
|
|
|
|
|
|
|
// 6 气象
|
|
|
|
|
// 空气温度
|
|
|
|
|
weatherpntmsg[0].AiParam.fFactor = 1.0;
|
|
|
|
|
weatherpntmsg[0].AiParam.EuValueDelta = 50;
|
|
|
|
|
// 相对湿度
|
|
|
|
|
weatherpntmsg[1].AiParam.fFactor = 1.0;
|
|
|
|
|
weatherpntmsg[1].AiParam.EuValueDelta = 0;
|
|
|
|
|
// 风速
|
|
|
|
|
weatherpntmsg[2].AiParam.fFactor = 0.01;
|
|
|
|
|
weatherpntmsg[2].AiParam.EuValueDelta = 0;
|
|
|
|
|
// 风向
|
|
|
|
|
weatherpntmsg[3].AiParam.fFactor = 0.001;
|
|
|
|
|
weatherpntmsg[3].AiParam.EuValueDelta = 0;
|
|
|
|
|
// 降水强度
|
|
|
|
|
weatherpntmsg[4].AiParam.fFactor = 60;
|
|
|
|
|
weatherpntmsg[4].AiParam.EuValueDelta = 0;
|
|
|
|
|
// 相对空气压力
|
|
|
|
|
weatherpntmsg[5].AiParam.fFactor = 1.0;
|
|
|
|
|
weatherpntmsg[5].AiParam.EuValueDelta = 0;
|
|
|
|
|
// 备用
|
|
|
|
|
weatherpntmsg[6].AiParam.fFactor = 1.0;
|
|
|
|
|
weatherpntmsg[6].AiParam.EuValueDelta = 0;
|
|
|
|
|
// 备用
|
|
|
|
|
weatherpntmsg[7].AiParam.fFactor = 1.0;
|
|
|
|
|
weatherpntmsg[7].AiParam.EuValueDelta = 0;
|
|
|
|
|
|
|
|
|
|
smokepntmsg[0].AiParam.EuValueDelta = 0;
|
|
|
|
|
smokepntmsg[0].AiParam.fFactor = 0.1;
|
|
|
|
|
rizhaopntmsg[0].AiParam.fFactor = 1.0;
|
|
|
|
|
rizhaopntmsg[0].AiParam.EuValueDelta = 0;
|
|
|
|
|
rizhaopntmsg[1].AiParam.fFactor = 2.5;
|
|
|
|
|
rizhaopntmsg[1].AiParam.EuValueDelta = 0;
|
|
|
|
|
|
|
|
|
|
slantpntmsg[0][0].AiParam.fFactor = 100.0;
|
|
|
|
|
slantpntmsg[0][0].AiParam.EuValueDelta = 0;
|
|
|
|
|
slantpntmsg[0][1].AiParam.fFactor = 100.0;
|
|
|
|
|
slantpntmsg[0][1].AiParam.EuValueDelta = 0;
|
|
|
|
|
slantpntmsg[1][0].AiParam.fFactor = 100.0;
|
|
|
|
|
slantpntmsg[1][0].AiParam.EuValueDelta = 0;
|
|
|
|
|
slantpntmsg[1][1].AiParam.fFactor = 100.0;
|
|
|
|
|
slantpntmsg[1][1].AiParam.EuValueDelta = 0;
|
|
|
|
|
|
|
|
|
|
for(i=0; i<6; i++)
|
|
|
|
|
for(j=0; j<RALLY_DATA_NUM; j++)
|
|
|
|
|
{
|
|
|
|
|
rallypntmsg[i][j].AiParam.fFactor = 1.0;
|
|
|
|
|
rallypntmsg[i][j].AiParam.EuValueDelta = 0;
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 初始化所有串口及所接传感器的配置
|
|
|
|
|
void Gm_InitSerialComm(void)
|
|
|
|
|
{
|
|
|
|
|
int i;
|
|
|
|
|
char szbuf[128];
|
|
|
|
|
|
|
|
|
|
//Gm_InitSerialComm_Test();
|
|
|
|
|
Gm_InitSerialComm_Test();
|
|
|
|
|
// srdt 配置
|
|
|
|
|
//srdt.sampling = 0;
|
|
|
|
|
//srdt.PtzCmdType = Cmd_Cancel; // 云台指令类型
|
|
|
|
|
//srdt.SendStopPtzCmdTimeCnt=-1; // 发送云台停止指令计数
|
|
|
|
|
//srdt.uRunMode = 0;
|
|
|
|
|
srdt.CommMod = 0;
|
|
|
|
|
//srdt.CommMod = 0;
|
|
|
|
|
|
|
|
|
|
// 查找装置使用的串口序号
|
|
|
|
|
FindDevUseSerialCommNo();
|
|
|
|
|
//FindDevUseSerialCommNo();
|
|
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
|
for(i=0; i<MAX_SERIAL_DEV_NUM; i++)
|
|
|
|
@ -822,6 +1059,7 @@ void FindDevUseSerialCommNo(void)
|
|
|
|
|
memset(devparam[i].pathname, 0, sizeof(devparam[i].pathname));
|
|
|
|
|
/* 目前还不确定具体串口分配,暂时默认使用串口1</dev/ttyS0>*/
|
|
|
|
|
sprintf(devparam[i].pathname, "/dev/ttyS0");
|
|
|
|
|
devparam[i].commid = 0;
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
devparam[i].IsNoInsta = 0;
|
|
|
|
@ -834,9 +1072,10 @@ void GM_StartSerialComm(void)
|
|
|
|
|
{
|
|
|
|
|
int i, j;
|
|
|
|
|
char szbuf[64];
|
|
|
|
|
long polltime=0;
|
|
|
|
|
|
|
|
|
|
// 测试使用初始化配置
|
|
|
|
|
//Gm_InitSerialComm();
|
|
|
|
|
Gm_InitSerialComm();
|
|
|
|
|
//DebugStringPrintf(szbuf, strlen(szbuf), 1);
|
|
|
|
|
memset((void*)srdt.curdevidx, 0, sizeof(srdt.curdevidx));
|
|
|
|
|
//Gm_OpenSerialPower(); /* 不在这使用*/
|
|
|
|
@ -853,6 +1092,7 @@ void GM_StartSerialComm(void)
|
|
|
|
|
}
|
|
|
|
|
for(i=0; i<MAX_SERIAL_DEV_NUM; i++)
|
|
|
|
|
{
|
|
|
|
|
srdt.ms_dev[i].FirstCmdTimeCnt = get_msec();
|
|
|
|
|
memset(szbuf, 0, sizeof(szbuf));
|
|
|
|
|
switch(devparam[i].ProtocolIdx)
|
|
|
|
|
{
|
|
|
|
@ -896,11 +1136,17 @@ void GM_StartSerialComm(void)
|
|
|
|
|
|
|
|
|
|
LOGI("启动数据采样!");
|
|
|
|
|
/* 直接使用循环进行采样处理*/
|
|
|
|
|
polltime = get_msec();
|
|
|
|
|
for(;;)
|
|
|
|
|
{
|
|
|
|
|
usleep(5000);
|
|
|
|
|
usleep(TIMER_CNT*100);
|
|
|
|
|
//LOGW("polltime=%ldms", get_msec()-polltime);
|
|
|
|
|
polltime = get_msec();
|
|
|
|
|
if(GM_SerialTimer() < 0)
|
|
|
|
|
{
|
|
|
|
|
LOGV("退出采样流程!");
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
@ -994,11 +1240,13 @@ void GM_StartSerialCameraPhoto(BYTE channel, int cmdidx)
|
|
|
|
|
|
|
|
|
|
int GM_SerialTimer(void)
|
|
|
|
|
{
|
|
|
|
|
int flag = -1;
|
|
|
|
|
|
|
|
|
|
Gm_FindAllSensorsCommand();
|
|
|
|
|
GM_IsCloseSensors();
|
|
|
|
|
GM_AllSerialComRecv();
|
|
|
|
|
GM_ReadWireTemAndCloseTimer();
|
|
|
|
|
return 1;
|
|
|
|
|
flag = GM_CloseTimer();
|
|
|
|
|
return flag;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/********************************************************************************
|
|
|
|
@ -1024,12 +1272,14 @@ void Gm_FindAllSensorsCommand(void)
|
|
|
|
|
curidx = (curidx+1)%MAX_SERIAL_DEV_NUM;
|
|
|
|
|
if(j != devparam[curidx].commid)
|
|
|
|
|
continue;
|
|
|
|
|
if(srdt.ms_dev[curidx].IsNeedSerial == 0)
|
|
|
|
|
continue;
|
|
|
|
|
if(serialport[devparam[curidx].commid].fd < 0)
|
|
|
|
|
Gm_OpenSerialPort(curidx);
|
|
|
|
|
if(serialport[devparam[curidx].commid].cmdlen > 0)
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
flag = -1;
|
|
|
|
|
if(srdt.ms_dev[curidx].IsNeedSerial == 0)
|
|
|
|
|
continue;
|
|
|
|
|
switch(devparam[curidx].ProtocolIdx)
|
|
|
|
|
{
|
|
|
|
|
case WEATHER_PROTOCOL: /* 温湿度气压*/
|
|
|
|
@ -1079,15 +1329,18 @@ void GM_IsCloseSensors(void)
|
|
|
|
|
case RALLY_PROTOCOL: /* 拉力*/
|
|
|
|
|
case WIND_PROTOCOL: /* 风速风向*/
|
|
|
|
|
case SLANT_PROTOCOL: /* 倾角*/
|
|
|
|
|
if(srdt.ms_dev[i].FirstCmdTimeCnt >20*1000/TIMER_CNT)
|
|
|
|
|
if((get_msec()-srdt.ms_dev[i].FirstCmdTimeCnt > 50*1000) ||(get_msec()-srdt.ms_dev[i].FirstCmdTimeCnt < 0))
|
|
|
|
|
{
|
|
|
|
|
srdt.ms_dev[i].FirstCmdTimeCnt = get_msec();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
if(get_msec()- srdt.ms_dev[i].FirstCmdTimeCnt > 15*1000)
|
|
|
|
|
{
|
|
|
|
|
srdt.ms_dev[i].IsNeedSerial = 0;
|
|
|
|
|
// 关闭传感器电源
|
|
|
|
|
LOGI("因读取装置%d数据超过20秒,关闭装置%d电源!", i+1, i+1);
|
|
|
|
|
LOGI("读取装置%d数据%0.3f秒,关闭装置%d电源!", i+1, (get_msec()-srdt.ms_dev[i].FirstCmdTimeCnt)/1000.0,i+1);
|
|
|
|
|
//Gm_CtrlCloseSensorsPower(i);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
srdt.ms_dev[i].FirstCmdTimeCnt++;
|
|
|
|
|
break;
|
|
|
|
|
case PELCO_D_PROTOCOL: /* 摄像机类型*/
|
|
|
|
|
case PELCO_P_PROTOCOL: /* 摄像机类型*/
|
|
|
|
@ -1140,29 +1393,30 @@ void GM_AllSerialComRecv(void)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/********************************************************************************
|
|
|
|
|
函数名称: void GM_ReadWireTemAndCloseTimer()
|
|
|
|
|
函数名称: int GM_CloseTimer()
|
|
|
|
|
功能说明:
|
|
|
|
|
输入参数:
|
|
|
|
|
输出参数:
|
|
|
|
|
其它说明:
|
|
|
|
|
*********************************************************************************/
|
|
|
|
|
void GM_ReadWireTemAndCloseTimer(void)
|
|
|
|
|
int GM_CloseTimer(void)
|
|
|
|
|
{
|
|
|
|
|
int i, j, iretime;
|
|
|
|
|
char buf[256];
|
|
|
|
|
|
|
|
|
|
for(i=0; i<MAX_SERIAL_DEV_NUM; i++)
|
|
|
|
|
{
|
|
|
|
|
if(((srdt.ms_dev[i].IsNeedSerial == 1) || ((srdt.sampling & 0x02) == 0x02))
|
|
|
|
|
if((srdt.ms_dev[i].IsNeedSerial == 1)
|
|
|
|
|
&& ((0<devparam[i].ProtocolIdx)&&(INVALID_PROTOCOL >devparam[i].ProtocolIdx)))
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
if(i < MAX_SERIAL_DEV_NUM)
|
|
|
|
|
{
|
|
|
|
|
return; // 寻找
|
|
|
|
|
return 1; // 寻找
|
|
|
|
|
}
|
|
|
|
|
else // 关闭所有串口及电源
|
|
|
|
|
{
|
|
|
|
|
#if 0
|
|
|
|
|
for(i=0; i<MAX_SERIAL_DEV_NUM; i++)
|
|
|
|
|
{
|
|
|
|
|
if((srdt.ms_dev[i].IsNeedSerial == 1) && (7 == devparam[i].ProtocolIdx))
|
|
|
|
@ -1215,7 +1469,10 @@ void GM_ReadWireTemAndCloseTimer(void)
|
|
|
|
|
//StartTimer(GM_SERIAL_START, TIMER_CNT, GM_SerialTimer);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
#endif
|
|
|
|
|
#if 0
|
|
|
|
|
for(i=0; i<MAX_SERIAL_DEV_NUM; i++)
|
|
|
|
|
{
|
|
|
|
|
if((srdt.ms_dev[i].IsNeedSerial == 1) && (RESERVE5_PROTOCOL == devparam[i].ProtocolIdx))
|
|
|
|
@ -1225,12 +1482,14 @@ void GM_ReadWireTemAndCloseTimer(void)
|
|
|
|
|
return;
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
#endif
|
|
|
|
|
Gm_CloseSerialPort();
|
|
|
|
|
for(j=0; j<MAX_SERIAL_PORT_NUM; j++)
|
|
|
|
|
ClearCmdFormPollCmdBuf(j);
|
|
|
|
|
sprintf(buf, "关闭串口定时器!");
|
|
|
|
|
LOGI("%s", buf);
|
|
|
|
|
//StopTimer(GM_SERIAL_START);
|
|
|
|
|
return -1;
|
|
|
|
|
#if 0
|
|
|
|
|
//g_usleep &= 0xFE;
|
|
|
|
|
//if(0 == g_usleep)
|
|
|
|
|
{
|
|
|
|
@ -1242,6 +1501,7 @@ void GM_ReadWireTemAndCloseTimer(void)
|
|
|
|
|
//sprintf(buf, "usleep=%d", g_usleep);
|
|
|
|
|
//DebugStringPrintf(buf, strlen(buf), 1);
|
|
|
|
|
srdt.sampling &= 0xFA;
|
|
|
|
|
|
|
|
|
|
if(1 == srdt.uRunMode)
|
|
|
|
|
{
|
|
|
|
|
GM_StartSerialComm();
|
|
|
|
@ -1251,16 +1511,19 @@ void GM_ReadWireTemAndCloseTimer(void)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
srdt.tempsamplingstartime = -1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
#if 0
|
|
|
|
|
if(0 == srdt.selfflag)
|
|
|
|
|
;
|
|
|
|
|
else
|
|
|
|
|
;//Gm_CloseSerialPower();
|
|
|
|
|
srdt.clcyesampling = 0;
|
|
|
|
|
//srdt.clcyesampling = 0;
|
|
|
|
|
//Gm_CloseAllSensorsPower();
|
|
|
|
|
|
|
|
|
|
srdt.selfflag = 0;
|
|
|
|
|
}
|
|
|
|
|
//srdt.selfflag = 0;
|
|
|
|
|
//}
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1476,6 +1739,7 @@ void CameraPhotoPortDataProcess( int port)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
long lsendtime=0;
|
|
|
|
|
/*********************************************************************************
|
|
|
|
|
发送命令
|
|
|
|
|
**********************************************************************************/
|
|
|
|
@ -1497,8 +1761,9 @@ void SendCmdFormPollCmdBuf( int port )
|
|
|
|
|
if(pPortParam->SendCmdFlag && (pPortParam->RevCmdFlag == 0))
|
|
|
|
|
{
|
|
|
|
|
pPortParam->RetryTimeCnt++;
|
|
|
|
|
if(srdt.sendphotocmdcnt > 0)
|
|
|
|
|
idelay = 10*1000/TIMER_CNT;
|
|
|
|
|
//if(srdt.sendphotocmdcnt > 0)
|
|
|
|
|
// idelay = 10*1000/TIMER_CNT;
|
|
|
|
|
//LOGV("polltime:%ldms", get_msec()-srdt.ms_dev[0].FirstCmdTimeCnt);
|
|
|
|
|
if(pPortParam->RetryTimeCnt < (pPortParam->RetryTime+idelay))
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
@ -1558,6 +1823,8 @@ void SendCmdFormPollCmdBuf( int port )
|
|
|
|
|
|
|
|
|
|
sprintf(buf, "发送串口%d 装置%d命令:", port+1, srdt.curdevidx[port]+1);
|
|
|
|
|
BytestreamLOG(buf, &pPortParam->PollCmd[i+2], len, 'D');
|
|
|
|
|
LOGW("sendtimeconst= %ld", get_msec()-lsendtime);
|
|
|
|
|
lsendtime = get_msec();
|
|
|
|
|
}
|
|
|
|
|
pPortParam->SendCmdFlag = 1;
|
|
|
|
|
pPortParam->ReSendCmdFlag = 0;
|
|
|
|
@ -2027,21 +2294,21 @@ BYTE Gm_Pelco_DCheck( BYTE *msg, int len )
|
|
|
|
|
int FindNextShxyProtocolCommand( int devidx )
|
|
|
|
|
{
|
|
|
|
|
//如果命令缓冲区仍有命令,则退出本函数
|
|
|
|
|
if((srdt.ms_dev[devidx].UseSerialidx < 1) || (srdt.ms_dev[devidx].UseSerialidx >= MAX_SERIAL_PORT_NUM))
|
|
|
|
|
if((devparam[devidx].commid+1 < 1) || (devparam[devidx].commid+1 >= MAX_SERIAL_PORT_NUM))
|
|
|
|
|
return -1;
|
|
|
|
|
if(srdt.ms_dev[devidx].SerialCmdidx == 0)
|
|
|
|
|
//if(srdt.ms_dev[devidx].SerialCmdidx == 0)
|
|
|
|
|
{
|
|
|
|
|
if(srdt.ms_dev[devidx].FirstCmdTimeCnt < 1*1000)
|
|
|
|
|
if(get_msec()-srdt.ms_dev[devidx].FirstCmdTimeCnt < 3*1000)
|
|
|
|
|
{
|
|
|
|
|
//srdt.ms_dev[devidx].FirstCmdTimeCnt++;
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
if(SLANT_PROTOCOL == devparam[devidx].ProtocolIdx)
|
|
|
|
|
MakeShxyProtocolPollCommand(devidx, 0x06);
|
|
|
|
|
else if(WEATHER_PROTOCOL== devparam[devidx].ProtocolIdx)
|
|
|
|
|
//if(SLANT_PROTOCOL == devparam[devidx].ProtocolIdx)
|
|
|
|
|
// MakeShxyProtocolPollCommand(devidx, 0x06);
|
|
|
|
|
//else if(WEATHER_PROTOCOL== devparam[devidx].ProtocolIdx)
|
|
|
|
|
MakeShxyProtocolPollCommand(devidx, 0x09);
|
|
|
|
|
else
|
|
|
|
|
MakeShxyProtocolPollCommand(devidx, 0x08);
|
|
|
|
|
//else
|
|
|
|
|
//MakeShxyProtocolPollCommand(devidx, 0x08);
|
|
|
|
|
srdt.curdevidx[srdt.ms_dev[devidx].UseSerialidx] = devidx;
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|