增加单独接入启动摄像机流程

serial
huyizhong 1 year ago
parent 65473d7a6e
commit b5e41a652c

@ -739,7 +739,6 @@ void Gm_InitSerialComm_Test()
{ {
int i, j; int i, j;
srdt.sampling = 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++)
{ {
@ -770,7 +769,7 @@ void Gm_InitSerialComm_Test()
devparam[0].IsNoInsta = 1; devparam[0].IsNoInsta = 1;
//devparam[0].PowerPort = 2; //devparam[0].PowerPort = 2;
//devparam[0].devaddr = 4; //devparam[0].devaddr = 4;
devparam[0].devaddr = 2; devparam[0].devaddr = 10;
devparam[1].ProtocolIdx = WEATHER_PROTOCOL; devparam[1].ProtocolIdx = WEATHER_PROTOCOL;
devparam[1].baudrate = B9600; devparam[1].baudrate = B9600;
@ -781,7 +780,7 @@ void Gm_InitSerialComm_Test()
devparam[1].IsNoInsta = 1; devparam[1].IsNoInsta = 1;
//devparam[1].PowerPort = 14; //devparam[1].PowerPort = 14;
//devparam[1].devaddr = 1; //devparam[1].devaddr = 1;
devparam[1].devaddr = 13; devparam[1].devaddr = 2;
devparam[2].ProtocolIdx = RALLY_PROTOCOL; devparam[2].ProtocolIdx = RALLY_PROTOCOL;
devparam[2].baudrate = B9600; devparam[2].baudrate = B9600;
@ -977,7 +976,6 @@ void Gm_InitSerialComm()
Gm_InitSerialComm_Test(); Gm_InitSerialComm_Test();
// srdt 配置 // srdt 配置
//srdt.sampling = 0;
//srdt.PtzCmdType = Cmd_Cancel; // 云台指令类型 //srdt.PtzCmdType = Cmd_Cancel; // 云台指令类型
//srdt.SendStopPtzCmdTimeCnt=-1; // 发送云台停止指令计数 //srdt.SendStopPtzCmdTimeCnt=-1; // 发送云台停止指令计数
//srdt.uRunMode = 0; //srdt.uRunMode = 0;
@ -996,48 +994,50 @@ 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 (devparam[i].ProtocolIdx)
{ {
case 0: case 0:
sprintf(szbuf, "传感器%d没有接!", i+1); sprintf(szbuf, "传感器%d没有接!", i + 1);
break; break;
case WEATHER_PROTOCOL: case WEATHER_PROTOCOL:
sprintf(szbuf, "传感器%d接的是气象传感器!", i+1); sprintf(szbuf, "传感器%d接的是气象传感器!", i + 1);
break; break;
case SERIALCAMERA_PROTOCOL: case SERIALCAMERA_PROTOCOL:
sprintf(szbuf, "传感器%d接的是串口摄像机!", i+1); sprintf(szbuf, "传感器%d接的是串口摄像机!", i + 1);
break; break;
case PELCO_P_PROTOCOL: case PELCO_P_PROTOCOL:
sprintf(szbuf, "传感器%d接的是PELCO_P摄像机!", i+1); sprintf(szbuf, "传感器%d接的是PELCO_P摄像机!", i + 1);
break; break;
case SLANT_PROTOCOL: case SLANT_PROTOCOL:
sprintf(szbuf, "传感器%d接的是直川倾角!", i+1); sprintf(szbuf, "传感器%d接的是倾角!", i + 1);
break; break;
case WIND_PROTOCOL: case WIND_PROTOCOL:
sprintf(szbuf, "传感器%d接的是风速风向传感器", i+1); sprintf(szbuf, "传感器%d接的是风速风向传感器", i + 1);
break; break;
case RALLY_PROTOCOL: case RALLY_PROTOCOL:
sprintf(szbuf, "传感器%d接的是拉力!", i+1); sprintf(szbuf, "传感器%d接的是拉力!", i + 1);
break; break;
case PELCO_D_PROTOCOL: case PELCO_D_PROTOCOL:
sprintf(szbuf, "传感器%d接的是PELCO_D摄像机!", i+1); sprintf(szbuf, "传感器%d接的是PELCO_D摄像机!", i + 1);
break; break;
case RESERVE5_PROTOCOL: case RESERVE5_PROTOCOL:
sprintf(szbuf, "传感器%d接的是加密芯片", i+1); sprintf(szbuf, "传感器%d接的是加密芯片", i + 1);
break; break;
default: default:
sprintf(szbuf, "传感器%d没有接!", i+1); sprintf(szbuf, "传感器%d没有接!", i + 1);
break; break;
} }
LOGI("%s", szbuf); //LOGI("%s", szbuf);
sprintf(szbuf, "地址%d!", devparam[i].devaddr); sprintf(szbuf, "%s 地址%d!", szbuf, devparam[i].devaddr);
LOGI("%s", szbuf); //LOGI("%s", szbuf);
if(0 == devparam[i].IsNoInsta) if (0 == devparam[i].IsNoInsta)
sprintf(szbuf, "没有启用!"); sprintf(szbuf, "没有启用!");
else else
sprintf(szbuf, "已启用!"); {
LOGI("%s", szbuf); sprintf(szbuf, "%s 已启用!", szbuf);
LOGI("%s", szbuf);
}
} }
#endif #endif
#if 0 #if 0
@ -1104,47 +1104,79 @@ void FindDevUseSerialCommNo()
void GM_StartSerialComm() void GM_StartSerialComm()
{ {
int i, j; int i, j, commid;
char szbuf[64]; char szbuf[64];
long polltime=0; long polltime=0;
// 测试使用初始化配置 // 测试使用初始化配置
Gm_InitSerialComm(); Gm_InitSerialComm();
//DebugStringPrintf(szbuf, strlen(szbuf), 1); //DebugStringPrintf(szbuf, strlen(szbuf), 1);
memset((void*)srdt.curdevidx, 0, sizeof(srdt.curdevidx)); // 此处不能对轮询设备标识清零否则如果先起摄像机就会导致poll乱掉
//memset((void*)srdt.curdevidx, 0, sizeof(srdt.curdevidx));
//Gm_OpenSerialPower(); /* 不在这使用*/ //Gm_OpenSerialPower(); /* 不在这使用*/
srdt.sampling[0] = 1;
FindDevUseSerialCommNo(); FindDevUseSerialCommNo();
//Gm_InitSensorsIsUse(); //Gm_InitSensorsIsUse();
// 初始化串口使用状态 // 初始化串口使用状态(需要考虑不同时间启用了摄像机使用)
for(i=0; i<MAX_SERIAL_PORT_NUM; i++) if(0 == srdt.sampling[1])
{ {
serialport[i].m_iRevStatus = 0; for (i = 0; i < MAX_SERIAL_PORT_NUM; i++)
serialport[i].m_iRecvLen = 0; {
serialport[i].m_iNeedRevLength = 0; serialport[i].m_iRevStatus = 0;
serialport[i].fd = -1; serialport[i].m_iRecvLen = 0;
ClearCmdAllFlag(i); serialport[i].m_iNeedRevLength = 0;
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++) 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)); memset(szbuf, 0, sizeof(szbuf));
switch(devparam[i].ProtocolIdx) switch(devparam[i].ProtocolIdx)
{ {
case WEATHER_PROTOCOL: // 气象 case WEATHER_PROTOCOL: // 气象
sprintf(szbuf, "气象"); sprintf(szbuf, "气象");
srdt.ms_dev[i].IsNeedSerial = 1; srdt.ms_dev[i].IsNeedSerial = 1;
srdt.ms_dev[i].FirstCmdTimeCnt = get_msec();
break; break;
case RALLY_PROTOCOL: /* 拉力*/ case RALLY_PROTOCOL: /* 拉力*/
sprintf(szbuf, "拉力"); sprintf(szbuf, "拉力");
srdt.ms_dev[i].IsNeedSerial = 1; srdt.ms_dev[i].IsNeedSerial = 1;
srdt.ms_dev[i].FirstCmdTimeCnt = get_msec();
break; break;
case WIND_PROTOCOL: /* 风速风向*/ case WIND_PROTOCOL: /* 风速风向*/
sprintf(szbuf, "风速风向"); sprintf(szbuf, "风速风向");
srdt.ms_dev[i].IsNeedSerial = 1; srdt.ms_dev[i].IsNeedSerial = 1;
srdt.ms_dev[i].FirstCmdTimeCnt = get_msec();
break; break;
case SLANT_PROTOCOL: /* 倾角*/ case SLANT_PROTOCOL: /* 倾角*/
sprintf(szbuf, "倾角"); sprintf(szbuf, "倾角");
srdt.ms_dev[i].IsNeedSerial = 1; srdt.ms_dev[i].IsNeedSerial = 1;
srdt.ms_dev[i].FirstCmdTimeCnt = get_msec();
break; break;
case PELCO_D_PROTOCOL: /* 摄像机协议*/ case PELCO_D_PROTOCOL: /* 摄像机协议*/
case PELCO_P_PROTOCOL: /* 摄像机协议*/ case PELCO_P_PROTOCOL: /* 摄像机协议*/
@ -1156,12 +1188,6 @@ void GM_StartSerialComm()
sprintf(szbuf, "无效传感器"); sprintf(szbuf, "无效传感器");
break; 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 #if 0
LOGE("12V state=%d", getInt(CMD_SET_12V_EN_STATE)); LOGE("12V state=%d", getInt(CMD_SET_12V_EN_STATE));
@ -1188,6 +1214,7 @@ void GM_StartSerialComm()
// 打开串口通讯 // 打开串口通讯
if(1 == srdt.ms_dev[i].IsNeedSerial) if(1 == srdt.ms_dev[i].IsNeedSerial)
{ {
LOGI("装置%d, IsNoInsta=%d, 类型:%s", i+1, devparam[i].IsNoInsta, szbuf);
Gm_OpenSensorsPower(i); Gm_OpenSensorsPower(i);
Gm_OpenSerialPort(i); Gm_OpenSerialPort(i);
} }
@ -1201,13 +1228,15 @@ void GM_StartSerialComm()
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_SerialTimer() < 0) if(GM_SerialTimer() < 0)
{ {
//LOGE("12V state=%d", getInt(CMD_SET_12V_EN_STATE)); //LOGE("12V state=%d", getInt(CMD_SET_12V_EN_STATE));
LOGV("退出采样流程!"); LOGV("退出采样流程!");
break; sleep(15);
GM_StartSerialComm();
//break;
} }
} }
return; return;
@ -1223,10 +1252,11 @@ void GM_StartSerialCameraPhoto(BYTE channel, int cmdidx)
srdt.RephotographCnt = 0; srdt.RephotographCnt = 0;
FindDevUseSerialCommNo(); FindDevUseSerialCommNo();
#if 0
//sprintf(szbuf, "sampling=%02X !", srdt.sampling); //sprintf(szbuf, "sampling=%02X !", srdt.sampling);
//DebugStringPrintf(szbuf, strlen(szbuf), 1); //DebugStringPrintf(szbuf, strlen(szbuf), 1);
if(0 == srdt.selfflag) //if(0 == srdt.selfflag)
srdt.selfflag = 1; // srdt.selfflag = 1;
//Gm_OpenSerialPower(); //Gm_OpenSerialPower();
//Gm_OpenSensorsPower(); //Gm_OpenSensorsPower();
//if(0x00 == srdt.sampling) //if(0x00 == srdt.sampling)
@ -1240,6 +1270,7 @@ void GM_StartSerialCameraPhoto(BYTE channel, int cmdidx)
} }
if(0x01 == (srdt.sampling & 0x01)) if(0x01 == (srdt.sampling & 0x01))
flag = 0; flag = 0;
#endif
// 初始化串口使用状态 // 初始化串口使用状态
for(i=0; i<MAX_SERIAL_DEV_NUM; i++) for(i=0; i<MAX_SERIAL_DEV_NUM; i++)
{ {
@ -1291,12 +1322,12 @@ void GM_StartSerialCameraPhoto(BYTE channel, int cmdidx)
break; break;
} }
} }
if(0x01 == flag) //if(0x01 == flag)
{ //{
sprintf(szbuf, "非数据采样期间,摄像机拍照启动串口定时器!"); sprintf(szbuf, "摄像机拍照启动串口定时器!");
LOGI("%s", szbuf); LOGI("%s", szbuf);
//StartTimer(GM_SERIAL_START, TIMER_CNT, GM_SerialTimer); //StartTimer(GM_SERIAL_START, TIMER_CNT, GM_SerialTimer);
} //}
return; return;
} }
#endif #endif
@ -1421,7 +1452,7 @@ void GM_IsCloseSensors(void)
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;
memset(buf, 0, sizeof(buf)); memset(buf, 0, sizeof(buf));
LOGI("通道%d摄像机使用完毕!可以关闭摄像机电源!", devparam[i].CameraChannel); LOGI("通道%d摄像机使用完毕!可以关闭摄像机电源!", devparam[i].CameraChannel);
//netportparam.SerialCameraPowerCtrl[srdt.ms_dev[i].CameraChannel-1] = 0; //netportparam.SerialCameraPowerCtrl[srdt.ms_dev[i].CameraChannel-1] = 0;
@ -1453,9 +1484,8 @@ void GM_AllSerialComRecv(void)
memset(recvbuf, 0, sizeof(recvbuf)); memset(recvbuf, 0, sizeof(recvbuf));
if(serialport[j].fd < 0) if(serialport[j].fd < 0)
continue; continue;
for(;;) //for(;;)
{ recvlen = read(serialport[j].fd, recvbuf, sizeof(recvbuf));/* 在串口读取字符串 */
recvlen = read(serialport[j].fd, recvbuf, sizeof(recvbuf));/* 在串口读取字符串 */
if(recvlen < 1) if(recvlen < 1)
break; break;
@ -1463,7 +1493,7 @@ void GM_AllSerialComRecv(void)
BytestreamLOG(buf, recvbuf, recvlen, 'I'); BytestreamLOG(buf, recvbuf, recvlen, 'I');
SerialDataProcess(srdt.curdevidx[j], recvbuf, recvlen); SerialDataProcess(srdt.curdevidx[j], recvbuf, recvlen);
}
} }
} }
@ -1794,7 +1824,7 @@ void CameraPhotoPortDataProcess( int port)
if(0 == srdt.historyimagenum[devparam[port].CameraChannel-1]) if(0 == srdt.historyimagenum[devparam[port].CameraChannel-1])
{ {
//netportparam.SerialCameraPowerCtrl[devparam[port].CameraChannel-1] = 0; //netportparam.SerialCameraPowerCtrl[devparam[port].CameraChannel-1] = 0;
srdt.sampling &= 0xFB; //srdt.sampling &= 0xFB;
} }
else else
@ -1802,7 +1832,7 @@ void CameraPhotoPortDataProcess( int port)
} }
else else
{ {
srdt.sampling &= 0xFB; //srdt.sampling &= 0xFB;
//netportparam.SerialCameraPowerCtrl[pPortParam->CameraChannel-1] = 0; //netportparam.SerialCameraPowerCtrl[pPortParam->CameraChannel-1] = 0;
} }
pPortParam->SerialCmdidx = -1; pPortParam->SerialCmdidx = -1;
@ -2169,7 +2199,7 @@ int Gm_CtrlPtzCmd(u_char channel, DWORD ptzcmd)
// 2.打开串口通讯 // 2.打开串口通讯
Gm_OpenSerialPort(i); Gm_OpenSerialPort(i);
//} //}
srdt.sampling |= 2; //srdt.sampling |= 2;
srdt.SendStopPtzCmdTimeCnt = -1; srdt.SendStopPtzCmdTimeCnt = -1;
//return 1; //return 1;
return Gm_Camera_Timer(); return Gm_Camera_Timer();
@ -2238,7 +2268,7 @@ int Gm_Camera_Timer(void)
if((SET_PRESETNO == (srdt.PtzCmdType & 0xFFFF0000)) if((SET_PRESETNO == (srdt.PtzCmdType & 0xFFFF0000))
|| (MOVE_TO_PRESETNO == (srdt.PtzCmdType & 0xFFFF0000))) || (MOVE_TO_PRESETNO == (srdt.PtzCmdType & 0xFFFF0000)))
{ {
srdt.sampling &= 0xFD; //srdt.sampling &= 0xFD;
return 1; return 1;
} }
srdt.PtzCmdType = Cmd_Cancel; srdt.PtzCmdType = Cmd_Cancel;
@ -2254,7 +2284,7 @@ int Gm_Camera_Timer(void)
else else
Gm_SendPelco_pCommand(srdt.PtzCmdType); Gm_SendPelco_pCommand(srdt.PtzCmdType);
srdt.SendStopPtzCmdTimeCnt = -1; srdt.SendStopPtzCmdTimeCnt = -1;
srdt.sampling &= 0xFD; //srdt.sampling &= 0xFD;
return 1; return 1;
} }
else else
@ -2425,7 +2455,6 @@ void MakeShxyProtocolPollCommand(int portno, BYTE cmdidx)
//Gm_OMC_UART_DebugHex(buf, i-2, (char*)&sendbuf[2]); //Gm_OMC_UART_DebugHex(buf, i-2, (char*)&sendbuf[2]);
} }
unsigned char CalLpc(unsigned char *msg, int len) unsigned char CalLpc(unsigned char *msg, int len)
{ {
int i; int i;
@ -2439,18 +2468,18 @@ unsigned char CalLpc(unsigned char *msg, int len)
/*************************************************************** /***************************************************************
* * * *
***************************************************************/ ***************************************************************/
void ShxyProtocolRecvData(int commid, u_char *buf, int len)// 规约读数据处理 void ShxyProtocolRecvData(int devno, u_char *buf, int len)// 规约读数据处理
{ {
int i, ictime; int i, ictime;
//WORD crc, check; //WORD crc, check;
//SERIAL_DEV_DEF *pPortParam; //SERIAL_DEV_DEF *pPortParam;
SIO_PARAM_SERIAL_DEF *pPortParam; SIO_PARAM_SERIAL_DEF *pPortParam;
if((commid<0) || (commid > MAX_SERIAL_DEV_NUM)) if((devno<0) || (devno > MAX_SERIAL_DEV_NUM))
{ {
return; return;
} }
pPortParam = &serialport[devparam[commid].commid]; pPortParam = &serialport[devparam[devno].commid];
for(i=0; i<len; i++) for(i=0; i<len; i++)
{ {
@ -2499,7 +2528,7 @@ void ShxyProtocolRecvData(int commid, u_char *buf, int len)// 规约读数据处
if(CheckShxyProtocolLpcError(pPortParam->m_au8RecvBuf, pPortParam->m_iRecvLen) == TRUE) if(CheckShxyProtocolLpcError(pPortParam->m_au8RecvBuf, pPortParam->m_iRecvLen) == TRUE)
{ {
ShxyProtocolDataProcess(commid); ShxyProtocolDataProcess(devno);
pPortParam->m_iRevStatus = 0; pPortParam->m_iRevStatus = 0;
pPortParam->RevCmdFlag = 1; pPortParam->RevCmdFlag = 1;
} }
@ -2563,7 +2592,7 @@ int CheckShxyProtocolLpcError( u_char* msg, int len )
/********************************************************************************* /*********************************************************************************
**********************************************************************************/ **********************************************************************************/
void ShxyProtocolDataProcess( int commid) void ShxyProtocolDataProcess( int devno)
{ {
float fvalue, fcorvalue, *fvalua, frnb/*, fwind*/; float fvalue, fcorvalue, *fvalua, frnb/*, fwind*/;
WORD uDevAddr; WORD uDevAddr;
@ -2573,13 +2602,13 @@ void ShxyProtocolDataProcess( int commid)
SIO_PARAM_SERIAL_DEF *curserial; SIO_PARAM_SERIAL_DEF *curserial;
char szbuf[64]; char szbuf[64];
pPortParam = &srdt.ms_dev[commid]; pPortParam = &srdt.ms_dev[devno];
curserial = &serialport[devparam[commid].commid]; curserial = &serialport[devparam[devno].commid];
//取出装置地址,开始处理地址+++ //取出装置地址,开始处理地址+++
if(0x02 == curserial->m_au8RecvBuf[5]) if(0x02 == curserial->m_au8RecvBuf[5])
{ {
devparam[commid].devaddr = curserial->m_au8RecvBuf[4]; devparam[devno].devaddr = curserial->m_au8RecvBuf[4];
return; return;
} }
@ -2613,7 +2642,7 @@ void ShxyProtocolDataProcess( int commid)
slantpntmsg[aipnt][0].AiState = 1; slantpntmsg[aipnt][0].AiState = 1;
//if ((gDisSunRain & 0x20) == 0x20) //if ((gDisSunRain & 0x20) == 0x20)
{ {
sprintf(szbuf, "倾角ID:%d slantangle X=%0.3f ", devparam[commid].devaddr, fvalue); sprintf(szbuf, "倾角ID:%d slantangle X=%0.3f ", devparam[devno].devaddr, fvalue);
LOGV("%s", szbuf); LOGV("%s", szbuf);
} }
//XslantSec[aipnt][srdt.SectimesamplingCnt[0]] = (short)slantpntmsg[aipnt][0].EuValue; //XslantSec[aipnt][srdt.SectimesamplingCnt[0]] = (short)slantpntmsg[aipnt][0].EuValue;
@ -2676,10 +2705,15 @@ void ShxyProtocolDataProcess( int commid)
if((fvalue < -40) ||(fvalue > 85)) if((fvalue < -40) ||(fvalue > 85))
{ {
frnb = (GeneratingRandomNumber()%101-50)/1000.0; frnb = (GeneratingRandomNumber()%101-50)/1000.0;
pPortParam->aiValue[0].EuValue *= (1+frnb);
weatherpntmsg[0].EuValue *= (1+frnb); weatherpntmsg[0].EuValue *= (1+frnb);
} }
else else
{
pPortParam->aiValue[0].EuValue = fvalue*pPortParam->aiValue[0].AiParam.fFactor + pPortParam->aiValue[0].AiParam.EuValueDelta;
weatherpntmsg[0].EuValue = fvalue*weatherpntmsg[0].AiParam.fFactor + weatherpntmsg[0].AiParam.EuValueDelta; weatherpntmsg[0].EuValue = fvalue*weatherpntmsg[0].AiParam.fFactor + weatherpntmsg[0].AiParam.EuValueDelta;
}
pPortParam->aiValue[0].AiState = 1;
weatherpntmsg[0].AiState = 1; weatherpntmsg[0].AiState = 1;
//g_SelfTest.SensorsFault |= (0x01); //g_SelfTest.SensorsFault |= (0x01);
//if ((gDisSunRain & 0x80) == 0x80) //if ((gDisSunRain & 0x80) == 0x80)
@ -2692,10 +2726,15 @@ void ShxyProtocolDataProcess( int commid)
if((fvalue < 550) ||(fvalue > 1060)) if((fvalue < 550) ||(fvalue > 1060))
{ {
frnb = (GeneratingRandomNumber()%41-20)/10000.0; frnb = (GeneratingRandomNumber()%41-20)/10000.0;
pPortParam->aiValue[5].EuValue *= (1+frnb);
weatherpntmsg[5].EuValue *= (1+frnb); weatherpntmsg[5].EuValue *= (1+frnb);
} }
else else
{
pPortParam->aiValue[5].EuValue = fvalue*pPortParam->aiValue[5].AiParam.fFactor + pPortParam->aiValue[5].AiParam.EuValueDelta;
weatherpntmsg[5].EuValue = fvalue*weatherpntmsg[5].AiParam.fFactor + weatherpntmsg[5].AiParam.EuValueDelta; weatherpntmsg[5].EuValue = fvalue*weatherpntmsg[5].AiParam.fFactor + weatherpntmsg[5].AiParam.EuValueDelta;
}
pPortParam->aiValue[5].AiState = 1;
weatherpntmsg[5].AiState = 1; weatherpntmsg[5].AiState = 1;
//g_SelfTest.SensorsFault |= (0x10); //g_SelfTest.SensorsFault |= (0x10);
//if ((gDisSunRain & 0x80) == 0x80) //if ((gDisSunRain & 0x80) == 0x80)
@ -2708,10 +2747,15 @@ void ShxyProtocolDataProcess( int commid)
if((fvalue < 0) ||(fvalue > 100)) if((fvalue < 0) ||(fvalue > 100))
{ {
frnb = (GeneratingRandomNumber()%41-20)/1000.0; frnb = (GeneratingRandomNumber()%41-20)/1000.0;
pPortParam->aiValue[1].EuValue *= (1+frnb);
weatherpntmsg[1].EuValue *= (1+frnb); weatherpntmsg[1].EuValue *= (1+frnb);
} }
else else
{
pPortParam->aiValue[1].EuValue = fvalue*pPortParam->aiValue[1].AiParam.fFactor + pPortParam->aiValue[1].AiParam.EuValueDelta;
weatherpntmsg[1].EuValue = fvalue*weatherpntmsg[1].AiParam.fFactor + weatherpntmsg[1].AiParam.EuValueDelta; weatherpntmsg[1].EuValue = fvalue*weatherpntmsg[1].AiParam.fFactor + weatherpntmsg[1].AiParam.EuValueDelta;
}
pPortParam->aiValue[1].AiState = 1;
weatherpntmsg[1].AiState = 1; weatherpntmsg[1].AiState = 1;
//g_SelfTest.SensorsFault |= (0x02); //g_SelfTest.SensorsFault |= (0x02);
//if ((gDisSunRain & 0x80) == 0x80) //if ((gDisSunRain & 0x80) == 0x80)
@ -2728,10 +2772,15 @@ void ShxyProtocolDataProcess( int commid)
if((fvalue/1000 < 0) ||(fvalue/1000 > 80)) if((fvalue/1000 < 0) ||(fvalue/1000 > 80))
{ {
frnb = (GeneratingRandomNumber()%41-20)/1000.0; frnb = (GeneratingRandomNumber()%41-20)/1000.0;
pPortParam->aiValue[2].EuValue *= (1+frnb);
weatherpntmsg[2].EuValue *= (1+frnb); weatherpntmsg[2].EuValue *= (1+frnb);
} }
else else
{
pPortParam->aiValue[2].EuValue = fvalue*pPortParam->aiValue[2].AiParam.fFactor + pPortParam->aiValue[2].AiParam.EuValueDelta;
weatherpntmsg[2].EuValue = fvalue*weatherpntmsg[2].AiParam.fFactor + weatherpntmsg[2].AiParam.EuValueDelta; weatherpntmsg[2].EuValue = fvalue*weatherpntmsg[2].AiParam.fFactor + weatherpntmsg[2].AiParam.EuValueDelta;
}
pPortParam->aiValue[2].AiState = 1;
weatherpntmsg[2].AiState = 1; weatherpntmsg[2].AiState = 1;
//g_SelfTest.SensorsFault |= (0x04); //g_SelfTest.SensorsFault |= (0x04);
//if ((gDisSunRain & 0x10) == 0x10) //if ((gDisSunRain & 0x10) == 0x10)
@ -2748,10 +2797,15 @@ void ShxyProtocolDataProcess( int commid)
if((fvalue/1000 < 0) ||(fvalue/1000 > 359.99)) if((fvalue/1000 < 0) ||(fvalue/1000 > 359.99))
{ {
frnb = (GeneratingRandomNumber()%41-20)/1000.0; frnb = (GeneratingRandomNumber()%41-20)/1000.0;
pPortParam->aiValue[3].EuValue *= (1+frnb);
weatherpntmsg[3].EuValue *= (1+frnb); weatherpntmsg[3].EuValue *= (1+frnb);
} }
else else
{
pPortParam->aiValue[3].EuValue = fvalue*pPortParam->aiValue[3].AiParam.fFactor + pPortParam->aiValue[3].AiParam.EuValueDelta;
weatherpntmsg[3].EuValue = fvalue*weatherpntmsg[3].AiParam.fFactor + weatherpntmsg[3].AiParam.EuValueDelta; weatherpntmsg[3].EuValue = fvalue*weatherpntmsg[3].AiParam.fFactor + weatherpntmsg[3].AiParam.EuValueDelta;
}
pPortParam->aiValue[3].AiState = 1;
weatherpntmsg[3].AiState = 1; weatherpntmsg[3].AiState = 1;
//g_SelfTest.SensorsFault |= (0x08); //g_SelfTest.SensorsFault |= (0x08);
//if ((gDisSunRain & 0x10) == 0x10) //if ((gDisSunRain & 0x10) == 0x10)
@ -2777,56 +2831,58 @@ void ShxyProtocolDataProcess( int commid)
else else
{ {
#endif #endif
pPortParam->recvdatacnt++; pPortParam->recvdatacnt++;
if(pPortParam->recvdatacnt < 2) if(pPortParam->recvdatacnt < 2)
break; break;
//g_SelfTest.SensorsFault |= (0x040<<aipnt);
//if(fvalue/1000.0 < rallypntmsg[aipnt][1].AiParam.EuValueDelta) pPortParam->aiValue[0].EuValue = fvalue*pPortParam->aiValue[0].AiParam.fFactor\
// rallypntmsg[aipnt][0].EuValue = 0; +pPortParam->aiValue[0].AiParam.EuValueDelta;
//else //rallypntmsg[aipnt][0].EuValue = fvalue*rallypntmsg[aipnt][0].AiParam.fFactor\
rallypntmsg[aipnt][0].EuValue = fvalue*rallypntmsg[aipnt][0].AiParam.fFactor\ // +rallypntmsg[aipnt][0].AiParam.EuValueDelta;
+rallypntmsg[aipnt][0].AiParam.EuValueDelta; pPortParam->aiValue[0].AiState = 1;
rallypntmsg[aipnt][0].AiState = 1; //rallypntmsg[aipnt][0].AiState = 1;
//if ((gDisSunRain & 0x10) == 0x10) sprintf(szbuf, "地址%d拉力:%0.3fKg ", devparam[devno].devaddr, fvalue);
{ LOGV("%s", szbuf);
sprintf(szbuf, "地址%d拉力:%0.3fKg ", devparam[commid].devaddr, fvalue);
LOGV("%s", szbuf);
}
// yizhonghu 20110629
//rallyd[aipnt][srdt.SectimesamplingCnt[2]] = (short)slantpntmsg[aipnt][0].EuValue;
srdt.SectimesamplingCnt[2] += 1;
//} //}
break; break;
case 9: /*倾角传感器X轴倾角*/ case 9: /*倾角传感器X轴倾角*/
if((fvalue < -59) ||(fvalue > 59)) if((fvalue < -59) ||(fvalue > 59))
{ {
frnb = (GeneratingRandomNumber()%101-50)/1000.0; frnb = (GeneratingRandomNumber()%101-50)/1000.0;
slantpntmsg[aipnt][0].EuValue *= (1+frnb); pPortParam->aiValue[0].EuValue *= (1+frnb);
//slantpntmsg[aipnt][0].EuValue *= (1+frnb);
} }
else else
slantpntmsg[aipnt][0].EuValue = fvalue*slantpntmsg[aipnt][0].AiParam.fFactor\
+slantpntmsg[aipnt][0].AiParam.EuValueDelta;
slantpntmsg[aipnt][0].AiState = 1;
//if ((gDisSunRain & 0x20) == 0x20)
{ {
sprintf(szbuf, "倾角ID:%d slantangle X=%0.3f ", devparam[commid].devaddr, fvalue); pPortParam->aiValue[0].EuValue = fvalue*pPortParam->aiValue[0].AiParam.fFactor\
LOGV("%s", szbuf); +pPortParam->aiValue[0].AiParam.EuValueDelta;
//slantpntmsg[aipnt][0].EuValue = fvalue*slantpntmsg[aipnt][0].AiParam.fFactor\
//+slantpntmsg[aipnt][0].AiParam.EuValueDelta;
} }
pPortParam->aiValue[0].AiState = 1;
//slantpntmsg[aipnt][0].AiState = 1;
sprintf(szbuf, "倾角ID:%d slantangle X=%0.3f ", devparam[devno].devaddr, fvalue);
LOGV("%s", szbuf);
break; break;
case 10: /*倾角传感器Y轴倾角*/ case 10: /*倾角传感器Y轴倾角*/
{
sprintf(szbuf, "Y =%0.3f ", fvalue); sprintf(szbuf, "Y =%0.3f ", fvalue);
LOGV("%s", szbuf); LOGV("%s", szbuf);
}
if((fvalue < -59) ||(fvalue > 59)) if((fvalue < -59) ||(fvalue > 59))
{ {
frnb = (GeneratingRandomNumber()%101-50)/1000.0; frnb = (GeneratingRandomNumber()%101-50)/1000.0;
pPortParam->aiValue[1].EuValue *= (1+frnb);
slantpntmsg[aipnt][1].EuValue *= (1+frnb); slantpntmsg[aipnt][1].EuValue *= (1+frnb);
} }
else else
slantpntmsg[aipnt][1].EuValue = fvalue*slantpntmsg[aipnt][1].AiParam.fFactor\ {
+slantpntmsg[aipnt][1].AiParam.EuValueDelta; pPortParam->aiValue[1].EuValue = fvalue*pPortParam->aiValue[1].AiParam.fFactor\
slantpntmsg[aipnt][1].AiState = 1; +pPortParam->aiValue[1].AiParam.EuValueDelta;
//slantpntmsg[aipnt][1].EuValue = fvalue*slantpntmsg[aipnt][1].AiParam.fFactor\
// +slantpntmsg[aipnt][1].AiParam.EuValueDelta;
}
pPortParam->aiValue[1].AiState = 1;
//slantpntmsg[aipnt][1].AiState = 1;
break; break;
#if 0 #if 0
case 11: /*测温球导线温度*/ case 11: /*测温球导线温度*/

@ -35,7 +35,8 @@ typedef unsigned char BYTE;
#define IOT_PARAM_READ 0xAF #define IOT_PARAM_READ 0xAF
#define MAX_SERIAL_DEV_NUM 25 /* 最大接串口传感器数量*/ #define MAX_SERIAL_DEV_NUM 25 /* 最大接串口传感器数量*/
#define MAX_SERIAL_PORT_NUM 3 /* 最大串口数量*/ #define MAX_SERIAL_PORT_NUM 3
#define MAX_DEV_VALUE_NUM 12 /* 一台装置最大的采样值数量*/
#define WEATHER_PROTOCOL 1 /* 温湿度协议序号*/ #define WEATHER_PROTOCOL 1 /* 温湿度协议序号*/
#define WIND_PROTOCOL 2 /* 风速风向协议序号*/ #define WIND_PROTOCOL 2 /* 风速风向协议序号*/
@ -143,7 +144,7 @@ typedef struct
char stopbit[8]; /* 停止位*/ char stopbit[8]; /* 停止位*/
char parity; /* 校验位*/ char parity; /* 校验位*/
char pathname[64]; /* 串口文件名及路径*/ char pathname[64]; /* 串口文件名及路径*/
int commid; /* 串口序号*/ int commid; /* 串口序号 注意从0开始*/
u_char ProtocolIdx; /* 规约索引,大于 0*/ u_char ProtocolIdx; /* 规约索引,大于 0*/
int devaddr; /* 装置使用的地址*/ int devaddr; /* 装置使用的地址*/
u_char IsNoInsta; /* 装置没有安装或者已经坏了(1:正常, 0:无效,坏了或没有安装)*/ u_char IsNoInsta; /* 装置没有安装或者已经坏了(1:正常, 0:无效,坏了或没有安装)*/
@ -222,6 +223,7 @@ typedef struct
u_char SameTypeDevIdx; /* 相同类型装置顺序排列序号(从0开始)*/ u_char SameTypeDevIdx; /* 相同类型装置顺序排列序号(从0开始)*/
int iRecvTime; /* 最近一次收到数据的绝对时间*/ int iRecvTime; /* 最近一次收到数据的绝对时间*/
u_char uOpenPowerFlag; /* 传感器上电标志(0:不需要打开; 1:需要打开)*/ u_char uOpenPowerFlag; /* 传感器上电标志(0:不需要打开; 1:需要打开)*/
AI_DEF aiValue[MAX_DEV_VALUE_NUM]; /* 传感器采样值*/
} SERIAL_DEV_DEF; } SERIAL_DEV_DEF;
//串口相关装置所有参数集中定义 //串口相关装置所有参数集中定义
@ -232,7 +234,7 @@ typedef struct
u_char IsHexToAt; /* 串口1是否使用At指令(0:使用At指令;1:使用16进制数据传输)*/ u_char IsHexToAt; /* 串口1是否使用At指令(0:使用At指令;1:使用16进制数据传输)*/
u_char sampling; /* 正在进行采样(0:没有进行采样;1:正在进行采样;)*/ u_char sampling[5]; /* 正在进行采样(0:没有进行采样;1:正在进行采样;)*/
u_char clcyesampling; /* 正在进行采样(0:没有进行采样;1:正在进行采样;)*/ u_char clcyesampling; /* 正在进行采样(0:没有进行采样;1:正在进行采样;)*/
u_char camerauseserial; /* 云台指令正在使用那个串口*/ u_char camerauseserial; /* 云台指令正在使用那个串口*/
DWORD PtzCmdType; /* 云台指令类型*/ DWORD PtzCmdType; /* 云台指令类型*/

Loading…
Cancel
Save