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; }
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; }
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; }