|
|
|
@ -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++)
|
|
|
|
|
{
|
|
|
|
@ -770,7 +769,7 @@ void Gm_InitSerialComm_Test()
|
|
|
|
|
devparam[0].IsNoInsta = 1;
|
|
|
|
|
//devparam[0].PowerPort = 2;
|
|
|
|
|
//devparam[0].devaddr = 4;
|
|
|
|
|
devparam[0].devaddr = 2;
|
|
|
|
|
devparam[0].devaddr = 10;
|
|
|
|
|
|
|
|
|
|
devparam[1].ProtocolIdx = WEATHER_PROTOCOL;
|
|
|
|
|
devparam[1].baudrate = B9600;
|
|
|
|
@ -781,7 +780,7 @@ void Gm_InitSerialComm_Test()
|
|
|
|
|
devparam[1].IsNoInsta = 1;
|
|
|
|
|
//devparam[1].PowerPort = 14;
|
|
|
|
|
//devparam[1].devaddr = 1;
|
|
|
|
|
devparam[1].devaddr = 13;
|
|
|
|
|
devparam[1].devaddr = 2;
|
|
|
|
|
|
|
|
|
|
devparam[2].ProtocolIdx = RALLY_PROTOCOL;
|
|
|
|
|
devparam[2].baudrate = B9600;
|
|
|
|
@ -977,7 +976,6 @@ void Gm_InitSerialComm()
|
|
|
|
|
|
|
|
|
|
Gm_InitSerialComm_Test();
|
|
|
|
|
// srdt 配置
|
|
|
|
|
//srdt.sampling = 0;
|
|
|
|
|
//srdt.PtzCmdType = Cmd_Cancel; // 云台指令类型
|
|
|
|
|
//srdt.SendStopPtzCmdTimeCnt=-1; // 发送云台停止指令计数
|
|
|
|
|
//srdt.uRunMode = 0;
|
|
|
|
@ -1011,7 +1009,7 @@ void Gm_InitSerialComm()
|
|
|
|
|
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);
|
|
|
|
@ -1029,16 +1027,18 @@ void Gm_InitSerialComm()
|
|
|
|
|
sprintf(szbuf, "传感器%d没有接!", i + 1);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
LOGI("%s", szbuf);
|
|
|
|
|
//LOGI("%s", szbuf);
|
|
|
|
|
|
|
|
|
|
sprintf(szbuf, "地址%d!;", devparam[i].devaddr);
|
|
|
|
|
LOGI("%s", szbuf);
|
|
|
|
|
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,18 +1104,22 @@ 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();
|
|
|
|
|
// 初始化串口使用状态
|
|
|
|
|
// 初始化串口使用状态(需要考虑不同时间启用了摄像机使用)
|
|
|
|
|
if(0 == srdt.sampling[1])
|
|
|
|
|
{
|
|
|
|
|
for (i = 0; i < MAX_SERIAL_PORT_NUM; i++)
|
|
|
|
|
{
|
|
|
|
|
serialport[i].m_iRevStatus = 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);
|
|
|
|
|
}
|
|
|
|
@ -1201,13 +1228,15 @@ void GM_StartSerialComm()
|
|
|
|
|
for(;;)
|
|
|
|
|
{
|
|
|
|
|
usleep(10);
|
|
|
|
|
LOGW("polltime=%ldms", get_msec()-polltime);
|
|
|
|
|
//LOGW("polltime=%ldms", get_msec()-polltime);
|
|
|
|
|
polltime = get_msec();
|
|
|
|
|
if(GM_SerialTimer() < 0)
|
|
|
|
|
{
|
|
|
|
|
//LOGE("12V state=%d", getInt(CMD_SET_12V_EN_STATE));
|
|
|
|
|
LOGV("退出采样流程!");
|
|
|
|
|
break;
|
|
|
|
|
sleep(15);
|
|
|
|
|
GM_StartSerialComm();
|
|
|
|
|
//break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return;
|
|
|
|
@ -1223,10 +1252,11 @@ void GM_StartSerialCameraPhoto(BYTE channel, int cmdidx)
|
|
|
|
|
|
|
|
|
|
srdt.RephotographCnt = 0;
|
|
|
|
|
FindDevUseSerialCommNo();
|
|
|
|
|
#if 0
|
|
|
|
|
//sprintf(szbuf, "sampling=%02X !", srdt.sampling);
|
|
|
|
|
//DebugStringPrintf(szbuf, strlen(szbuf), 1);
|
|
|
|
|
if(0 == srdt.selfflag)
|
|
|
|
|
srdt.selfflag = 1;
|
|
|
|
|
//if(0 == srdt.selfflag)
|
|
|
|
|
// srdt.selfflag = 1;
|
|
|
|
|
//Gm_OpenSerialPower();
|
|
|
|
|
//Gm_OpenSensorsPower();
|
|
|
|
|
//if(0x00 == srdt.sampling)
|
|
|
|
@ -1240,6 +1270,7 @@ void GM_StartSerialCameraPhoto(BYTE channel, int cmdidx)
|
|
|
|
|
}
|
|
|
|
|
if(0x01 == (srdt.sampling & 0x01))
|
|
|
|
|
flag = 0;
|
|
|
|
|
#endif
|
|
|
|
|
// 初始化串口使用状态
|
|
|
|
|
for(i=0; i<MAX_SERIAL_DEV_NUM; i++)
|
|
|
|
|
{
|
|
|
|
@ -1291,12 +1322,12 @@ void GM_StartSerialCameraPhoto(BYTE channel, int cmdidx)
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if(0x01 == flag)
|
|
|
|
|
{
|
|
|
|
|
sprintf(szbuf, "非数据采样期间,摄像机拍照启动串口定时器!");
|
|
|
|
|
//if(0x01 == flag)
|
|
|
|
|
//{
|
|
|
|
|
sprintf(szbuf, "摄像机拍照启动串口定时器!");
|
|
|
|
|
LOGI("%s", szbuf);
|
|
|
|
|
//StartTimer(GM_SERIAL_START, TIMER_CNT, GM_SerialTimer);
|
|
|
|
|
}
|
|
|
|
|
//}
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
@ -1421,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;
|
|
|
|
@ -1453,8 +1484,7 @@ void GM_AllSerialComRecv(void)
|
|
|
|
|
memset(recvbuf, 0, sizeof(recvbuf));
|
|
|
|
|
if(serialport[j].fd < 0)
|
|
|
|
|
continue;
|
|
|
|
|
for(;;)
|
|
|
|
|
{
|
|
|
|
|
//for(;;)
|
|
|
|
|
recvlen = read(serialport[j].fd, recvbuf, sizeof(recvbuf));/* 在串口读取字符串 */
|
|
|
|
|
|
|
|
|
|
if(recvlen < 1)
|
|
|
|
@ -1463,7 +1493,7 @@ void GM_AllSerialComRecv(void)
|
|
|
|
|
BytestreamLOG(buf, recvbuf, recvlen, 'I');
|
|
|
|
|
|
|
|
|
|
SerialDataProcess(srdt.curdevidx[j], recvbuf, recvlen);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1794,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
|
|
|
|
@ -1802,7 +1832,7 @@ void CameraPhotoPortDataProcess( int port)
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
srdt.sampling &= 0xFB;
|
|
|
|
|
//srdt.sampling &= 0xFB;
|
|
|
|
|
//netportparam.SerialCameraPowerCtrl[pPortParam->CameraChannel-1] = 0;
|
|
|
|
|
}
|
|
|
|
|
pPortParam->SerialCmdidx = -1;
|
|
|
|
@ -2169,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();
|
|
|
|
@ -2238,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;
|
|
|
|
@ -2254,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
|
|
|
|
@ -2425,7 +2455,6 @@ void MakeShxyProtocolPollCommand(int portno, BYTE cmdidx)
|
|
|
|
|
//Gm_OMC_UART_DebugHex(buf, i-2, (char*)&sendbuf[2]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
unsigned char CalLpc(unsigned char *msg, int len)
|
|
|
|
|
{
|
|
|
|
|
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;
|
|
|
|
|
//WORD crc, check;
|
|
|
|
|
//SERIAL_DEV_DEF *pPortParam;
|
|
|
|
|
SIO_PARAM_SERIAL_DEF *pPortParam;
|
|
|
|
|
|
|
|
|
|
if((commid<0) || (commid > MAX_SERIAL_DEV_NUM))
|
|
|
|
|
if((devno<0) || (devno > MAX_SERIAL_DEV_NUM))
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
pPortParam = &serialport[devparam[commid].commid];
|
|
|
|
|
pPortParam = &serialport[devparam[devno].commid];
|
|
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
{
|
|
|
|
|
ShxyProtocolDataProcess(commid);
|
|
|
|
|
ShxyProtocolDataProcess(devno);
|
|
|
|
|
pPortParam->m_iRevStatus = 0;
|
|
|
|
|
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*/;
|
|
|
|
|
WORD uDevAddr;
|
|
|
|
@ -2573,13 +2602,13 @@ void ShxyProtocolDataProcess( int commid)
|
|
|
|
|
SIO_PARAM_SERIAL_DEF *curserial;
|
|
|
|
|
char szbuf[64];
|
|
|
|
|
|
|
|
|
|
pPortParam = &srdt.ms_dev[commid];
|
|
|
|
|
curserial = &serialport[devparam[commid].commid];
|
|
|
|
|
pPortParam = &srdt.ms_dev[devno];
|
|
|
|
|
curserial = &serialport[devparam[devno].commid];
|
|
|
|
|
|
|
|
|
|
//取出装置地址,开始处理地址+++
|
|
|
|
|
if(0x02 == curserial->m_au8RecvBuf[5])
|
|
|
|
|
{
|
|
|
|
|
devparam[commid].devaddr = curserial->m_au8RecvBuf[4];
|
|
|
|
|
devparam[devno].devaddr = curserial->m_au8RecvBuf[4];
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -2613,7 +2642,7 @@ void ShxyProtocolDataProcess( int commid)
|
|
|
|
|
slantpntmsg[aipnt][0].AiState = 1;
|
|
|
|
|
//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);
|
|
|
|
|
}
|
|
|
|
|
//XslantSec[aipnt][srdt.SectimesamplingCnt[0]] = (short)slantpntmsg[aipnt][0].EuValue;
|
|
|
|
@ -2676,10 +2705,15 @@ void ShxyProtocolDataProcess( int commid)
|
|
|
|
|
if((fvalue < -40) ||(fvalue > 85))
|
|
|
|
|
{
|
|
|
|
|
frnb = (GeneratingRandomNumber()%101-50)/1000.0;
|
|
|
|
|
pPortParam->aiValue[0].EuValue *= (1+frnb);
|
|
|
|
|
weatherpntmsg[0].EuValue *= (1+frnb);
|
|
|
|
|
}
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
pPortParam->aiValue[0].AiState = 1;
|
|
|
|
|
weatherpntmsg[0].AiState = 1;
|
|
|
|
|
//g_SelfTest.SensorsFault |= (0x01);
|
|
|
|
|
//if ((gDisSunRain & 0x80) == 0x80)
|
|
|
|
@ -2692,10 +2726,15 @@ void ShxyProtocolDataProcess( int commid)
|
|
|
|
|
if((fvalue < 550) ||(fvalue > 1060))
|
|
|
|
|
{
|
|
|
|
|
frnb = (GeneratingRandomNumber()%41-20)/10000.0;
|
|
|
|
|
pPortParam->aiValue[5].EuValue *= (1+frnb);
|
|
|
|
|
weatherpntmsg[5].EuValue *= (1+frnb);
|
|
|
|
|
}
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
pPortParam->aiValue[5].AiState = 1;
|
|
|
|
|
weatherpntmsg[5].AiState = 1;
|
|
|
|
|
//g_SelfTest.SensorsFault |= (0x10);
|
|
|
|
|
//if ((gDisSunRain & 0x80) == 0x80)
|
|
|
|
@ -2708,10 +2747,15 @@ void ShxyProtocolDataProcess( int commid)
|
|
|
|
|
if((fvalue < 0) ||(fvalue > 100))
|
|
|
|
|
{
|
|
|
|
|
frnb = (GeneratingRandomNumber()%41-20)/1000.0;
|
|
|
|
|
pPortParam->aiValue[1].EuValue *= (1+frnb);
|
|
|
|
|
weatherpntmsg[1].EuValue *= (1+frnb);
|
|
|
|
|
}
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
pPortParam->aiValue[1].AiState = 1;
|
|
|
|
|
weatherpntmsg[1].AiState = 1;
|
|
|
|
|
//g_SelfTest.SensorsFault |= (0x02);
|
|
|
|
|
//if ((gDisSunRain & 0x80) == 0x80)
|
|
|
|
@ -2728,10 +2772,15 @@ void ShxyProtocolDataProcess( int commid)
|
|
|
|
|
if((fvalue/1000 < 0) ||(fvalue/1000 > 80))
|
|
|
|
|
{
|
|
|
|
|
frnb = (GeneratingRandomNumber()%41-20)/1000.0;
|
|
|
|
|
pPortParam->aiValue[2].EuValue *= (1+frnb);
|
|
|
|
|
weatherpntmsg[2].EuValue *= (1+frnb);
|
|
|
|
|
}
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
pPortParam->aiValue[2].AiState = 1;
|
|
|
|
|
weatherpntmsg[2].AiState = 1;
|
|
|
|
|
//g_SelfTest.SensorsFault |= (0x04);
|
|
|
|
|
//if ((gDisSunRain & 0x10) == 0x10)
|
|
|
|
@ -2748,10 +2797,15 @@ void ShxyProtocolDataProcess( int commid)
|
|
|
|
|
if((fvalue/1000 < 0) ||(fvalue/1000 > 359.99))
|
|
|
|
|
{
|
|
|
|
|
frnb = (GeneratingRandomNumber()%41-20)/1000.0;
|
|
|
|
|
pPortParam->aiValue[3].EuValue *= (1+frnb);
|
|
|
|
|
weatherpntmsg[3].EuValue *= (1+frnb);
|
|
|
|
|
}
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
pPortParam->aiValue[3].AiState = 1;
|
|
|
|
|
weatherpntmsg[3].AiState = 1;
|
|
|
|
|
//g_SelfTest.SensorsFault |= (0x08);
|
|
|
|
|
//if ((gDisSunRain & 0x10) == 0x10)
|
|
|
|
@ -2780,53 +2834,55 @@ void ShxyProtocolDataProcess( int commid)
|
|
|
|
|
pPortParam->recvdatacnt++;
|
|
|
|
|
if(pPortParam->recvdatacnt < 2)
|
|
|
|
|
break;
|
|
|
|
|
//g_SelfTest.SensorsFault |= (0x040<<aipnt);
|
|
|
|
|
//if(fvalue/1000.0 < rallypntmsg[aipnt][1].AiParam.EuValueDelta)
|
|
|
|
|
// rallypntmsg[aipnt][0].EuValue = 0;
|
|
|
|
|
//else
|
|
|
|
|
rallypntmsg[aipnt][0].EuValue = fvalue*rallypntmsg[aipnt][0].AiParam.fFactor\
|
|
|
|
|
+rallypntmsg[aipnt][0].AiParam.EuValueDelta;
|
|
|
|
|
rallypntmsg[aipnt][0].AiState = 1;
|
|
|
|
|
//if ((gDisSunRain & 0x10) == 0x10)
|
|
|
|
|
{
|
|
|
|
|
sprintf(szbuf, "地址%d拉力:%0.3fKg ", devparam[commid].devaddr, fvalue);
|
|
|
|
|
|
|
|
|
|
pPortParam->aiValue[0].EuValue = fvalue*pPortParam->aiValue[0].AiParam.fFactor\
|
|
|
|
|
+pPortParam->aiValue[0].AiParam.EuValueDelta;
|
|
|
|
|
//rallypntmsg[aipnt][0].EuValue = fvalue*rallypntmsg[aipnt][0].AiParam.fFactor\
|
|
|
|
|
// +rallypntmsg[aipnt][0].AiParam.EuValueDelta;
|
|
|
|
|
pPortParam->aiValue[0].AiState = 1;
|
|
|
|
|
//rallypntmsg[aipnt][0].AiState = 1;
|
|
|
|
|
sprintf(szbuf, "地址%d拉力:%0.3fKg ", devparam[devno].devaddr, fvalue);
|
|
|
|
|
LOGV("%s", szbuf);
|
|
|
|
|
}
|
|
|
|
|
// yizhonghu 20110629
|
|
|
|
|
//rallyd[aipnt][srdt.SectimesamplingCnt[2]] = (short)slantpntmsg[aipnt][0].EuValue;
|
|
|
|
|
srdt.SectimesamplingCnt[2] += 1;
|
|
|
|
|
//}
|
|
|
|
|
break;
|
|
|
|
|
case 9: /*倾角传感器X轴倾角*/
|
|
|
|
|
if((fvalue < -59) ||(fvalue > 59))
|
|
|
|
|
{
|
|
|
|
|
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
|
|
|
|
|
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);
|
|
|
|
|
LOGV("%s", szbuf);
|
|
|
|
|
pPortParam->aiValue[0].EuValue = fvalue*pPortParam->aiValue[0].AiParam.fFactor\
|
|
|
|
|
+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;
|
|
|
|
|
case 10: /*倾角传感器Y轴倾角*/
|
|
|
|
|
{
|
|
|
|
|
sprintf(szbuf, "Y =%0.3f ", fvalue);
|
|
|
|
|
LOGV("%s", szbuf);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if((fvalue < -59) ||(fvalue > 59))
|
|
|
|
|
{
|
|
|
|
|
frnb = (GeneratingRandomNumber()%101-50)/1000.0;
|
|
|
|
|
pPortParam->aiValue[1].EuValue *= (1+frnb);
|
|
|
|
|
slantpntmsg[aipnt][1].EuValue *= (1+frnb);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
slantpntmsg[aipnt][1].EuValue = fvalue*slantpntmsg[aipnt][1].AiParam.fFactor\
|
|
|
|
|
+slantpntmsg[aipnt][1].AiParam.EuValueDelta;
|
|
|
|
|
slantpntmsg[aipnt][1].AiState = 1;
|
|
|
|
|
{
|
|
|
|
|
pPortParam->aiValue[1].EuValue = fvalue*pPortParam->aiValue[1].AiParam.fFactor\
|
|
|
|
|
+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;
|
|
|
|
|
#if 0
|
|
|
|
|
case 11: /*测温球导线温度*/
|
|
|
|
|