⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 optickettopo.cpp.bak

📁 电力系统潮流程序adsfasdfasfd
💻 BAK
📖 第 1 页 / 共 5 页
字号:
{	int										i;	ReadDevRunModeResRpt 	runmodeRes;	printf("CALL ReadDevRunMode\n");		vector<DevType_T> m_openDev;	vector<DevType_T> m_closeDev;			ReadDevRunModeReqRpt runmodeReq;	UN_MARSHAL(runmodeReq,m_BufBase.GetBufPtr(),m_BufBase.GetLength());	int app_no=runmodeReq.app_info.app_no;	if(app_no!=g_app_no)	{		//printf("应用不对应\n");		return 0;	}	for(i=0;i<runmodeReq.devs.length();i++)	{	       		switch(GetYxValue(runmodeReq.devs[i]))		{		         			case OPT_VALUE_YX_ON:			{				InsertDev(runmodeReq.devs[i],m_closeDev);			  //printf("设备id=============%d当前是合位!!!!!!11\n",runmodeReq.devs[i]);				break;			}			case OPT_VALUE_YX_OFF:			{				InsertDev(runmodeReq.devs[i],m_openDev);				//printf("设备id=============%d当前是分位!!!!!!11\n",runmodeReq.devs[i]);				break;			}			default:			{				break;			}		}	}		if(!m_closeDev.empty() || !m_openDev.empty())	{		g_psntp->ResetCbOpen(m_closeDev,true);		g_psntp->SetCbOpen(m_openDev,true);	}	//完成后应答        if(dutyflag==1)        {         ReadGroundToken();	runmodeRes.res.ret_code=RETURN_SUCCESS;	m_SendMsgType=OPTICKET_READ_DEV_MODE_RES;	MARSHAL(runmodeRes, m_SendMsgBuf, m_SendMsgLen);	SendToHost(m_RecvMsgHeader.src_host_name,m_RecvMsgHeader.src_proc_name);	delete [] m_SendMsgBuf;	m_SendMsgBuf=NULL;	}	return 1;}int	COpticketTopo::InsertDev(int dev_id,vector<DevType_T> &mapDev){	DevType_T          dev_type;	if(dev_id/DB_BASE==BRK_DEVICE_NO)	{		dev_type.switch_type=SWITCH_TYPE_BRK;	}	else if(dev_id/DB_BASE==DISCR_DEVICE_NO)	{		dev_type.switch_type=SWITCH_TYPE_DISCR;	}	else if(dev_id/DB_BASE==GDDISCR_DEVICE_NO)	{		dev_type.switch_type=SWITCH_TYPE_GDDISCR;	}	else	{		return 0;	}	dev_type.m_id = dev_id;	 mapDev.push_back(dev_type);	return 1;}	int	COpticketTopo::InsertDev(vector<int> dev_vec,vector<DevType_T > &mapDev){   	DevType_T          dev_type;	for(int i = 0;i < dev_vec.size();i++)	{		if(dev_vec[i]/DB_BASE==BRK_DEVICE_NO)		{			dev_type.switch_type=SWITCH_TYPE_BRK;		}		else if(dev_vec[i]/DB_BASE==DISCR_DEVICE_NO)		{			dev_type.switch_type=SWITCH_TYPE_DISCR;		}		else if(dev_vec[i]/DB_BASE==GDDISCR_DEVICE_NO)		{			dev_type.switch_type=SWITCH_TYPE_GDDISCR;		}		else		{			continue;		}		dev_type.m_id = dev_vec[i];	        mapDev.push_back(dev_type);//		if((it=mapDev.find(swtype))!=mapDev.end())//		{//			(it->second).push_back(dev_vec[i]);//		}//		else//		{//			vector<DevId_T> vec;//			vec.push_back(dev_vec[i]);//			mapDev.insert(make_pair(swtype,vec));//		}	}	return 1;}int COpticketTopo::SynDevMode()//实时同步运行方式{  if(*m_model_time_shm > m_last_model_time)  {//模型变化    clock_t							starttime;    cout<<"模型 changed."<<endl;    starttime = clock();    m_last_model_time = *m_model_time_shm;		ModelChange();//    printf("ModelChange   exec   time ====================%d s\n",clock()-starttime);		  }	return 1;}int COpticketTopo::SynRunMode()//实时同步运行方式{  bool sleep_flag = false;  if(*m_yx_change_time_shm > m_last_yx_change_time)  {//遥信变位  	cout<<"运行方式 changed."<<endl;  	clock_t							starttime;        m_last_yx_change_time = *m_yx_change_time_shm;        starttime = clock();	  YxValueChange();        if(time(NULL) <= m_last_yx_change_time)    {       DelayTime(1000);    }				sleep_flag = false;    while((*m_yx_change_time_shm - m_last_yx_change_time > 0)              && (*m_yx_change_time_shm - m_last_yx_change_time <= 3))    {//处理系统有大量遥信变位的情况,直到遥信间隔时间大于3秒或者等待时间大于计算周期才进行一次计算    	sleep_flag = true;      cout<<"sleep........................................................................................."<<endl;      m_last_yx_change_time = *m_yx_change_time_shm;      DelayTime(2000);    }    if(sleep_flag)    {    	YxValueChange();    }    printf("YxValueChange   exec   time ====================%d s\n",clock()-starttime);  }	return 1;}/*void COpticketTopo::ProcessYxChange(){	ChangeDataPkg		   change_yx_pkg;	vector<DevType_T> m_openDev;	vector<DevType_T> m_closeDev;	UN_MARSHAL(change_yx_pkg,m_BufBase.GetBufPtr(),m_BufBase.GetLength());	int bw_num;	int table_num;	int special_flag;	int tableno;	TKeyID keyid;	unsigned char value;	int loop;	//deal yx_change	//bw_num = change_yx_pkg.package_head.char_num;	//printf("变化遥信发送主机=======%s,发送进程=-========%s\n",m_RecvMsgHeader.src_host_name,m_RecvMsgHeader.src_proc_name);        bw_num = change_yx_pkg.char_info.length();	for(loop=0;loop<bw_num;loop++)	{		if(change_yx_pkg.char_info[loop].app_no!=g_app_no)		{			continue;		}		keyid = change_yx_pkg.char_info[loop].keyid;		value = change_yx_pkg.char_info[loop].value;				tableno =keyid.record_id/KEY_DIV_VALUE;		if (tableno != BRK_DEVICE_NO && tableno != DISCR_DEVICE_NO && tableno != GDDISCR_DEVICE_NO)		{			continue;		}	                		if (change_yx_pkg.char_info[loop].value & 0x80)			special_flag = BW_TYPE_OF_SG;		else if (change_yx_pkg.char_info[loop].value & 0x08)			special_flag = BW_TYPE_OF_PARA;		else if (change_yx_pkg.char_info[loop].value & 0x04)			special_flag = BW_TYPE_OF_UPDATE;		else if (change_yx_pkg.char_info[loop].value & 0x02)			special_flag = BW_TYPE_OF_MISTAKE;		else			special_flag = BW_TYPE_OF_NORMAL;		if(special_flag != BW_TYPE_OF_MISTAKE)		{			if(value==MENU_VALUE_YX_ON)			{			       // printf("keyid.record_id ====%d bw app_no====%d,value==MENU_VALUE_YX_ON!!!!\n",keyid.record_id,change_yx_pkg.char_info[loop].app_no);				InsertDev(keyid.record_id,m_closeDev);			}			else			{			        printf("keyid.record_id ====%d bw app_no====%d,value==MENU_VALUE_YX_OFF!!!!\n",keyid.record_id,change_yx_pkg.char_info[loop].app_no);				InsertDev(keyid.record_id,m_openDev);			}		  		}	}	if(!m_closeDev.empty() && m_canSyncMode == 2)	{		 printf("开始更新方式数据!!!!!!!!!!!!!!!!!!!!!!!!\n");		  g_psntp->ResetCbOpen(m_closeDev,true);		  m_closeDev.clear();			}	if(!m_openDev.empty() && m_canSyncMode == 2)	{		printf("开始更新方式数据!!!!!!!!!!!!!!!!!!!!!!!!\n");		  g_psntp->SetCbOpen(m_openDev,true);		  m_openDev.clear();	}	//del tablechange	//table_num = change_yx_pkg.package_head.table_num;	table_num = change_yx_pkg.table_info.length();	//printf("table_num=====================================%d\n",table_num);	for(loop=0;loop<table_num;loop++)	{		if(change_yx_pkg.table_info[loop].app_no!=g_app_no)		{			continue;		}		//printf("table bw  ===========%d\n",change_yx_pkg.table_info[loop].table_no);		tableno = change_yx_pkg.table_info[loop].table_no;		                if(tableno == BRK_DEVICE_NO ||                   tableno == DISCR_DEVICE_NO ||                   tableno == GDDISCR_DEVICE_NO ||                   tableno == BS_DEVICE_NO ||                   tableno == LINE_DEVICE_NO ||                   tableno == ACLN_DEVICE_NO ||                   tableno == ACLN_DOT_NO ||                   tableno == TR_DEVICE_NO ||                    tableno == TRWD_DEVICE_NO ||                   tableno == GN_DEVICE_NO ||                   tableno == LD_DEVICE_NO ||                   tableno == RC_DEVICE_NO ||                   tableno == TERMINAL_DEVICE_NO                   )                 {                    m_isModelChange = true;                    break;	                 } 			}	if(m_isModelChange && m_canSyncMode ==2)	{		printf("开始更新模型!!!!!!!!!!!!!!!!!!!!!!!!!\n");		ModelChange();		m_isModelChange = false;			}}*/void COpticketTopo::SyncMode()//根据参数设定同步运行方式以及模型{	//modify by xuxianfeng 060427	if(g_app_no==AP_SCADA ||	(g_app_no!=AP_SCADA&&m_opt_sync_dev_mode==OPTICKET_SYNC_YES))	{				SynDevMode();	}	if(g_app_no==AP_SCADA ||	(g_app_no!=AP_SCADA&&m_opt_sync_run_mode==OPTICKET_SYNC_YES))	{		SynRunMode();			}		//end add	}		int COpticketTopo::ModelChange(){//    SetGraphInfo();	//设置接地牌        ReadGroundToken();        g_flow_verify = ReadPara("scada/opt_para","is_flow_verify");        if(g_flow_verify == 1)        {                deque<OpPair> opVec;                SendMsgToFlow(opVec,FLOW_MODEL_CHANGE);        }	return 1;}int COpticketTopo::YxValueChange(){	int i;	vector<DevType_T> m_openDev;	vector<DevType_T> m_closeDev;	vector<dev_yx_stru>   brk_yx_vec;	vector<dev_yx_stru>   discr_yx_vec;	vector<dev_yx_stru>   gddiscr_yx_vec;  	GetAllRec<ODB::CTableOp>(g_app_no, BRK_DEVICE_NO, BRK_YX_FIELDS, brk_yx_vec);  	//printf("alldev.m_brkVec.size()==%d\n",alldev.m_brkVec.size());    	GetAllRec<ODB::CTableOp>(g_app_no, DISCR_DEVICE_NO, DISCR_YX_FIELDS,discr_yx_vec); 	 //printf("alldev.m_discrVec.size()==%d\n",alldev.m_discrVec.size()); 	GetAllRec<ODB::CTableOp>(g_app_no, GDDISCR_DEVICE_NO, GDDISCR_YX_FIELDS, gddiscr_yx_vec); 	 //printf("alldev.m_gddiscrVec.size()==%d\n",alldev.m_gddiscrVec.size());		m_openDev.clear();	m_closeDev.clear();	vector<int>  open_dev_vec;	vector<int>  close_dev_vec;	close_dev_vec.reserve(brk_yx_vec.size()+discr_yx_vec.size()+gddiscr_yx_vec.size());	open_dev_vec.reserve(brk_yx_vec.size()+discr_yx_vec.size()+gddiscr_yx_vec.size());	vector<dev_yx_stru>::iterator p_dev;	 for(p_dev=brk_yx_vec.begin();p_dev!=brk_yx_vec.end();++p_dev)	{//1020		if(p_dev->yx_value==OPT_VALUE_YX_ON)		{			close_dev_vec.push_back(p_dev->dev_id);					}		else		{			open_dev_vec.push_back(p_dev->dev_id);		}	}	 for(p_dev=discr_yx_vec.begin();p_dev!=discr_yx_vec.end();++p_dev)	{//		if(p_dev->yx_value==OPT_VALUE_YX_ON)		{			close_dev_vec.push_back(p_dev->dev_id);					}		else		{			open_dev_vec.push_back(p_dev->dev_id);		}	}	 for( p_dev=gddiscr_yx_vec.begin();p_dev!=gddiscr_yx_vec.end();++p_dev)	{//		if(p_dev->yx_value==OPT_VALUE_YX_ON)		{			close_dev_vec.push_back(p_dev->dev_id);					}		else		{			open_dev_vec.push_back(p_dev->dev_id);		}	}		//printf("m_openDev.size==%d\n",m_openDev.size());	//printf("m_closeDev.size==%d\n",m_closeDev.size());	//printf("m_closeDev.SWITCH_TYPE_BRK.size==%d\n",m_closeDev[SWITCH_TYPE_BRK].size());	//printf("m_openDev.SWITCH_TYPE_BRK.size==%d\n",m_openDev[SWITCH_TYPE_BRK].size());	InsertDev(close_dev_vec,m_closeDev);	InsertDev(open_dev_vec,m_openDev);	SetAcDotPower();	if(!m_closeDev.empty() || !m_openDev.empty())	{		g_psntp->SetAndResetCbOpen(m_openDev,m_closeDev,true);	}	    //如果拷贝完方式数据,要重新设置接地牌	ReadGroundToken();  //xxf 080814  IslandResult();        g_flow_verify = ReadPara("scada/opt_para","is_flow_verify");        if(g_flow_verify == 1)        {            deque<OpPair> opVec;            SendMsgToFlow(opVec,FLOW_MODE_CHANGE);        }	return 1;}#ifdef _WINDOWS32int COpticketTopo::SaveModelBase(const int copyfromapp,const int copytoapp){	 int             cur_time;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -