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

📄 batchmodidlg.cpp

📁 一个串口通信的程序
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	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 + -