📄 optickettopo.cpp.bak
字号:
term.m_vl=p_rc_dev->vlty_id; term.m_nd=p_rc_dev->nd1; otherTVec.push_back(term); blrk_test++; break; } case MENU_RC_TYPE_SC://串联电容 case MENU_RC_TYPE_SR://串联电抗 { kvbrh.m_id=p_rc_dev->dev_id; kvbrh.m_st=p_rc_dev->fac_id; kvbrh.m_vl=p_rc_dev->vlty_id; kvbrh.m_nd_pair[0]=p_rc_dev->nd1; kvbrh.m_nd_pair[1]=p_rc_dev->nd2; otherbrhTVec.push_back(kvbrh); clrk_test++; break; } case MENU_RC_TYPE_DR://分裂电抗 { tridev.m_id=p_rc_dev->dev_id; tridev.m_st=p_rc_dev->fac_id; tridev.m_vl=p_rc_dev->vlty_id; tridev.m_nd_arr[0]=p_rc_dev->nd1; tridev.m_nd_arr[1]=p_rc_dev->nd2; tridev.m_nd_arr[2]=p_rc_dev->nd3; trindTVect.push_back(tridev); fldk_test++; break; } default: { break; } } } // for(i=0;i<alldev.m_zdVec.size();i++) // {//终端设备:PT、CT等// term.m_id=alldev.m_zdVec[i].dev_id;// term.m_st=alldev.m_zdVec[i].fac_id;// term.m_vl=alldev.m_zdVec[i].vlty_id;// term.m_nd=alldev.m_zdVec[i].nd1;// otherTVec.push_back(term); // } if(gnTVec.size() > 0) { allDev_T.m_gn_sec.first = &gnTVec[0]; allDev_T.m_gn_sec.second = &gnTVec[0] + gnTVec.size(); printf("gnTVec.size()==%d\n",gnTVec.size()); } if(ldTVec.size() > 0) { allDev_T.m_ld_sec.first = &ldTVec[0]; allDev_T.m_ld_sec.second = &ldTVec[0]+ldTVec.size(); printf("ldTVec.size()==%d\n",ldTVec.size()); } if(bsTVec.size() > 0) { allDev_T.m_bsbar_sec.first = &bsTVec[0]; allDev_T.m_bsbar_sec.second = &bsTVec[0]+bsTVec.size(); printf("bsTVec.size()==%d\n",bsTVec.size()); } if(gddiscrTVec.size() > 0) { allDev_T.m_gddiscr_sec.first = &gddiscrTVec[0]; allDev_T.m_gddiscr_sec.second = &gddiscrTVec[0]+gddiscrTVec.size(); printf("gddiscrTVec.size()==%d\n",gddiscrTVec.size()); } if(otherTVec.size() > 0) { allDev_T.m_other_pterm_sec.first = &otherTVec[0]; allDev_T.m_other_pterm_sec.second = &otherTVec[0] + otherTVec.size(); printf("otherTVec.size()==%d\n",otherTVec.size()); } if(dotTVec.size() > 0) { allDev_T.m_dot_sec.first = &dotTVec[0]; allDev_T.m_dot_sec.second = &dotTVec[0]+dotTVec.size(); printf("dotTVec.size()==%d\n",dotTVec.size()); } if(trwdTVec.size() > 0) { allDev_T.m_trwd_sec.first = &trwdTVec[0]; allDev_T.m_trwd_sec.second = &trwdTVec[0] + trwdTVec.size(); printf("trwdTVec.size()==%d\n",trwdTVec.size()); } if(brkTVec.size() >0) { allDev_T.m_brk_sec.first=&brkTVec[0]; allDev_T.m_brk_sec.second=&brkTVec[0]+brkTVec.size(); printf("brkTVec.size()==%d\n",brkTVec.size()); } if(discrTVec.size() > 0) { allDev_T.m_discr_sec.first=&discrTVec[0]; allDev_T.m_discr_sec.second=&discrTVec[0]+discrTVec.size(); printf("discrTVec.size()==%d\n",discrTVec.size()); } if(otherbrhTVec.size()>0) { allDev_T.m_other_branch_sec.first=&otherbrhTVec[0]; allDev_T.m_other_branch_sec.second=&otherbrhTVec[0]+otherbrhTVec.size(); printf("otherbrhTVec.size()==%d\n",otherbrhTVec.size()); } if(trindTVect.size()>0) { allDev_T.m_kvtrind_dev_sec.first= &trindTVect[0]; allDev_T.m_kvtrind_dev_sec.second= &trindTVect[0]+trindTVect.size(); printf("trindTVect.size()==%d\n",trindTVect.size()); } SetAcDotPower(); starttime = clock(); g_psntp->UpdateModel(allDev_T); printf("UpdateModel exec time ====================%d s\n",clock()-starttime); SetRunMode(open_dev_vec,close_dev_vec);//初始化运行方式 /*m_buslink_set.clear(); for(vector<KvBranch_T>::iterator pos = brkTVec.begin();pos != brkTVec.end(); ++pos) { CBrkInfo *brkinfo = new CBrkInfo(pos->m_id); int type = brkinfo->IsBypassBrk(); bitset<32> devtypeset(type); if(devtypeset[OPT_SEMA_BUSLINK_BRK-BRK_DEVICE_NO*DB_BASE-1]) { printf("brk=====%d is buslinker!!!!\n",pos->m_id); m_buslink_set.insert(pos->m_id); } }*/ //g_psntp->SetBusLinkBrk(m_buslink_set); gnTVec.clear(); ldTVec.clear(); bsTVec.clear(); gddiscrTVec.clear(); otherTVec.clear(); dotTVec.clear(); trwdTVec.clear(); brkTVec.clear(); discrTVec.clear(); otherbrhTVec.clear(); trindTVect.clear(); FreeDevice(alldev); return 1;}int COpticketTopo::SetRunMode(vector<int> &open_dev_vec,vector<int> &close_dev_vec,bool update_mode)//设定初始的运行方式{ vector<DevType_T> m_openDev; vector<DevType_T> m_closeDev; InsertDev(close_dev_vec,m_closeDev); InsertDev(open_dev_vec,m_openDev); if(!m_closeDev.empty()) { g_psntp->ResetCbOpen(m_closeDev,update_mode); } if(!m_openDev.empty()) { g_psntp->SetCbOpen(m_openDev,update_mode); } return 1;}int COpticketTopo::ReadDevice(AllDeviceStru &alldev)//读取所有设备信息{//OK int i; //printf("CALL ReadDevice BEGIN\n"); FreeDevice(alldev); GetAllRec<ODB::CTableOp>(g_app_no, BRK_DEVICE_NO, BRK_DEVICE_FIELDS, alldev.m_brkVec); //printf("alldev.m_brkVec.size()==%d\n",alldev.m_brkVec.size()); GetAllRec<ODB::CTableOp>(g_app_no, DISCR_DEVICE_NO, DISCR_DEVICE_FIELDS, alldev.m_discrVec); //printf("alldev.m_discrVec.size()==%d\n",alldev.m_discrVec.size()); GetAllRec<ODB::CTableOp>(g_app_no, GDDISCR_DEVICE_NO, GDDISCR_DEVICE_FIELDS, alldev.m_gddiscrVec); //printf("alldev.m_gddiscrVec.size()==%d\n",alldev.m_gddiscrVec.size()); GetAllRec<ODB::CTableOp>(g_app_no, BS_DEVICE_NO, BS_DEVICE_FIELDS, alldev.m_bsVec); //printf("alldev.m_bsVec.size()==%d\n",alldev.m_bsVec.size()); GetAllRec<ODB::CTableOp>(g_app_no, GN_DEVICE_NO, GN_DEVICE_FIELDS, alldev.m_gnVec); //printf("alldev.m_gnVec.size()==%d\n",alldev.m_gnVec.size()); GetAllRec<ODB::CTableOp>(g_app_no, LD_DEVICE_NO, LD_DEVICE_FIELDS, alldev.m_ldVec); //printf("alldev.m_ldVec.size()==%d\n",alldev.m_ldVec.size()); GetAllRec<ODB::CTableOp>(g_app_no, ACLN_DOT_NO, ACLN_DOT_FIELDS, alldev.m_dotVec); GetAllRec<ODB::CTableOp>(g_app_no, ACLN_DEVICE_NO, ACLN_DEVICE_FIELDS, alldev.m_aclnVec); //printf("alldev.m_dotVec.size()==%d\n",alldev.m_dotVec.size()); //add by xuxianfeng.如果交流线段的节点号是-1,人工给它们编个号。否则拓扑时认为它们是一个点。 for(i=0;i<alldev.m_dotVec.size();i++) { if(alldev.m_dotVec[i].nd1==-1) { alldev.m_dotVec[i].nd1=i; } } //end add GetAllRec<ODB::CTableOp>(g_app_no, RC_DEVICE_NO, RC_DEVICE_FIELDS, alldev.m_rcVec); //printf("alldev.m_rcVec.size()==%d\n",alldev.m_rcVec.size()); GetAllRec<ODB::CTableOp>(g_app_no, TRWD_DEVICE_NO, TRWD_DEVICE_FIELDS, alldev.m_trwdVec); //printf("alldev.m_trwdVec.size()==%d\n",alldev.m_trwdVec.size()); int ret=GetAllRec<ODB::CTableOp>(g_app_no, TERMINAL_DEVICE_NO, ZD_DEVICE_FIELDS, alldev.m_zdVec);//add by xuxianfeng 06-1-9 //printf("***************ret=================%d\n",ret); //printf("CALL ReadDevice END\n"); return 1;}int COpticketTopo::FreeDevice(AllDeviceStru &alldev)//读取所有设备信息{ alldev.m_brkVec.clear(); alldev.m_discrVec.clear(); alldev.m_gddiscrVec.clear(); alldev.m_bsVec.clear(); alldev.m_gnVec.clear(); alldev.m_ldVec.clear(); alldev.m_dotVec.clear(); alldev.m_rcVec.clear(); alldev.m_trwdVec.clear(); alldev.m_zdVec.clear(); return 1;}int COpticketTopo::GetYxValue(int dev_id){//OK YxValueStruct yx; if(FindByKey<ODB::CTableOp,YxValueStruct>(g_app_no,dev_id/DB_BASE,dev_id,"yx_value,stat",yx)>=0) { //printf("dev_id ==%d,yx_value==%d\n",dev_id,yx.yx_value); return yx.yx_value; } return -1;}void COpticketTopo::SetAppNo(int app){ g_app_no=app;}int COpticketTopo::GetAppNo(){ return g_app_no;} int COpticketTopo::RecvReport(int time){ // printf("开始收消息!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"); int retcode=m_optTopoBus->RecvMessage(&m_RecvMsgHeader, m_BufBase); // printf("retcode================%d!!!!!!!!!!!!!!!!\n",retcode); return retcode; }int COpticketTopo::SendToChannel(int channel_id){ int retcode; if(m_SendMsgBuf!=NULL) { retcode=m_optTopoBus->SendMessageToChannel(m_SendMsgBuf,m_SendMsgType,m_SendMsgLen,channel_id); delete [] m_SendMsgBuf; m_SendMsgBuf=NULL; } return retcode;}int COpticketTopo::SendToHost(const char *machinename,const char *processname,const char* instancename){ int retcode = -1; if(m_SendMsgBuf!=NULL) { retcode=m_optTopoBus->SendMessageToHost(m_SendMsgBuf,m_SendMsgType,m_SendMsgLen,machinename,processname,instancename); //printf("SendMessageToHost retcode==%d\n",retcode); delete [] m_SendMsgBuf; m_SendMsgBuf=NULL; } return retcode;}int COpticketTopo::GetRecvReportType() { return m_RecvMsgHeader.msg_type; }void COpticketTopo::CopyModeFromSCADA()//从SCADA拷贝方式数据{ TDownloadAppRequest download_app_request; int result = 1; int opt_downmodel_mode = ReadPara("scada/opt_para","opt_downmodel_mode"); printf("m_opt_downmodel_mode========================================%d\n",opt_downmodel_mode); if(opt_downmodel_mode==0) { #ifndef _WINDOWS32 download_app_request.request_id=10003; download_app_request.app_no=g_app_no; download_app_request.model_source=DOWN_APP_MODEL_SOURCE_NONE;// download_app_request.need_mode=DOWN_APP_YES; download_app_request.is_research=DOWN_APP_NO; download_app_request.copy_from_app=DOWN_APP_NO; download_app_request.mode_from_app=AP_SCADA; download_app_request.is_copy_host=DOWN_APP_NO; printf("开始DownloadBase\n"); result=DownloadBase(download_app_request); #else result=SaveModelBase(AP_SCADA,g_app_no); #endif } else {#ifdef _CIMIMPORT TRACE("begin to m_CimDateExg.GetSectionE!!!!!!!!!!!!\n"); int ret_value=m_CimDateExg.GetSectionE(g_app_no); TRACE("end to m_CimDateExg.GetSectionE!!!!!!!!!!!!\n"); if(!ret_value) result=1; else result=0;#endif } if(result) { printf("Call YxValueChange!\n"); YxValueChange(); } }int COpticketTopo::CopyModeFromSCADA(int dutyflag)//从SCADA拷贝方式数据{ TDownloadAppRequest download_app_request; int app_no; AppInfoRpt app; ComResRpt comRes; int result; m_SendMsgType=OPTICKET_COPY_MODE_RES; UN_MARSHAL(app,m_BufBase.GetBufPtr(),m_BufBase.GetLength()); printf("DownloadModel g_app_no==%d\n",app.app_no); app_no=app.app_no; result=1; if(app_no!=g_app_no||g_app_no==AP_SCADA) { printf("应用不对应app_no===%d,g_app_no===%d\n",app_no,g_app_no); result= 0; return RETURN_FAILED; } else { int opt_downmodel_mode = ReadPara("scada/opt_para","opt_downmodel_mode"); printf("m_opt_downmodel_mode========================================%d\n",opt_downmodel_mode); if(opt_downmodel_mode==0) { #ifndef _WINDOWS32 download_app_request.request_id=10003; download_app_request.app_no=g_app_no; download_app_request.model_source=DOWN_APP_MODEL_SOURCE_NONE;// download_app_request.need_mode=DOWN_APP_YES; download_app_request.is_research=DOWN_APP_NO; download_app_request.copy_from_app=DOWN_APP_NO; download_app_request.mode_from_app=AP_SCADA; download_app_request.is_copy_host=DOWN_APP_NO; printf("开始DownloadBase\n"); result=DownloadBase(download_app_request); #else printf("开始SaveModeBase\n"); result=SaveModelBase(AP_SCADA,g_app_no); #endif } else {#ifdef _CIMIMPORT TRACE("begin to m_CimDateExg.GetSectionE!!!!!!!!!!!!\n"); int ret_value=m_CimDateExg.GetSectionE(g_app_no); TRACE("end to m_CimDateExg.GetSectionE!!!!!!!!!!!!\n"); if(!ret_value) result=1; else result=0;#endif } if(result) { printf("Call YxValueChange!\n"); YxValueChange(); } } //完成后应答 if(dutyflag==1) { if(result) { comRes.ret_code=RETURN_SUCCESS; } else { result=RETURN_FAILED;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -