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

📄 vqcwinview.cpp

📁 电力系统无功自动补偿的操作系统程序
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// vqcwinView.cpp : implementation of the CVqcwinView class
//

#include "stdafx.h"
#include "vqcwin.h"

#include "vqcwinDoc.h"
#include "vqcwinView.h"
#include "dlgViewSoe.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CVqcwinView

IMPLEMENT_DYNCREATE(CVqcwinView, CView)

BEGIN_MESSAGE_MAP(CVqcwinView, CView)
	//{{AFX_MSG_MAP(CVqcwinView)
	ON_WM_PAINT()
	ON_UPDATE_COMMAND_UI(IDM_ZB1MX1, OnUpdateZbMxSelect)
	ON_WM_CREATE()
	ON_WM_TIMER()
	ON_WM_DESTROY()
	ON_COMMAND(IDM_VIEWRECORD, OnViewrecord)
	ON_COMMAND(IDM_ClearData, OnClearData)
	ON_COMMAND(IDM_ManClearLock, OnManClearLock)
	ON_UPDATE_COMMAND_UI(IDM_Fjt, OnUpdateVqcDevice)
	ON_UPDATE_COMMAND_UI(IDM_ZB1MX2, OnUpdateZbMxSelect)
	ON_UPDATE_COMMAND_UI(IDM_ZB2MX1, OnUpdateZbMxSelect)
	ON_UPDATE_COMMAND_UI(IDM_ZB2MX2, OnUpdateZbMxSelect)
	ON_UPDATE_COMMAND_UI(IDM_ZB3MX1, OnUpdateZbMxSelect)
	ON_UPDATE_COMMAND_UI(IDM_ZB3MX2, OnUpdateZbMxSelect)
	ON_UPDATE_COMMAND_UI(IDM_ZB4MX1, OnUpdateZbMxSelect)
	ON_UPDATE_COMMAND_UI(IDM_ZB4MX2, OnUpdateZbMxSelect)
	ON_UPDATE_COMMAND_UI(IDM_ZB5MX1, OnUpdateZbMxSelect)
	ON_UPDATE_COMMAND_UI(IDM_ZB5MX2, OnUpdateZbMxSelect)
	ON_UPDATE_COMMAND_UI(IDM_ZB6MX1, OnUpdateZbMxSelect)
	ON_UPDATE_COMMAND_UI(IDM_ZB6MX2, OnUpdateZbMxSelect)
	ON_UPDATE_COMMAND_UI(IDM_DKQ1, OnUpdateVqcDevice)
	ON_UPDATE_COMMAND_UI(IDM_DKQ2, OnUpdateVqcDevice)
	ON_UPDATE_COMMAND_UI(IDM_DKQ3, OnUpdateVqcDevice)
	ON_UPDATE_COMMAND_UI(IDM_DKQ4, OnUpdateVqcDevice)
	ON_UPDATE_COMMAND_UI(IDM_DKQ5, OnUpdateVqcDevice)
	ON_UPDATE_COMMAND_UI(IDM_DKQ6, OnUpdateVqcDevice)
	ON_UPDATE_COMMAND_UI(IDM_DRQ1, OnUpdateVqcDevice)
	ON_UPDATE_COMMAND_UI(IDM_DRQ2, OnUpdateVqcDevice)
	ON_UPDATE_COMMAND_UI(IDM_DRQ3, OnUpdateVqcDevice)
	ON_UPDATE_COMMAND_UI(IDM_DRQ4, OnUpdateVqcDevice)
	ON_UPDATE_COMMAND_UI(IDM_DRQ5, OnUpdateVqcDevice)
	ON_UPDATE_COMMAND_UI(IDM_DRQ6, OnUpdateVqcDevice)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CVqcwinView construction/destruction

CVqcwinView::CVqcwinView()
{
	// TODO: add construction code here
	VQCDisp = NULL;
}

CVqcwinView::~CVqcwinView()
{
}

BOOL CVqcwinView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CView::PreCreateWindow(cs);
}

void CVqcwinView::DispLockStatusAndFjtAndDrqProc(int sx, int sy, CPaintDC *dc)
{
	char szText[256];
	int ox,oy;
	int i,j;
	CFont  currFont;
	CFont  *pOldFont;
	VQCZB_DBS   *zb;
	VQCMUXI_DBS *mx;

	VQCZB_DBS   *link_zb;
	VQCMUXI_DBS *link_mx;

	currFont.CreateFont(16,8,0,0,
						FW_NORMAL,
						FALSE,FALSE,FALSE,
						ANSI_CHARSET,
						OUT_DEFAULT_PRECIS,
						OUT_DEFAULT_PRECIS,
						DEFAULT_QUALITY,
						DEFAULT_PITCH|FF_MODERN,
						"宋体");
	pOldFont = dc->SelectObject(&currFont);
	zb = &(VQCDisp->ZB[VQCDisp->currDispZbNo]);
	mx = &(VQCDisp->ZB[VQCDisp->currDispZbNo].MX[VQCDisp->currDispMxNo]);

	ox = sx;
	oy = sy;

    wsprintf(szText, "总的VQC状况: 第%d季节; 日/累计动作次数=%d/%d; ",
									VQCDisp->globalDef.currSeasonNo+1,
									VQCDisp->actDayTimes,
									VQCDisp->actTotalTimes);
	if (VQCDisp->lockReasonStatus){
		strcat(szText,"被闭锁!  原因:");
		if (VQCDisp->lockReasonStatus & LOCK_TIMES_OVER) strcat(szText,"超过总的限定动作次数,");
		if (VQCDisp->lockReasonStatus & LOCK_BH)		strcat(szText,"有保护闭锁,");
		if (VQCDisp->lockReasonStatus & LOCK_YX)		strcat(szText,"有遥信闭锁,");
		if (VQCDisp->lockReasonStatus & LOCK_YC)		strcat(szText,"有遥测闭锁,");
		if (VQCDisp->lockReasonStatus & LOCK_REMOTE)	strcat(szText,"远方请求退出,");
		if (VQCDisp->lockReasonStatus & LOCK_LOCAL)	strcat(szText,"就地处于退出");
	}
    dc->TextOut(ox, oy, szText, strlen(szText));
	oy += 20;

	/*?? */
	wsprintf(szText, "当前母线状况: ");
    if (zb->linkZBNum>1)wsprintf(&szText[strlen(szText)], "%d台主变并列运行; ",zb->linkZBNum);
	if (mx->lockReasonStatus){
		strcat(szText,"有闭锁!  原因:");
		if (mx->lockReasonStatus & LOCK_MX_TIMES_OVER)	strcat(szText,"超过总的限定动作次数,");
		if (mx->lockReasonStatus & LOCK_MX_BH)			strcat(szText,"有保护闭锁,");
		if (mx->lockReasonStatus & LOCK_MX_YX)			strcat(szText,"有遥信闭锁,");
		if (mx->lockReasonStatus & LOCK_MX_YC)			strcat(szText,"有遥测闭锁,");
		if (mx->lockReasonStatus & LOCK_MX_ACTING)
			if (zb->adjustNeedLockTime>0)
				wsprintf(&szText[strlen(szText)],"调节中需闭锁%d秒,",zb->adjustNeedLockTime);
			else wsprintf(&szText[strlen(szText)],"相邻VQC调节中,");

		if (mx->lockReasonStatus & LOCK_MX_NOTRUN)		strcat(szText,"没有运行,");
		if (mx->lockReasonStatus & LOCK_MX_STOP)		strcat(szText,"VQC被退出,");
		if (mx->lockReasonStatus & LOCK_MX_NOTLINK)		strcat(szText,"与主变连接断开,");
		if (mx->lockReasonStatus & LOCK_MX_VALUE_OVER)	strcat(szText,"UQ 到达封锁区域,");
		if (mx->lockReasonStatus & LOCK_MX_FORBIDUPU)	strcat(szText,"电压不能上调,");
		if (mx->lockReasonStatus & LOCK_MX_FORBIDDOWNU)	strcat(szText,"电压不能下调,");
	}
	else strcat(szText,"正常!");

	//wsprintf(&szText[strlen(szText)],"   time=%d,",VQCDisp->globalDef.runTime);


    dc->TextOut(ox, oy, szText, strlen(szText));
	oy += 20;

    wsprintf(szText, "%d#主变%d#母线 VQC子模块的可用设备状况:", VQCDisp->currDispZbNo+1,VQCDisp->currDispMxNo+1);
    dc->TextOut(ox, oy, szText, strlen(szText));
	oy += 20;

    strcpy(szText, "设备");
    dc->TextOut(ox, oy, szText, strlen(szText));
    strcpy(szText, "类型");
    dc->TextOut(ox, oy+16, szText, strlen(szText));
	ox += 60;

	strcpy(szText, "日/累");
    dc->TextOut(ox, oy, szText, strlen(szText));
	strcpy(szText, "计动作");
    dc->TextOut(ox, oy+16, szText, strlen(szText));
	ox += 60;

	strcpy(szText, "拒动");
    dc->TextOut(ox, oy, szText, strlen(szText));
	strcpy(szText, "次数");
    dc->TextOut(ox, oy+16, szText, strlen(szText));
	ox += 40;

	strcpy(szText, "闭锁");
    dc->TextOut(ox, oy, szText, strlen(szText));
	strcpy(szText, "状态");
    dc->TextOut(ox, oy+16, szText, strlen(szText));
	ox += 40;

	strcpy(szText, "需恢复");
    dc->TextOut(ox, oy, szText, strlen(szText));
	strcpy(szText, "的时间");
    dc->TextOut(ox, oy+16, szText, strlen(szText));
	ox += 60;

	strcpy(szText, "保护");
    dc->TextOut(ox, oy, szText, strlen(szText));
	strcpy(szText, "状态");
    dc->TextOut(ox, oy+16, szText, strlen(szText));
	ox += 40;

	strcpy(szText, "拒动");
    dc->TextOut(ox, oy, szText, strlen(szText));
	strcpy(szText, "状态");
    dc->TextOut(ox, oy+16, szText, strlen(szText));
	ox += 40;
	
	strcpy(szText, "超出");
    dc->TextOut(ox, oy, szText, strlen(szText));
	strcpy(szText, "次数");
    dc->TextOut(ox, oy+16, szText, strlen(szText));
	ox += 40;

	strcpy(szText, "停用");
    dc->TextOut(ox, oy, szText, strlen(szText));
	strcpy(szText, "状态");
    dc->TextOut(ox, oy+16, szText, strlen(szText));
	ox += 40;

	strcpy(szText, "闭锁");
    dc->TextOut(ox, oy, szText, strlen(szText));
	strcpy(szText, "遥信");
    dc->TextOut(ox, oy+16, szText, strlen(szText));
	ox += 40;

	strcpy(szText, "不参");
    dc->TextOut(ox, oy, szText, strlen(szText));
	strcpy(szText, "与VQC");
    dc->TextOut(ox, oy+16, szText, strlen(szText));
	ox += 50;

	strcpy(szText, "对电压");
    dc->TextOut(ox, oy, szText, strlen(szText));
	strcpy(szText, "影响");
    dc->TextOut(ox+5, oy+16, szText, strlen(szText));
	ox += 50;

	strcpy(szText, "对无功");
    dc->TextOut(ox, oy, szText, strlen(szText));
	strcpy(szText, "影响");
    dc->TextOut(ox+5, oy+16, szText, strlen(szText));
	ox += 70;

	strcpy(szText, "名称及其它状态");  //动作时间,不能合或分等
    dc->TextOut(ox, oy+9, szText, strlen(szText));

	ox = sx;
	oy += 36;
	dc->MoveTo(ox,oy);
	dc->LineTo(ox+900,oy);
	oy += 4;

	if (zb->pFatherVQC->globalDef.DevControlMode!= DEVMODE_ONLY_DRQ){
		//		link_mx = mx->linkMX[i];
		for (i=0;i<zb->linkZBNum;i++){
			link_zb = zb->linkZB[i];

			ox = sx;
			strcpy(szText, "分接头");
			dc->TextOut(ox, oy, szText, strlen(szText));
			ox += 60;

			wsprintf(szText, "%d/%d",link_zb->fjtActDayTimes,link_zb->fjtActTotalTimes);
			dc->TextOut(ox, oy, szText, strlen(szText));
			ox += 60;

			wsprintf(szText, "%d",link_zb->fjtRejectTimes);
			dc->TextOut(ox, oy, szText, strlen(szText));
			ox += 40;
    
			if (link_zb->fjtLockReasonStatus & 0x3fff){
				strcpy(szText, "闭锁");
				dc->TextOut(ox, oy, szText, strlen(szText));
			}
			ox += 40;
    
			if (link_zb->fjtActNeedLockTime>0){
				wsprintf(szText, "%d秒",link_zb->fjtActNeedLockTime);
				dc->TextOut(ox, oy, szText, strlen(szText));
			}
			ox += 60;
	
			if (link_zb->lockReasonStatus & LOCK_ZB_BH){
				strcpy(szText, "闭锁");
				dc->TextOut(ox, oy, szText, strlen(szText));
			}
			ox += 40;
    
			if (link_zb->fjtLockReasonStatus & LOCK_FJT_REJECT){
				strcpy(szText, "闭锁");
				dc->TextOut(ox, oy, szText, strlen(szText));
			}
			ox += 40;
    
			if (link_zb->fjtLockReasonStatus & LOCK_FJT_TIMES_OVER){
				strcpy(szText, "闭锁");
				dc->TextOut(ox, oy, szText, strlen(szText));
			}
			ox += 40;
    
			if (link_zb->lockReasonStatus & LOCK_ZB_NOTRUN){
				strcpy(szText, "闭锁");
				dc->TextOut(ox, oy, szText, strlen(szText));
			}
			ox += 40;
    
			if (link_zb->fjtLockReasonStatus & LOCK_FJT_YX){
				strcpy(szText, "闭锁");
				dc->TextOut(ox, oy, szText, strlen(szText));
			}
			ox += 40;
    
			if (link_zb->fjtLockReasonStatus & LOCK_FJT_MANACT){
				strcpy(szText, " 是");
				dc->TextOut(ox, oy, szText, strlen(szText));
			}
			ox += 50;
    
			sprintf(szText, "%.3f",link_zb->DU);
			dc->TextOut(ox, oy, szText, strlen(szText));
			ox += 50;
    
			sprintf(szText, "%.3f",link_zb->DQ);
			dc->TextOut(ox, oy, szText, strlen(szText));
			ox += 70;
    
			link_zb->FjtYtJTRec.GetName(szText);
			wsprintf(&szText[strlen(szText)], "(yk:%d); ", link_zb->FjtYtJTRec.GetYtObjNo(TRUE));
			if (link_zb->fjtLockReasonStatus & LOCK_FJT_ILOCK){
				strcat(szText,"异常负载!");
			}
			if (link_zb->fjtLockReasonStatus & LOCK_FJT_DWINVALID){
				strcat(szText,"非法档位!");
			}
			if (link_zb->fjtLockReasonStatus & LOCK_FJT_UP){
				strcat(szText,"不能上调!");
			}
			if (link_zb->fjtLockReasonStatus & LOCK_FJT_DOWN){
				strcat(szText,"不能下调!");
			}
			dc->TextOut(ox, oy, szText, strlen(szText));
			ox += 80;

			oy += 20;
		}
	}

	for (i=0;i<mx->linkMXNum;i++){
		link_mx = mx->linkMX[i];
		for (j=0;j<link_mx->DRQNum;j++){
			ox = sx;
			strcpy(szText, "电容器");
			dc->TextOut(ox, oy, szText, strlen(szText));
			ox += 60;

⌨️ 快捷键说明

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