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

📄 vqcwinview.cpp

📁 电力系统无功自动补偿的操作系统程序
💻 CPP
📖 第 1 页 / 共 3 页
字号:
		d2 = (int)((mx->currUseDevForRiseQReduceU->DQ*100)/(mx->Q.currUpLimit - mx->Q.currDownLimit));
	if (d1<5)  d1 = 5;
	if (d1>20) d1 = 20;
	if (d2<7)  d2 = 7;
	if (d2>70) d2 = 70;
    dc->MoveTo(sx+220+d1, sy+50);
	dc->LineTo(sx+220+d1, sy+150);
    dc->MoveTo(sx+340-d2, sy+50);
	dc->LineTo(sx+340-d2, sy+150);
	if (mx->U.zone == ZONE_UP){
		if (mx->Q.zone == ZONE_NORMAL_DOWN){
			p1.x = 220;			p1.y = 50;
			p2.x = p1.x+d1;		p2.y = p1.y+100;
		}
		if (mx->Q.zone == ZONE_NORMAL){
			p1.x = p1.x+d1;		p1.y = 50;
			p2.x = 340-d2;		p2.y = p1.y+100;
		}
		if (mx->Q.zone == ZONE_NORMAL_UP){
			p1.x = 340-d2;		p1.y = 50;
			p2.x = 340;			p2.y = p1.y+100;
		}
	}


	//U偏小,无功线
	d2 = (int)((zb->DQ*100)/(mx->Q.currUpLimit - mx->Q.currDownLimit));
	d1 = d2;
	if (mx->currUseDevForReduceQRiseU != NULL)
		d1 = (int)((mx->currUseDevForReduceQRiseU->DQ*100)/(mx->Q.currUpLimit - mx->Q.currDownLimit));
	if (d2<5)  d2 = 5;
	if (d2>20) d2 = 20;
	if (d1<7)  d1 = 7;
	if (d1>70) d1 = 70;
    dc->MoveTo(sx+220+d1, sy+250);
	dc->LineTo(sx+220+d1, sy+350);
    dc->MoveTo(sx+340-d2, sy+250);
	dc->LineTo(sx+340-d2, sy+350);
	if (mx->U.zone == ZONE_DOWN){
		if (mx->Q.zone == ZONE_NORMAL_DOWN){
			p1.x = 220;			p1.y = 250;
			p2.x = p1.x+d1;		p2.y = p1.y+100;
		}
		if (mx->Q.zone == ZONE_NORMAL){
			p1.x = p1.x+d1;		p1.y = 250;
			p2.x = 340-d2;		p2.y = p1.y+100;
		}
		if (mx->Q.zone == ZONE_NORMAL_UP){
			p1.x = 340-d2;		p1.y = 250;
			p2.x = 340;			p2.y = p1.y+100;
		}
	}

	CBrush hBrush,*oldBrush;
    hBrush.CreateSolidBrush(RGB(0,255,0));
    oldBrush=dc->SelectObject(&hBrush);
    dc->Rectangle(sx+p1.x, sy+p1.y, sx+p2.x, sy+p2.y);
    dc->SelectObject(oldBrush);

//    SetTextColor(hDc,RGB(0,0,0) );
	float tf,tf1;
    tf = mx->U.realValue;
    tf1 = mx->Q.realValue;
	if (VQCDisp->globalDef.bUseCos)
			sprintf(szText, "当前值:U=%.3f; Q=%.3f; cosQ=%.3f", tf, tf1, mx->Q.cosq_realValue);
    else	sprintf(szText, "当前值:U=%.3f; Q=%.3f", tf, tf1);
    dc->TextOut(sx+200, sy+383, szText, lstrlen(szText));

    sprintf(szText, "上限:%.3f", mx->U.currUpLimit);
    dc->TextOut(sx+462, sy+140, szText, lstrlen(szText));

    sprintf(szText, "下限:%.3f", mx->U.currDownLimit);
    dc->TextOut(sx+462, sy+240, szText, lstrlen(szText));

    if (VQCDisp->globalDef.bUseCos){
		sprintf(szText, "cosQ下限:%.3f", mx->Q.cosq_currDownLimit);
		dc->TextOut(sx+320, sy+352, szText, lstrlen(szText));
		sprintf(szText, "   Q上限:%.3f", mx->Q.currUpLimit);
		dc->TextOut(sx+320, sy+368, szText, lstrlen(szText));
	}
	else{
		sprintf(szText, "上限:%.3f", mx->Q.currUpLimit);
		dc->TextOut(sx+320, sy+352, szText, lstrlen(szText));
	}

    if (VQCDisp->globalDef.bUseCos){
		sprintf(szText, "cosQ上限:%.3f", mx->Q.cosq_currUpLimit);
		dc->TextOut(sx+185, sy+352, szText, lstrlen(szText));
		sprintf(szText, "   Q下限:%.3f", mx->Q.currDownLimit);
		dc->TextOut(sx+185, sy+368, szText, lstrlen(szText));
	}
	else{
		sprintf(szText, "下限:%.3f", mx->Q.currDownLimit);
		dc->TextOut(sx+200, sy+352, szText, lstrlen(szText));
	}

	ox = sx+600;
	oy = sy+100;

    wsprintf(szText, "动作限值:%d, 有效采样点:%d", mx->ActWeight, mx->sampleNum);

	if (zb->pFatherVQC->globalDef.DevControlMode!= DEVMODE_ONLY_DRQ){
	    dc->TextOut(ox, oy, szText, lstrlen(szText));
		wsprintf(szText, "请求分接头上调的值:%d,%d", mx->askFjtUpWeight,mx->firstFjtNum);
	    dc->TextOut(ox, oy+20, szText, lstrlen(szText));
		wsprintf(szText, "请求分接头下调的值:%d,%d", mx->askFjtDownWeight,mx->firstFjtNum);
	    dc->TextOut(ox, oy+40, szText, lstrlen(szText));
	}

	BOOL bDrq = TRUE;
	if (mx->currUseDevForRiseQReduceU)
		if (!mx->currUseDevForRiseQReduceU->IsDrq) bDrq = FALSE;
	if (mx->currUseDevForReduceQRiseU)
		if (!mx->currUseDevForReduceQRiseU->IsDrq) bDrq = FALSE;

	if (bDrq){
		wsprintf(szText, "请求投入电容器的动作值:%d,%d", mx->askDrqCloseWeight,mx->firstDrqNum);
		dc->TextOut(ox, oy+60, szText, lstrlen(szText));
	    wsprintf(szText, "请求退出电容器的动作值:%d,%d", mx->askDrqOpenWeight,mx->firstDrqNum);
		dc->TextOut(ox, oy+80, szText, lstrlen(szText));
	}
	else{
		wsprintf(szText, "请求退出电抗器的动作值:%d,%d", mx->askDrqCloseWeight,mx->firstDrqNum);
		dc->TextOut(ox, oy+60, szText, lstrlen(szText));
	    wsprintf(szText, "请求投入电抗器的动作值:%d,%d", mx->askDrqOpenWeight,mx->firstDrqNum);
		dc->TextOut(ox, oy+80, szText, lstrlen(szText));
	}

	oy += 110;
	sprintf(szText, "电压:日累计越上限时间%6.2f,月累计越上限时间%6.2f 小时",
										(float)mx->U.dayOverUpTime/3600.0,
										(float)mx->U.monthOverUpTime/3600.0);
    dc->TextOut(ox, oy, szText, lstrlen(szText));
    sprintf(szText, "    日累计越下限时间%6.2f,月累计越下限时间%6.2f 小时",
										(float)mx->U.dayOverDownTime/3600.0,
										(float)mx->U.monthOverDownTime/3600.0);
    dc->TextOut(ox, oy+20, szText, lstrlen(szText));

    sprintf(szText, "无功:日累计越上限时间%6.2f,月累计越上限时间%6.2f 小时",
										(float)mx->Q.dayOverUpTime/3600.0,
										(float)mx->Q.monthOverUpTime/3600.0);
    dc->TextOut(ox, oy+40, szText, lstrlen(szText));
    sprintf(szText, "    日累计越下限时间%6.2f,月累计越下限时间%6.2f 小时",
										(float)mx->Q.dayOverDownTime/3600.0,
										(float)mx->Q.monthOverDownTime/3600.0);
    dc->TextOut(ox, oy+60, szText, lstrlen(szText));

	dc->SelectObject(pOldFont);
}

/////////////////////////////////////////////////////////////////////////////
// CVqcwinView drawing

void CVqcwinView::OnDraw(CDC* pDC)
{
	CVqcwinDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);

	// TODO: add draw code for native data here
}

/////////////////////////////////////////////////////////////////////////////
// CVqcwinView diagnostics

#ifdef _DEBUG
void CVqcwinView::AssertValid() const
{
	CView::AssertValid();
}

void CVqcwinView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

CVqcwinDoc* CVqcwinView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CVqcwinDoc)));
	return (CVqcwinDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CVqcwinView message handlers

void CVqcwinView::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	
	// TODO: Add your message handler code here
	
	VQCDisp =  pApp->VQCDefine[pApp->currVqcRtuNo];
	if (VQCDisp==NULL){
		dc.TextOut(50,100,"该厂站没有VQC参数定义!");
		return;
	}

	if (!VQCDisp->globalDef.bCanUse) {
		dc.TextOut(50,100,"VQC为手动调节!");
		return;
	}
	DispLockStatusAndFjtAndDrqProc(0,410, &dc);
	DispRunZoneAndActWeightProc(0,0, &dc);
	// Do not call CView::OnPaint() for painting messages
}

void CVqcwinView::OnManClearLock() 
{
	// TODO: Add your command handler code here

	if (IDNO==MessageBox("所有的闭锁信号将被解除,你确定吗?","警告",MB_YESNO)) return;
	WORD	pwa=FJD_ATTR_YKYT;
	CString	csPswdName="";
	if (!FjLibInPassWord(this,&csPswdName,&pwa,"操作员口令"))	return;

	if (VQCDisp)
		if (VQCDisp->globalDef.bCanUse)
			VQCDisp->ClearAllManUnlockProc();
	VQCDisp->SaveParamFileProc(pApp->currVqcRtuNo);
}

void CVqcwinView::OnClearData() 
{
	// TODO: Add your command handler code here

	if (IDNO==MessageBox("将清除所有的动作次数记录和越限时间,并且所有的闭锁信号将被解除,你确定吗?","警告",MB_YESNO)) return;
	WORD	pwa=FJD_ATTR_SYSTEM;
	CString	csPswdName="";
	if (!FjLibInPassWord(this,&csPswdName,&pwa,"维护员口令"))	return;

	if (VQCDisp)
		if (VQCDisp->globalDef.bCanUse){
			VQCDisp->ClearAllManUnlockProc();
			VQCDisp->ClearAllDataRecordProc();
		}
	VQCDisp->SaveParamFileProc(pApp->currVqcRtuNo);
}

void CVqcwinView::OnUpdateZbMxSelect(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	int zbNo,mxNo;
	zbNo = pCmdUI->m_nIndex/2;
	mxNo = pCmdUI->m_nIndex%2;
	
	pCmdUI->Enable(FALSE);
	if (zbNo<VQCDisp->ZBNum)
		if (mxNo < VQCDisp->ZB[zbNo].MXNum) pCmdUI->Enable(TRUE);
}

int CVqcwinView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CView::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	pApp = (CVqcwinApp *) AfxGetApp();

	// TODO: Add your specialized creation code here
	pApp->currVqcRtuNo = 0;
	VQCDisp =  pApp->VQCDefine[pApp->currVqcRtuNo];
	VQCDisp->currDispZbNo = 0;
	VQCDisp->currDispMxNo = 0;
	SetTimer(VQC_TIMER, 1000, NULL);
	return 0;
}

void CVqcwinView::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	VQCDisp =  pApp->VQCDefine[pApp->currVqcRtuNo];
	if (nIDEvent ==VQC_TIMER) {
		for (int i=0;i<pApp->maxPar.numMaxRtu;i++){
			pApp->countTime[i] ++;
			if (pApp->VQCDefine[i]==NULL) continue;
			if (pApp->VQCDefine[i]->globalDef.AdjustPeriodTime <= pApp->countTime[i]){
				pApp->countTime[i] = 0;
				pApp->VQCDefine[i]->TimingProc();
				if (i == pApp->currVqcRtuNo) Invalidate(TRUE);
			}
		}
	}
	CView::OnTimer(nIDEvent);
	ykTrans.DoYkProc();
}

void CVqcwinView::OnDestroy() 
{
	KillTimer(VQC_TIMER);
	for (int i=0;i<pApp->maxPar.numMaxRtu;i++){
		if (pApp->VQCDefine[i]==NULL) continue;
		if (pApp->VQCDefine[i]->globalDef.bCanUse)
		pApp->VQCDefine[i]->SaveParamFileProc(i);
	}
	CView::OnDestroy();
	FjLibSetFjWinHandle(FJD_WIN_ID_FJVQC,NULL);	//FjLibDef.h = 8
	// TODO: Add your message handler code here
}

void CVqcwinView::OnViewrecord() 
{
	// TODO: Add your command handler code here
	dlgViewSoe actSoe;
	actSoe.DoModal();
}


void CVqcwinView::OnTest() 
{
	// TODO: Add your command handler code here
	
	VQCDisp->ZB[VQCDisp->currDispZbNo].MX[VQCDisp->currDispMxNo].DRQ[0].actDayTimes = 10;
	VQCDisp->ZB[VQCDisp->currDispZbNo].MX[VQCDisp->currDispMxNo].DRQ[0].actTotalTimes = 10;
	VQCDisp->ZB[VQCDisp->currDispZbNo].MX[VQCDisp->currDispMxNo].DRQ[1].actDayTimes = 10;
	VQCDisp->ZB[VQCDisp->currDispZbNo].MX[VQCDisp->currDispMxNo].DRQ[1].actTotalTimes = 10;
}

void CVqcwinView::OnUpdateVqcDevice(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	int no;

	pCmdUI->Enable(TRUE);
	if (!VQCDisp->globalDef.bCanUse){
		pCmdUI->Enable(FALSE);
		return;
	}
	no = pCmdUI->m_nIndex;
	if (no==0){
//		if (VQCDisp->globalDef.DevControlMode== DEVMODE_ONLY_DRQ)
//			pCmdUI->Enable(FALSE);
		return;
	}
	no--;
	if (no>=VQC_DRQNUM){
		no -= VQC_DRQNUM;
		if (no>=VQCDisp->ZB[VQCDisp->currDispZbNo].MX[VQCDisp->currDispMxNo].DKQNum)
			pCmdUI->Enable(FALSE);
	}
	else{
		if (no>=VQCDisp->ZB[VQCDisp->currDispZbNo].MX[VQCDisp->currDispMxNo].DRQNum)
			pCmdUI->Enable(FALSE);
	}
}

⌨️ 快捷键说明

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