|
|
|
@ -739,7 +739,6 @@ void Gm_InitSerialComm_Test()
|
|
|
|
|
{
|
|
|
|
|
int i, j;
|
|
|
|
|
|
|
|
|
|
srdt.sampling = 0;
|
|
|
|
|
srdt.PtzCmdType = Cmd_Cancel; // 云台指令类型
|
|
|
|
|
for(i=0; i<MAX_SERIAL_PORT_NUM; i++)
|
|
|
|
|
{
|
|
|
|
@ -977,7 +976,6 @@ void Gm_InitSerialComm()
|
|
|
|
|
|
|
|
|
|
Gm_InitSerialComm_Test();
|
|
|
|
|
// srdt 配置
|
|
|
|
|
//srdt.sampling = 0;
|
|
|
|
|
//srdt.PtzCmdType = Cmd_Cancel; // 云台指令类型
|
|
|
|
|
//srdt.SendStopPtzCmdTimeCnt=-1; // 发送云台停止指令计数
|
|
|
|
|
//srdt.uRunMode = 0;
|
|
|
|
@ -996,49 +994,51 @@ void Gm_InitSerialComm()
|
|
|
|
|
for(i=0; i<MAX_SERIAL_DEV_NUM; i++)
|
|
|
|
|
{
|
|
|
|
|
memset(szbuf, 0, sizeof(szbuf));
|
|
|
|
|
switch(devparam[i].ProtocolIdx)
|
|
|
|
|
switch (devparam[i].ProtocolIdx)
|
|
|
|
|
{
|
|
|
|
|
case 0:
|
|
|
|
|
sprintf(szbuf, "传感器%d没有接!", i+1);
|
|
|
|
|
sprintf(szbuf, "传感器%d没有接!", i + 1);
|
|
|
|
|
break;
|
|
|
|
|
case WEATHER_PROTOCOL:
|
|
|
|
|
sprintf(szbuf, "传感器%d接的是气象传感器!", i+1);
|
|
|
|
|
sprintf(szbuf, "传感器%d接的是气象传感器!", i + 1);
|
|
|
|
|
break;
|
|
|
|
|
case SERIALCAMERA_PROTOCOL:
|
|
|
|
|
sprintf(szbuf, "传感器%d接的是串口摄像机!", i+1);
|
|
|
|
|
sprintf(szbuf, "传感器%d接的是串口摄像机!", i + 1);
|
|
|
|
|
break;
|
|
|
|
|
case PELCO_P_PROTOCOL:
|
|
|
|
|
sprintf(szbuf, "传感器%d接的是PELCO_P摄像机!", i+1);
|
|
|
|
|
sprintf(szbuf, "传感器%d接的是PELCO_P摄像机!", i + 1);
|
|
|
|
|
break;
|
|
|
|
|
case SLANT_PROTOCOL:
|
|
|
|
|
sprintf(szbuf, "传感器%d接的是直川倾角!", i+1);
|
|
|
|
|
sprintf(szbuf, "传感器%d接的是倾角!", i + 1);
|
|
|
|
|
break;
|
|
|
|
|
case WIND_PROTOCOL:
|
|
|
|
|
sprintf(szbuf, "传感器%d接的是风速风向传感器", i+1);
|
|
|
|
|
sprintf(szbuf, "传感器%d接的是风速风向传感器", i + 1);
|
|
|
|
|
break;
|
|
|
|
|
case RALLY_PROTOCOL:
|
|
|
|
|
sprintf(szbuf, "传感器%d接的是拉力!", i+1);
|
|
|
|
|
sprintf(szbuf, "传感器%d接的是拉力!", i + 1);
|
|
|
|
|
break;
|
|
|
|
|
case PELCO_D_PROTOCOL:
|
|
|
|
|
sprintf(szbuf, "传感器%d接的是PELCO_D摄像机!", i+1);
|
|
|
|
|
sprintf(szbuf, "传感器%d接的是PELCO_D摄像机!", i + 1);
|
|
|
|
|
break;
|
|
|
|
|
case RESERVE5_PROTOCOL:
|
|
|
|
|
sprintf(szbuf, "传感器%d接的是加密芯片", i+1);
|
|
|
|
|
sprintf(szbuf, "传感器%d接的是加密芯片", i + 1);
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
sprintf(szbuf, "传感器%d没有接!", i+1);
|
|
|
|
|
sprintf(szbuf, "传感器%d没有接!", i + 1);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
LOGI("%s", szbuf);
|
|
|
|
|
//LOGI("%s", szbuf);
|
|
|
|
|
|
|
|
|
|
sprintf(szbuf, "地址%d!;", devparam[i].devaddr);
|
|
|
|
|
LOGI("%s", szbuf);
|
|
|
|
|
if(0 == devparam[i].IsNoInsta)
|
|
|
|
|
sprintf(szbuf, "%s 地址%d!;", szbuf, devparam[i].devaddr);
|
|
|
|
|
//LOGI("%s", szbuf);
|
|
|
|
|
if (0 == devparam[i].IsNoInsta)
|
|
|
|
|
sprintf(szbuf, "没有启用!;");
|
|
|
|
|
else
|
|
|
|
|
sprintf(szbuf, "已启用!;");
|
|
|
|
|
{
|
|
|
|
|
sprintf(szbuf, "%s 已启用!;", szbuf);
|
|
|
|
|
LOGI("%s", szbuf);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
#if 0
|
|
|
|
|
//u_char UseSerialidx; // 使用的串口序号
|
|
|
|
@ -1104,19 +1104,23 @@ void FindDevUseSerialCommNo()
|
|
|
|
|
|
|
|
|
|
void GM_StartSerialComm()
|
|
|
|
|
{
|
|
|
|
|
int i, j;
|
|
|
|
|
int i, j, commid;
|
|
|
|
|
char szbuf[64];
|
|
|
|
|
long polltime=0;
|
|
|
|
|
|
|
|
|
|
// 测试使用初始化配置
|
|
|
|
|
Gm_InitSerialComm();
|
|
|
|
|
//DebugStringPrintf(szbuf, strlen(szbuf), 1);
|
|
|
|
|
memset((void*)srdt.curdevidx, 0, sizeof(srdt.curdevidx));
|
|
|
|
|
// 此处不能对轮询设备标识清零,否则如果先起摄像机,就会导致poll乱掉
|
|
|
|
|
//memset((void*)srdt.curdevidx, 0, sizeof(srdt.curdevidx));
|
|
|
|
|
//Gm_OpenSerialPower(); /* 不在这使用*/
|
|
|
|
|
srdt.sampling[0] = 1;
|
|
|
|
|
FindDevUseSerialCommNo();
|
|
|
|
|
//Gm_InitSensorsIsUse();
|
|
|
|
|
// 初始化串口使用状态
|
|
|
|
|
for(i=0; i<MAX_SERIAL_PORT_NUM; i++)
|
|
|
|
|
// 初始化串口使用状态(需要考虑不同时间启用了摄像机使用)
|
|
|
|
|
if(0 == srdt.sampling[1])
|
|
|
|
|
{
|
|
|
|
|
for (i = 0; i < MAX_SERIAL_PORT_NUM; i++)
|
|
|
|
|
{
|
|
|
|
|
serialport[i].m_iRevStatus = 0;
|
|
|
|
|
serialport[i].m_iRecvLen = 0;
|
|
|
|
@ -1124,27 +1128,55 @@ void GM_StartSerialComm()
|
|
|
|
|
serialport[i].fd = -1;
|
|
|
|
|
ClearCmdAllFlag(i);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
for (i = 0; i < MAX_SERIAL_PORT_NUM; i++)
|
|
|
|
|
{
|
|
|
|
|
for(j=0; j<MAX_SERIAL_DEV_NUM; j++)
|
|
|
|
|
{
|
|
|
|
|
if(((PELCO_D_PROTOCOL == devparam[i].ProtocolIdx) ||(PELCO_P_PROTOCOL == devparam[i].ProtocolIdx)\
|
|
|
|
|
||(SERIALCAMERA_PROTOCOL == devparam[i].ProtocolIdx)) &&(1 == devparam[i].IsNoInsta))
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
if(j < MAX_SERIAL_DEV_NUM)
|
|
|
|
|
continue;
|
|
|
|
|
serialport[i].m_iRevStatus = 0;
|
|
|
|
|
serialport[i].m_iRecvLen = 0;
|
|
|
|
|
serialport[i].m_iNeedRevLength = 0;
|
|
|
|
|
serialport[i].fd = -1;
|
|
|
|
|
ClearCmdAllFlag(i);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
for(i=0; i<MAX_SERIAL_DEV_NUM; i++)
|
|
|
|
|
{
|
|
|
|
|
srdt.ms_dev[i].FirstCmdTimeCnt = get_msec();
|
|
|
|
|
if(0 == devparam[i].IsNoInsta)
|
|
|
|
|
{
|
|
|
|
|
srdt.ms_dev[i].IsNeedSerial = 0;
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
memset(szbuf, 0, sizeof(szbuf));
|
|
|
|
|
switch(devparam[i].ProtocolIdx)
|
|
|
|
|
{
|
|
|
|
|
case WEATHER_PROTOCOL: // 气象
|
|
|
|
|
sprintf(szbuf, "气象");
|
|
|
|
|
srdt.ms_dev[i].IsNeedSerial = 1;
|
|
|
|
|
srdt.ms_dev[i].FirstCmdTimeCnt = get_msec();
|
|
|
|
|
break;
|
|
|
|
|
case RALLY_PROTOCOL: /* 拉力*/
|
|
|
|
|
sprintf(szbuf, "拉力");
|
|
|
|
|
srdt.ms_dev[i].IsNeedSerial = 1;
|
|
|
|
|
srdt.ms_dev[i].FirstCmdTimeCnt = get_msec();
|
|
|
|
|
break;
|
|
|
|
|
case WIND_PROTOCOL: /* 风速风向*/
|
|
|
|
|
sprintf(szbuf, "风速风向");
|
|
|
|
|
srdt.ms_dev[i].IsNeedSerial = 1;
|
|
|
|
|
srdt.ms_dev[i].FirstCmdTimeCnt = get_msec();
|
|
|
|
|
break;
|
|
|
|
|
case SLANT_PROTOCOL: /* 倾角*/
|
|
|
|
|
sprintf(szbuf, "倾角");
|
|
|
|
|
srdt.ms_dev[i].IsNeedSerial = 1;
|
|
|
|
|
srdt.ms_dev[i].FirstCmdTimeCnt = get_msec();
|
|
|
|
|
break;
|
|
|
|
|
case PELCO_D_PROTOCOL: /* 摄像机协议*/
|
|
|
|
|
case PELCO_P_PROTOCOL: /* 摄像机协议*/
|
|
|
|
@ -1156,12 +1188,6 @@ void GM_StartSerialComm()
|
|
|
|
|
sprintf(szbuf, "无效传感器");
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
LOGI("装置%d, IsNoInsta=%d, 类型:%s", i+1, devparam[i].IsNoInsta, szbuf);
|
|
|
|
|
if(0 == devparam[i].IsNoInsta)
|
|
|
|
|
{
|
|
|
|
|
srdt.ms_dev[i].IsNeedSerial = 0;
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
// 测试查询传感器电源状态
|
|
|
|
|
#if 0
|
|
|
|
|
LOGE("12V state=%d", getInt(CMD_SET_12V_EN_STATE));
|
|
|
|
@ -1188,6 +1214,7 @@ void GM_StartSerialComm()
|
|
|
|
|
// 打开串口通讯
|
|
|
|
|
if(1 == srdt.ms_dev[i].IsNeedSerial)
|
|
|
|
|
{
|
|
|
|
|
LOGI("装置%d, IsNoInsta=%d, 类型:%s", i+1, devparam[i].IsNoInsta, szbuf);
|
|
|
|
|
Gm_OpenSensorsPower(i);
|
|
|
|
|
Gm_OpenSerialPort(i);
|
|
|
|
|
}
|
|
|
|
@ -1425,7 +1452,7 @@ void GM_IsCloseSensors(void)
|
|
|
|
|
if(srdt.ms_dev[i].FirstCmdTimeCnt > 6*1000/TIMER_CNT)
|
|
|
|
|
{
|
|
|
|
|
srdt.ms_dev[i].IsNeedSerial = 0;
|
|
|
|
|
srdt.sampling &= 0xFB;
|
|
|
|
|
//srdt.sampling &= 0xFB;
|
|
|
|
|
memset(buf, 0, sizeof(buf));
|
|
|
|
|
LOGI("通道%d摄像机使用完毕!可以关闭摄像机电源!", devparam[i].CameraChannel);
|
|
|
|
|
//netportparam.SerialCameraPowerCtrl[srdt.ms_dev[i].CameraChannel-1] = 0;
|
|
|
|
@ -1797,7 +1824,7 @@ void CameraPhotoPortDataProcess( int port)
|
|
|
|
|
if(0 == srdt.historyimagenum[devparam[port].CameraChannel-1])
|
|
|
|
|
{
|
|
|
|
|
//netportparam.SerialCameraPowerCtrl[devparam[port].CameraChannel-1] = 0;
|
|
|
|
|
srdt.sampling &= 0xFB;
|
|
|
|
|
//srdt.sampling &= 0xFB;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
@ -1805,7 +1832,7 @@ void CameraPhotoPortDataProcess( int port)
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
srdt.sampling &= 0xFB;
|
|
|
|
|
//srdt.sampling &= 0xFB;
|
|
|
|
|
//netportparam.SerialCameraPowerCtrl[pPortParam->CameraChannel-1] = 0;
|
|
|
|
|
}
|
|
|
|
|
pPortParam->SerialCmdidx = -1;
|
|
|
|
@ -2172,7 +2199,7 @@ int Gm_CtrlPtzCmd(u_char channel, DWORD ptzcmd)
|
|
|
|
|
// 2.打开串口通讯
|
|
|
|
|
Gm_OpenSerialPort(i);
|
|
|
|
|
//}
|
|
|
|
|
srdt.sampling |= 2;
|
|
|
|
|
//srdt.sampling |= 2;
|
|
|
|
|
srdt.SendStopPtzCmdTimeCnt = -1;
|
|
|
|
|
//return 1;
|
|
|
|
|
return Gm_Camera_Timer();
|
|
|
|
@ -2241,7 +2268,7 @@ int Gm_Camera_Timer(void)
|
|
|
|
|
if((SET_PRESETNO == (srdt.PtzCmdType & 0xFFFF0000))
|
|
|
|
|
|| (MOVE_TO_PRESETNO == (srdt.PtzCmdType & 0xFFFF0000)))
|
|
|
|
|
{
|
|
|
|
|
srdt.sampling &= 0xFD;
|
|
|
|
|
//srdt.sampling &= 0xFD;
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
srdt.PtzCmdType = Cmd_Cancel;
|
|
|
|
@ -2257,7 +2284,7 @@ int Gm_Camera_Timer(void)
|
|
|
|
|
else
|
|
|
|
|
Gm_SendPelco_pCommand(srdt.PtzCmdType);
|
|
|
|
|
srdt.SendStopPtzCmdTimeCnt = -1;
|
|
|
|
|
srdt.sampling &= 0xFD;
|
|
|
|
|
//srdt.sampling &= 0xFD;
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|