📄 batchmodidlg.cpp
字号:
if(m_bAllowSave==TRUE)
{
switch(type)
{
case 1:
{
deleteyb();
for(int i=0;i<m_aData.GetSize();i++)
{
CString str="";
CStringArray *ar;
ar=m_aData.GetAt(i);
NPYB npyb=new YB();
npyb->ybid=atoi(ar->GetAt(0));
npyb->ybname=ar->GetAt(1);
npyb->ybtype=ar->GetAt(2);
npyb->comport=ar->GetAt(3);
npyb->ybaddr=ar->GetAt(4);
npyb->AnZDD=ar->GetAt(5);
npyb->ybbaud=atoi(ar->GetAt(6));
arrYB.Add(npyb);
}
writeyb();
}
break;
case 2:
{
deletecd();
for(int i=0;i<m_aData.GetSize();i++)
{
CString str="";
CStringArray *ar;
ar=m_aData.GetAt(i);
NPCD npcd=new CD();
npcd->cdid=atoi(ar->GetAt(0));
npcd->cdname=ar->GetAt(1);
npcd->ybid=atoi(ar->GetAt(2));
npcd->chanal=atoi(ar->GetAt(4));
arrCD.Add(npcd);
}
writecd();
}
break;
case 3:
{
deletecs();
for(int i=0;i<m_aData.GetSize();i++)
{
CString str="";
CStringArray *ar;
ar=m_aData.GetAt(i);
NPCS npcs=new CS();
npcs->csid=atoi(ar->GetAt(0));
npcs->ybtype=ar->GetAt(1);
npcs->csname=ar->GetAt(2);
npcs->csdz=ar->GetAt(3);
npcs->cstype=ar->GetAt(4);
arrCS.Add(npcs);
}
writecs();
}
break;
case 4:
{
deletert();
for(int i=0;i<m_aData.GetSize();i++)
{
CString str="";
CStringArray *ar;
ar=m_aData.GetAt(i);
NPRT nprt=new RT();
nprt->rtid=atoi(ar->GetAt(0));
nprt->cdid=atoi(ar->GetAt(1));
nprt->csid=atoi(ar->GetAt(3));
nprt->dw=ar->GetAt(5);
nprt->eanble=ar->GetAt(6)=="启用"?true:false;
nprt->warn_enble=ar->GetAt(7)=="启用"?true:false;
nprt->warn_low=atof(ar->GetAt(8));
nprt->warn_hi=atof(ar->GetAt(9));
nprt->range_low=atof(ar->GetAt(10));
nprt->range_hi=atof(ar->GetAt(11));
nprt->warn=false;
nprt->saving_cycle=atoi(ar->GetAt(12));
for(int xx=0;xx<200;xx++)nprt->hisory[xx]=0;
nprt->hendp=0;
nprt->view=false;
arrRT.Add(nprt);
}
writert();
}
break;
}
}
// if(type!=5)
CDialog::OnOK();
// else
// {
// }
}
void CBatchModiDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
OnOK();
}
void CBatchModiDlg::OnBeforeDeleteDbgrid1(short FAR* Cancel)
{
int oldcol;
oldcol=m_dbgrid.GetCol();
switch(type)
{
case 1: //YB
{
m_dbgrid.SetCol(0);
CString str=m_dbgrid.GetText();
int ybid;
bool found=false;
ybid=atoi(str);
for(int i=0;i<arrCD.GetSize();i++)
{
NPCD npcd=arrCD.GetAt(i);
if(npcd->ybid==ybid)
{
found=true;
break;
}
}
if(found)
{
::AfxMessageBox("不能删除该仪表点");
*Cancel=1;
}
}
break;
case 2: //CD
{
m_dbgrid.SetCol(0);
CString str=m_dbgrid.GetText();
int cdid;
bool found=false;
cdid=atoi(str);
for(int i=0;i<arrRT.GetSize();i++)
{
NPRT nprt=arrRT.GetAt(i);
if(nprt->cdid==cdid)
{
found=true;
break;
}
}
if(found)
{
::AfxMessageBox("不能删除该测点");
*Cancel=1;
}
}
break;
case 3:
{
m_dbgrid.SetCol(0);
CString str=m_dbgrid.GetText();
int csid;
bool found=false;
csid=atoi(str);
for(int i=0;i<arrRT.GetSize();i++)
{
NPRT nprt=arrRT.GetAt(i);
if(nprt->csid==csid)
{
found=true;
break;
}
}
if(found)
{
::AfxMessageBox("不能删除该参数");
*Cancel=1;
}
}
break;
case 4:
break;
default:
break;
}
m_dbgrid.SetCol(oldcol);
}
void CBatchModiDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if(m_dbgrid.m_hWnd)
{
CRect rect,dbrect,staticrect,btnrect1,btnrect2,cbxrect,btnrect3,btnrect4;
this->GetClientRect(&rect);
dbrect=rect;
dbrect.top+=40;
dbrect.left+=2;dbrect.right-=2;dbrect.bottom-=2;
staticrect.top=2;staticrect.left=2;staticrect.right=staticrect.left+40;staticrect.bottom=staticrect.top+21;
cbxrect.top=2;cbxrect.left=2+40+4;cbxrect.right=cbxrect.left+120;cbxrect.bottom=cbxrect.top+21;
btnrect3.top=2;btnrect3.left=2+40+4+120+4;btnrect3.right=btnrect3.left+60;btnrect3.bottom=btnrect3.top+21;
btnrect4.top=2;btnrect4.left=2+40+4+120+4+60+4;btnrect4.right=btnrect4.left+60;btnrect4.bottom=btnrect4.top+21;
btnrect2.top=2;btnrect2.right=rect.right-2; btnrect2.left=btnrect2.right-60;btnrect2.bottom=btnrect2.top+21;
btnrect1.top=2;btnrect1.right=btnrect2.left-4; btnrect1.left=btnrect1.right-60;btnrect1.bottom=btnrect1.top+21;
m_dbgrid.MoveWindow(&dbrect);
CButton * pbtn;
pbtn=(CButton * )this->GetDlgItem(IDOK);
pbtn->MoveWindow(&btnrect1);
pbtn=(CButton * )this->GetDlgItem(IDCANCEL);
pbtn->MoveWindow(&btnrect2);
pbtn=(CButton * )this->GetDlgItem(IDC_DOWNLOAD);
pbtn->MoveWindow(&btnrect3);
pbtn=(CButton * )this->GetDlgItem(IDC_LOAD);
pbtn->MoveWindow(&btnrect4);
CStatic * pstatic;
pstatic=(CStatic *)this->GetDlgItem(IDC_STATIC_CD);
pstatic->MoveWindow(&staticrect);
m_combox.MoveWindow(&cbxrect);
}
}
void CBatchModiDlg::OnAfterInsertDbgrid1()
{
}
void CBatchModiDlg::OnSelendokCombo1()
{
if(type==5)
{
int sel=m_combox.GetCurSel();
if(sel==CB_ERR)return;
int cdid=m_combox.GetItemData(sel);
for(int i=0;i<this->m_aData.GetSize();i++)
{
CStringArray *sa;
sa=(CStringArray *)m_aData.GetAt(i);
sa->RemoveAll();
delete sa;
}
m_aData.RemoveAll();
this->m_iMaxRow=0;
m_dbgrid.Refresh();
}
}
void CBatchModiDlg::OnCancel()
{
// if(type!=5)
CDialog::OnCancel();
// else
// {
// }
}
void CBatchModiDlg::OnDownload()
{
int writenum=0;
for(int i=0;i<m_aData.GetSize();i++)
{
CString str="";
CStringArray *ar;
ar=m_aData.GetAt(i);
int csid;
csid=atoi(ar->GetAt(0));
double value;
value=atof(ar->GetAt(2));
NPYB npyb;
NPCD npcd;
NPCS npcs;
int sel;
sel=m_combox.GetCurSel();
if(sel==CB_ERR)return;
int cdid=m_combox.GetItemData(sel);
for(int j=0;j<arrCD.GetSize();j++)
{
npcd=arrCD.GetAt(j);
if(npcd->cdid==cdid)break;
}
for(j=0;j<arrCS.GetSize();j++)
{
npcs=arrCS.GetAt(j);
if(npcs->csid==csid)break;
}
for(j=0;j<arrYB.GetSize();j++)
{
npyb=arrYB.GetAt(j);
if(npyb->ybid==npcd->ybid)break;
}
memset(&xlfdata[RTCount+i],0,sizeof(xlfdata[RTCount+i]));
strcpy(xlfdata[RTCount+i].cdmc,npcd->cdname);
xlfdata[RTCount+i].comport=atoi(npyb->comport.Mid(3));
int csdz;
sscanf(npcs->csdz,"%X",&csdz);
xlfdata[RTCount+i].csaddr=(npcd->chanal-1)*0x2f+csdz;
int cslx;
if(npcs->cstype=="长整"){cslx=0;xlfdata[RTCount+i].lval=(long)value;}
else if(npcs->cstype=="短整"){cslx=1;xlfdata[RTCount+i].sval=(long)value;}
else if(npcs->cstype=="浮点"){cslx=2;xlfdata[RTCount+i].dval=value;}
else cslx=3;
xlfdata[RTCount+i].cstype=cslx;
int ybdz;
sscanf(npyb->ybaddr,"%X",&ybdz);
xlfdata[RTCount+i].ybaddr=ybdz;
xlfdata[RTCount+i].readwrite=1;
writenum++;
}
ReadWrite_Para(0,writenum);
int count=0;
while(count++<6)
{
bool notallok=false;
for(int i=0;i<writenum;i++)
{
if(xlfdata[RTCount+i].valuestate==0)notallok=true;
}
if(!notallok)break;
Sleep(500);
}
for(i=0;i<m_aData.GetSize();i++)
{
CString str="";
CStringArray *ar;
ar=m_aData.GetAt(i);
if(xlfdata[RTCount+i].valuestate==0)str="无效";
if(xlfdata[RTCount+i].valuestate==-1)str="超时";
if(xlfdata[RTCount+i].valuestate==1)str="成功";
ar->SetAt(3,str);
}
m_dbgrid.Refresh();
}
void CBatchModiDlg::OnLoad()
{
int readnum=0;
for(int i=0;i<m_aData.GetSize();i++)
{
CString str="";
CStringArray *ar;
ar=m_aData.GetAt(i);
int csid;
csid=atoi(ar->GetAt(0));
double value;
value=atof(ar->GetAt(2));
NPYB npyb;
NPCD npcd;
NPCS npcs;
int sel;
sel=m_combox.GetCurSel();
if(sel==CB_ERR)return;
int cdid=m_combox.GetItemData(sel);
for(int j=0;j<arrCD.GetSize();j++)
{
npcd=arrCD.GetAt(j);
if(npcd->cdid==cdid)break;
}
for(j=0;j<arrCS.GetSize();j++)
{
npcs=arrCS.GetAt(j);
if(npcs->csid==csid)break;
}
for(j=0;j<arrYB.GetSize();j++)
{
npyb=arrYB.GetAt(j);
if(npyb->ybid==npcd->ybid)break;
}
memset(&xlfdata[RTCount+i],0,sizeof(xlfdata[RTCount+i]));
strcpy(xlfdata[RTCount+i].cdmc,npcd->cdname);
xlfdata[RTCount+i].comport=atoi(npyb->comport.Mid(3));
int csdz;
sscanf(npcs->csdz,"%X",&csdz);
xlfdata[RTCount+i].csaddr=(npcd->chanal-1)*0x2f+csdz;
int cslx;
if(npcs->cstype=="长整"){cslx=0;xlfdata[RTCount+i].lval=(long)value;}
else if(npcs->cstype=="短整"){cslx=1;xlfdata[RTCount+i].sval=(long)value;}
else if(npcs->cstype=="浮点"){cslx=2;xlfdata[RTCount+i].dval=value;}
else cslx=3;
xlfdata[RTCount+i].cstype=cslx;
int ybdz;
sscanf(npyb->ybaddr,"%X",&ybdz);
xlfdata[RTCount+i].ybaddr=ybdz;
xlfdata[RTCount+i].readwrite=0;
readnum++;
}
ReadWrite_Para(readnum,0);
int count=0;
while(count++<6)
{
bool notallok=false;
for(int i=0;i<readnum;i++)
{
if(xlfdata[RTCount+i].valuestate==0)notallok=true;
}
if(!notallok)break;
Sleep(500);
}
for(i=0;i<m_aData.GetSize();i++)
{
CString str="";
CStringArray *ar;
ar=m_aData.GetAt(i);
ar->SetAt(2,"");
if(xlfdata[RTCount+i].valuestate==0)str="无效";
else if(xlfdata[RTCount+i].valuestate==-1)str="超时";
else if(xlfdata[RTCount+i].valuestate==1)
{
if(xlfdata[RTCount+i].cstype==0)str.Format("%ld",xlfdata[RTCount+i].lval);
else if(xlfdata[RTCount+i].cstype==0)str.Format("%ld",xlfdata[RTCount+i].sval);
else if(xlfdata[RTCount+i].cstype==0)str.Format("%f",xlfdata[RTCount+i].dval);
ar->SetAt(2,str);
str="成功";
}
ar->SetAt(3,str);
}
m_dbgrid.ReBind();
// m_dbgrid.Refresh();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -