Пример #1
0
int F930057(TRUSERID *handle,int iRequest,ST_PACK *rPack,int *pRetCode,char *szMsg)
{
//	writelog(LOG_DEBUG, "设备%s发送心跳",rPack->sdate1);
//	CAccTrans *pAccTrans=CAccTrans::getInstance();
//	GetCpackDataString(rPack,pAccTrans->cpackdata);
//	writelog(LOG_INFO,"cpack:[%s]",pAccTrans->cpackdata);
	
	char		devphyid[31]="";
	int 		ret=0;
	T_t_devmonitor  devmonitor;
	memset(&devmonitor,0,sizeof(devmonitor));

	devmonitor.deviceid=atoi(rPack->sorder2);

	if(devmonitor.deviceid<1)
	{
		des2src(devphyid, rPack->sdate1);
		ret = GetDevIdByDevPhyId(&(devmonitor.deviceid),devphyid);
		if(0 != ret)
		{
			writelog(LOG_ERR,"devphyid:%s",devphyid);
			return  ret;
		}
	}
	/*得到CPACK数据*/
	des2src(devmonitor.optime,rPack->sphone3);
	getsystimestamp(devmonitor.coltime);
	devmonitor.beatstatus=rPack->lvol2;
	des2src(devmonitor.cardverno,rPack->sserial4);
	devmonitor.hardiskper=rPack->damt0;
	devmonitor.memoryper=rPack->damt1;
	devmonitor.cpuper=rPack->damt2;
	des2src(devmonitor.devtime,rPack->sholder_ac_no2);

	ret=DB_t_devmonitor_update_by_deviceid(devmonitor.deviceid,&devmonitor);
	if(ret)
	{
		if(DB_NOTFOUND==ret)
		{
			//设备心跳记录不存在(初始化时),则进行插入操作
			SQLCODE=0;
			ret=DB_t_devmonitor_add(&devmonitor);
			if(ret)
			{
				return E_DB_DEVMONITOR_I;
			}
			return 0;
		}
		else
		{
			return E_DB_DEVMONITOR_U;
		}
	}
	return 0;
}
Пример #2
0
static int do_check_buffer(char *status_buffer, const char *op_time) {
    int i;
    int buf_len;
    int ret;
    int deviceid = 0;
    char dev_phyno[31] = "";
    int dev_state = 0;
    T_t_devmonitor dev_monitor;
    char temp[3] = "";
    static const int sect_len = 10;
    char* delim = ";";
    char* delim2 = ",";
    char *devstatus_buffer;
    buf_len = strlen(status_buffer);
    char lastchar[2] = "";
    if (buf_len <= 0) {
        return 0;
    }
    if (g_devtypeflag == 3) {
        //判断status_buffer最后一位是否为 ';'
        strncpy(lastchar, status_buffer + buf_len - 1 , 1);
        if (strncmp(lastchar, ";", 1) != 0) {
            writelog(LOG_ERR, "上送记录不完整,status_buffer[%s].", status_buffer);
            return -1;
        }
        writelog(LOG_INFO, "上送记录,status_buffer[%s].", status_buffer);
        devstatus_buffer = strtok(status_buffer, delim);
        while (devstatus_buffer != NULL) {
            writelog(LOG_INFO, "devstatus_buffer=[%s]\n", devstatus_buffer);
            char* buf = strstr(devstatus_buffer, delim2);
            memset(temp, 0, sizeof temp);
            strncpy(temp, buf + 1 , 2);
            dev_state = strtoul(temp, NULL, 16);
            memset(dev_phyno, 0, sizeof dev_phyno);
            sscanf(devstatus_buffer, "%[^,]%*s", dev_phyno);
            writelog(LOG_INFO, "dev_phyno=[%s],dev_state=[%d]\n", dev_phyno, dev_state);
            if (g_flag == 1) {
                ret = GetDevIdByDevPhyId(&deviceid, dev_phyno);
                if (ret) {
                    writelog(LOG_ERR, "设备不存在,devphyid[%s].", dev_phyno);
                    //return ret;
                }
            } else {
                deviceid = atoi(dev_phyno);
                T_t_device tDevice;
                memset(&tDevice, 0, sizeof tDevice);
                ret = DB_t_device_read_by_deviceid(deviceid, &tDevice);
                if (ret) {
                    if (E_NOTEXIST_DEVICE == ret) {
                        writelog(LOG_ERR, "前置机心跳,设备不存在,deviceid[%s]", dev_phyno);
                        continue;
                    }
                    continue;
                }
            }
            memset(&dev_monitor, 0, sizeof dev_monitor);
            ret = DB_t_devmonitor_read_by_deviceid(deviceid, &dev_monitor);
            des2src(dev_monitor.optime, op_time);
            des2src(dev_monitor.coltime, CAccTrans::getInstance()->trans.sysdatetime);
            des2src(dev_monitor.devtime, op_time);
            dev_monitor.deviceid = deviceid;
            dev_monitor.beatstatus = dev_state;
            if (ret) {
                if (DB_NOTFOUND == ret) {
                    //dev_monitor.is_ws[0] = '1';
                    ret = DB_t_devmonitor_add(&dev_monitor);
                    if (ret) {
                        writelog(LOG_ERR, "增加设备监控记录失败!dev[%d] phyno[%s]", dev_monitor.deviceid, dev_phyno);
                        //return -1;
                    }
                    continue;
                }
                //return -1;
            } else {
                ret = DB_t_devmonitor_update_by_deviceid(deviceid, &dev_monitor);
                if (ret) {
                    writelog(LOG_ERR, "更新设备监控记录失败!");
                    if (DB_NOTFOUND == ret)
                        continue;
                    //return -1;
                }
            }
            /* 获取后续数据 */
            devstatus_buffer = strtok(NULL, delim);
        }
        return 1;
    } else if (g_devtypeflag == 0) {
        for (i = 0; i < buf_len; i += sect_len) {
            //鑫三强采用设备ID
            strncpy(dev_phyno, status_buffer + i, 8);
            dev_phyno[8] = '\0';
            strncpy(temp, status_buffer + i + 8, 2);
            dev_state = strtoul(temp, NULL, 16);
            if (g_flag == 1) {
                ret = GetDevIdByDevPhyId(&deviceid, dev_phyno);
                if (ret) {
                    writelog(LOG_ERR, "devphyid[%s]", dev_phyno);
                    return ret;
                }
            } else {
                deviceid = atoi(dev_phyno);
                T_t_device tDevice;
                memset(&tDevice, 0, sizeof tDevice);
                ret = DB_t_device_read_by_deviceid(deviceid, &tDevice);
                if (ret) {
                    if (E_NOTEXIST_DEVICE == ret) {
                        writelog(LOG_ERR, "前置机心跳,设备不存在[%s]", dev_phyno);
                        continue;
                    }
                    continue;
                }
            }
            memset(&dev_monitor, 0, sizeof dev_monitor);
            ret = DB_t_devmonitor_read_by_deviceid(deviceid, &dev_monitor);
            des2src(dev_monitor.optime, op_time);
            des2src(dev_monitor.coltime, CAccTrans::getInstance()->trans.sysdatetime);
            des2src(dev_monitor.devtime, op_time);
            dev_monitor.deviceid = deviceid;
            dev_monitor.beatstatus = dev_state;
            if (ret) {
                if (DB_NOTFOUND == ret) {
                    //dev_monitor.is_ws[0] = '1';
                    ret = DB_t_devmonitor_add(&dev_monitor);
                    if (ret) {
                        writelog(LOG_ERR, "增加设备监控记录失败!dev[%d] phyno[%s]", dev_monitor.deviceid, dev_phyno);
                        return -1;
                    }
                    continue;
                }
                return -1;
            } else {
                ret = DB_t_devmonitor_update_by_deviceid(deviceid, &dev_monitor);
                if (ret) {
                    writelog(LOG_ERR, "更新设备监控记录失败!");
                    if (DB_NOTFOUND == ret)
                        continue;
                    return -1;
                }
            }
        }
        if (buf_len < 250) {
            return 0;
        }
    }
    return 1;
}
Пример #3
0
static int do_check_buffer(const char *status_buffer,const char *op_time)
{
	int count,i;
	int buf_len;
	int ret;
	int deviceid=0;
	char dev_phyno[31]= "";
	int dev_state = 0;
	T_t_device tDevice;
	T_t_devmonitor dev_monitor;
	char temp[3] = "";
	static const int sect_len = 10;
	//writelog(LOG_DEBUG,"status buffer [%s]",status_buffer);
	buf_len = strlen(status_buffer);
	if(buf_len <= 0)
	{
		return 0;
	}
	for(i = 0;i < buf_len;i+=sect_len)
	{
		//鑫三强采用设备ID
		strncpy(dev_phyno,status_buffer+i,8);
		dev_phyno[8] = '\0';
		strncpy(temp,status_buffer+i+8,2);
		dev_state = strtoul(temp,NULL,16);
        if(g_FrontType !=SUBSYSTYPE_XSQ)
        {
			ret=GetDevIdByDevPhyId(&deviceid,dev_phyno);
			if(ret)
			{
				writelog(LOG_ERR,"devphyid[%s]",dev_phyno);
				return ret;
			}
        }
        else
        {
		deviceid=atoi(dev_phyno);
		memset(&tDevice,0,sizeof tDevice);
		ret = DB_t_device_read_by_deviceid(deviceid,&tDevice);
		if(ret)
		{
			if(E_NOTEXIST_DEVICE== ret)
			{
				writelog(LOG_ERR,"前置机心跳,设备不存在[%s]",dev_phyno);
				continue;
			}
			continue;
		}
        }
		memset(&dev_monitor,0,sizeof dev_monitor);
		ret = DB_t_devmonitor_read_by_deviceid(tDevice.deviceid,&dev_monitor);
		des2src(dev_monitor.optime,op_time);
		des2src(dev_monitor.coltime,CAccTrans::getInstance()->trans.sysdatetime);
		des2src(dev_monitor.devtime,op_time);
		dev_monitor.deviceid = tDevice.deviceid;
		dev_monitor.beatstatus = dev_state;
		if(ret)
		{
			if(DB_NOTFOUND == ret)
			{
				//dev_monitor.is_ws[0] = '1';
				ret = DB_t_devmonitor_add(&dev_monitor);
				if(ret)
				{
					writelog(LOG_ERR,"增加设备监控记录失败!dev[%d] phyno[%s]"
					,dev_monitor.deviceid,dev_phyno);
					return -1;
				}
				continue;
			}
			return -1;
		}
		else
		{
			ret = DB_t_devmonitor_update_by_deviceid(tDevice.deviceid,&dev_monitor);
			if(ret)
			{
				writelog(LOG_ERR,"更新设备监控记录失败!");
				if(DB_NOTFOUND == ret)
					continue;
				return -1;
			}
		}
	}
	if(buf_len < 250)
	{
		return 0;
	}
	return 1;
}