📄 optickettopo.cpp.bak
字号:
{ 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 + -