📄 vqcwinview.cpp
字号:
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 + -