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

📄 main.cpp

📁 电力系统潮流程序adsfasdfasfd
💻 CPP
字号:
#ifndef _WINDOWS32
#include <unistd.h>
#include <signal.h>
#include <sys/wait.h>
#endif
#include <time.h>

#include "optickettopo.h"

#include <qtextcodec.h> 
#include <qapplication.h>
/*初步考虑,
	(1)每个进程管理一份数据,应用号由-app 参数决定
	(2)研究模式要不要同步运行方式,需要靠参数决定
*/
void ExitProcess(int aa=0)
{
    printf("exit_process1\n");
    exit(0);
}

int main(int argc, char* argv[])
{
#ifndef _WINDOWS32
    sigset(SIGHUP,SIG_IGN);
    sigset(SIGALRM,SIG_IGN);
    sigset(SIGPIPE,SIG_IGN);
    signal(SIGINT,ExitProcess);
    signal(SIGTERM,ExitProcess);
    signal(SIGFPE, SIG_IGN);
#endif

#ifndef _WINDOWS32
#ifdef _ALPHA
    long uval = uswitch(USC_GET, 0);
    uval = uswitch(USC_SET, uval | USW_CORE);
    if (uval < 0)
        perror("uswitch");
#endif
#endif
    //-------edit by jikun------------
	//不加这个导致图形名乱码,无法更新版本号,必须加QApplication
	QTextCodec::setCodecForCStrings ( QTextCodec::codecForName("gbk") );
	QTextCodec::setCodecForTr ( QTextCodec::codecForName("gbk") );
	QTextCodec::setCodecForLocale( QTextCodec::codecForName("gbk") );    
	QApplication app(argc,argv,false);
	app.setDefaultCodec( QTextCodec::codecForName( "GBK" ) );
	//--------end-----------------------------
    bool	set_ctx_flag=false;
 //   CContext::SetContextNo(argc, argv,AC_REALTIME_NO);
    int app_no=AP_SCADA;
    for(int arg = 1; arg < argc - 1; ++arg)
    {
        if(0 == strcmp(argv[arg], "-app"))
        {
           sscanf(argv[arg+1], "%d", &app_no);
        }
        if (!strcmp(argv[arg],"-ctx"))
		{
			set_ctx_flag=true;
			break;
		}
    }
    if (set_ctx_flag)
		CContext::SetContextNo(argc,argv);
	else
		CContext::SetContextNo(argc,argv,AC_REALTIME_NO);

	short ctx_no;
        CContext::GetContextNo(ctx_no);
    if(app_no/1000*1000 != AP_SCADA)
    {//非SCADA族应用
    	app_no = AP_SCADA;
    }
    
    const char* PROC_NAME = "flow_server";
    char proc_alias[32];
    sprintf(proc_alias, "%s%d", PROC_NAME,app_no);
    
     CServicesManage serviceman;
   CSamPub sam_pub;
   if(sam_pub.ProcRegister(app_no, proc_alias, 0) != 1)
    {
        cerr<<"进程注册失败"<<endl;
       exit(0);
    }    vector<int> app_id_vec;

    while(serviceman.GetActiveApps(app_id_vec) < 0 || find(app_id_vec.begin(), app_id_vec.end(), app_no) == app_id_vec.end())
    {//如果本机没有SCADA应用,空转,不退出是为了使得在第一次启动应用时也能正常工作
        //		cerr<<"waiting."<<endl;
      DelayTime(1000);
    }

    //需要发送变化数据报文标志
    COpticketTopo   m_opt_topo(app_no);
    m_opt_topo.Init();
    int duty_tag;//add by xuxianfeng 1201

    while(1)
    {
        if(serviceman.GetActiveApps(app_id_vec) < 0 || find(app_id_vec.begin(), app_id_vec.end(), app_no) == app_id_vec.end())
        {//如果本机SCADA应用停止,退出
 					printf("如果本机SCADA应用停止,退出\n\n");
		     DelayTime(1000);
        }

	duty_tag=serviceman.IsOnDuty(app_no);//add by xuxianfeng 06-1-4
	
	if((m_opt_topo.RecvReport(2000))==1 )//modify by xuxianfeng 1201
	{
		printf("接收到消息,msg_type====%d,duty_tag ===%d\n",m_opt_topo.GetRecvReportType(),duty_tag);

		switch(m_opt_topo.GetRecvReportType())
		{
			case OPTICKET_COPY_MODE_REQ:
			{
			      printf("开始拷贝方式数据\n");
			      m_opt_topo.CopyModeFromSCADA(duty_tag);	
			      break;
			}
			case OPTICKET_DOWN_MODE_REQ:
			{
			        printf("开始下装模型\n");
			        m_opt_topo.DownloadModel(duty_tag);
				break;
			}
			//设备状态变化
                        case OPTICKET_READ_DEV_MODE_REQ:
			{
				m_opt_topo.ReadDevRunMode(duty_tag);
				break;
			}
		        //潮流校核
                        case OPTICKET_FLOW_REQ:
			{
				m_opt_topo.OptFlowVerify(duty_tag);
				break;
			}
			default:
			{
				break;
			}
		}
	}
	DelayTime(200);
   }
}

⌨️ 快捷键说明

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