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

📄 dongmodlg.cpp

📁 监视Modbus规约的通讯程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	  AfxMessageBox("发送失败!");
	  return 0;
  }

  int len=0;	byte  receive[500];
  for( i=0;i<30;i++)  receive[i]=0;
   ms="";
   Sleep(1000);
   
  for(int j=0;j<10;j++)
  {
	  
	len=com.Read(receive,500);//接收
	if(len>1) break;
  }
 
	for(i=0;i<len;i++)//////显示接收数据
	{
		ms.Format("%02xH,",receive[i]);
		
		m_receive+=ms;
	}
      
	UpdateData(false);
	if(gnm == 6) return 1;
    if(LC == TRUE) 
		displayLcData(receive);
	else
	displayData(receive);
  return 1;
}

void CDongmoDlg::OnDevnoTs() 
{
   paradlg.m_ParaInput_S="调速器设备号:";
   paradlg.m_ParaInput_I=0;
   if(paradlg.DoModal()!=IDOK)  
	   return;
   int jqno;
   jqno = paradlg.m_ParaInput_I;
   tsqjqno = jqno;
   if(sub0306(jqno,3,0x110,43,3)==0)
   {
	   AfxMessageBox("设置失败!");
	   return;
   }
   tsqjqno = jqno;

}

void CDongmoDlg::OnSetWorkmode() 
{
   paradlg.m_ParaInput_S="调速器运行方式:";
   paradlg.m_ParaInput_I=0;
   if(paradlg.DoModal()!=IDOK)  
	   return;

   int workmode;
   UpdateData(true);
   workmode = paradlg.m_ParaInput_I;
   if(sub0306(m_Jqno,6,0x0080,workmode,3)==0)
	   AfxMessageBox("设置失败!");
}

void CDongmoDlg::OnSetTiaochaxishu() 
{
   paradlg.m_ParaInput_S="调速器调差系数:";
   paradlg.m_ParaInput_I=0;
   if(paradlg.DoModal()!=IDOK)  
	   return;
   int parameter;
   UpdateData(true);
   parameter = paradlg.m_ParaInput_I;
   if(sub0306(m_Jqno,6,0x0043,parameter,3)==0)
	   AfxMessageBox("设置失败!");
}

void CDongmoDlg::OnSetQrsjcs() 
{
   paradlg.m_ParaInput_S="调速器汽容时间常数:";
   paradlg.m_ParaInput_I=0;
   if(paradlg.DoModal()!=IDOK)  
	   return;
   int parameter;
   UpdateData(true);
   parameter = paradlg.m_ParaInput_I;
   if(sub0306(m_Jqno,6,0x00a0,parameter,3)==0)
	   AfxMessageBox("设置失败!");
	
}

void CDongmoDlg::OnSetSchsjcs() 
{
   paradlg.m_ParaInput_S="调速器水锤时间常数:";
   paradlg.m_ParaInput_I=0;
   if(paradlg.DoModal()!=IDOK)  
	   return;
   int parameter;
   UpdateData(true);
   parameter = paradlg.m_ParaInput_I;
   if(sub0306(m_Jqno,6,0x00b6,parameter,3)==0)
	   AfxMessageBox("设置失败!");
	
}

void CDongmoDlg::OnSetYdjsjcs() 
{
   paradlg.m_ParaInput_S="调速器油动机时间常数:";
   paradlg.m_ParaInput_I=0;
   if(paradlg.DoModal()!=IDOK)  
	   return;
   int parameter;
   UpdateData(true);
   parameter = paradlg.m_ParaInput_I;
   if(sub0306(m_Jqno,6,0x01d2,parameter,3)==0)//address:0x01d2,0x01d3
	   AfxMessageBox("设置失败!");	
}

void CDongmoDlg::OnSetSlq() 
{
   paradlg.m_ParaInput_S="调速器失灵区:";
   paradlg.m_ParaInput_I=0;
   if(paradlg.DoModal()!=IDOK)  
	   return;
   int parameter;
   UpdateData(true);
   parameter = paradlg.m_ParaInput_I;
   if(sub0306(m_Jqno,6,0x00b2,parameter,3)==0)
	   AfxMessageBox("设置失败!");
	
}

void CDongmoDlg::OnSetKzkdxz() 
{
   paradlg.m_ParaInput_S="调速器空载开度限制:";
   paradlg.m_ParaInput_I=0;
   if(paradlg.DoModal()!=IDOK)  
	   return;
   int parameter;
   UpdateData(true);
   parameter = paradlg.m_ParaInput_I;
   if(sub0306(m_Jqno,6,0x01d6,parameter,3)==0)//address:0x01d6,0x01d7
	   AfxMessageBox("设置失败!");	
}

void CDongmoDlg::OnSetFzkdxz() 
{
   paradlg.m_ParaInput_S="调速器负载开度限制:";
   paradlg.m_ParaInput_I=0;
   if(paradlg.DoModal()!=IDOK)  
	   return;
   int parameter;
   UpdateData(true);
   parameter = paradlg.m_ParaInput_I;
   if(sub0306(m_Jqno,6,0x01d0,parameter,3)==0)//address:0x01d0,0x01d1
	   AfxMessageBox("设置失败!");	
}

void CDongmoDlg::OnSetRfkxs() 
{
   paradlg.m_ParaInput_S="调速器软反馈系数:";
   paradlg.m_ParaInput_I=0;
   if(paradlg.DoModal()!=IDOK)  
	   return;
   int parameter;
   UpdateData(true);
   parameter = paradlg.m_ParaInput_I;
   if(sub0306(m_Jqno,6,0x00bc,parameter,3)==0)
	   AfxMessageBox("设置失败!");	
}

void CDongmoDlg::OnSetRfksjcs() 
{
   paradlg.m_ParaInput_S="调速器软反馈时间常数:";
   paradlg.m_ParaInput_I=0;
   if(paradlg.DoModal()!=IDOK)  
	   return;
   int parameter;
   UpdateData(true);
   parameter = paradlg.m_ParaInput_I;
   if(sub0306(m_Jqno,6,0x00b7,parameter,3)==0)
	   AfxMessageBox("设置失败!");	
}

void CDongmoDlg::OnGuhua() 
{
	   UpdateData(true);
   if(sub0306(m_Jqno,6,0x4353,0x4748,3)==0)
	   AfxMessageBox("固化参数失败!");	
	
}


void CDongmoDlg::OnButton3() 
{
	UpdateData(true);
	int jqno = m_Jqno;
   if(sub0306(jqno,3,0x110,45,3)==0)
	   AfxMessageBox("读参数失败!");	
}

void CDongmoDlg::displayData(BYTE *buf)
{
//CListBox	m_listDataCtrl;
//CString	m_listData;

	char temp[100];
	int index;
	WORD wTemp, wTemp1;

	m_listDataCtrl.ResetContent();

	m_listDataCtrl.AddString("===============================");
	m_listDataCtrl.AddString("读取调速控制器数据");
	m_listDataCtrl.AddString("===============================");

	index=0x110-0x10D;
	wTemp=(*(buf+index))*256+(*(buf+index+1));
	sprintf(temp," %04XH---%.3f", wTemp,(double)wTemp/10.0);
	m_listDataCtrl.AddString("电枢电流"+(CString)temp);

	index=0x112-0x10D;
	wTemp=(*(buf+index))*256+(*(buf+index+1));
	sprintf(temp," %04XH---%.3f", wTemp, (double)wTemp/1.0);
	m_listDataCtrl.AddString("电枢电压"+(CString)temp);

	index=0x114-0x10D;
	wTemp=(*(buf+index))*256+(*(buf+index+1));
	sprintf(temp," %04XH---%.3f", wTemp, (double)wTemp/300.0);
	m_listDataCtrl.AddString("机组转速"+(CString)temp);

	index=0x116-0x10D;
	wTemp=(*(buf+index))*256+(*(buf+index+1));
	sprintf(temp," %04XH---%.3f", wTemp, (double)wTemp*360/15000.0);
	m_listDataCtrl.AddString("功角"+(CString)temp);

	index=0x118-0x10D;
	wTemp=(*(buf+index))*256+(*(buf+index+1));
	sprintf(temp," %04XH---%.3f", wTemp, (double)wTemp/100.0);
	m_listDataCtrl.AddString("励磁电流"+(CString)temp);

	m_listDataCtrl.AddString("===============================");
	m_listDataCtrl.AddString("===========参数显示============");
	m_listDataCtrl.AddString("===============================");

	index=0x139-0x10D;
	wTemp=*(buf+index);
	index=0x140-0x10D;
	wTemp1=(*(buf+index))*256+(*(buf+index+1));
	sprintf(temp," %02XH---%.3f", wTemp, (double)wTemp*((double)wTemp1)/150000.0);
	m_listDataCtrl.AddString("调差系数"+(CString)temp);

	index=0x137-0x10D;
	wTemp=*(buf+index);
	wTemp1=*(buf+index+1);
	sprintf(temp," %02XH %02XH---%.3f", wTemp,wTemp1,(double)wTemp*0.02f);
	m_listDataCtrl.AddString("汽容时间常数"+(CString)temp);

	index=0x136-0x10D;
	wTemp=*(buf+index);
	wTemp1=*(buf+index+1);
	sprintf(temp," %02XH %02XH---%.3f", wTemp,wTemp1, (double)wTemp*0.08f);
	m_listDataCtrl.AddString("水锤时间常数"+(CString)temp);

	index=0x142-0x10D;
	wTemp=(*(buf+index))*256+(*(buf+index+1));
	sprintf(temp," %04XH---%.3f", wTemp, (double)wTemp*0.04f);
	m_listDataCtrl.AddString("油动机时间常数"+(CString)temp);

	index=0x13A-0x10D;
	wTemp=*(buf+index);
	sprintf(temp," %02XH---%.3f", wTemp, (double)wTemp/150.0);
	m_listDataCtrl.AddString("失灵区"+(CString)temp);

	index=0x11A-0x10D;
	wTemp=(*(buf+index))*256+(*(buf+index+1));
	sprintf(temp," %04XH---%.3f", wTemp, (double)wTemp);
	m_listDataCtrl.AddString("错油门相对位移"+(CString)temp);

	index=0x11E-0x10D;
	wTemp=(*(buf+index))*256+(*(buf+index+1));
	sprintf(temp," %04XH---%.3f", wTemp, (double)wTemp);
	m_listDataCtrl.AddString("油动机相对位移"+(CString)temp);

	index=0x13B-0x10D;
	wTemp=*(buf+index);
	index=0x144-0x10D;
	wTemp1=(*(buf+index))*256+(*(buf+index+1));
	sprintf(temp," %02XH---%.3f", wTemp, (double)wTemp*((double)wTemp1)/(15000.0*32.0));
	m_listDataCtrl.AddString("软反馈系数"+(CString)temp);

	index=0x138-0x10D;
	wTemp=*(buf+index);
	wTemp1=*(buf+index+1);
	sprintf(temp," %02XH---%.3f", wTemp1, (double)wTemp*0.08);
	m_listDataCtrl.AddString("软反馈时间常数"+(CString)temp);

	index=0x144-0x10D;
	wTemp=(*(buf+index))*256+(*(buf+index+1));
	sprintf(temp," %04XH---%.3f", wTemp, (double)wTemp);
	m_listDataCtrl.AddString("空载开度限制"+(CString)temp);

	index=0x140-0x10D;
	wTemp=(*(buf+index))*256+(*(buf+index+1));
	sprintf(temp," %04XH---%.3f", wTemp, (double)wTemp);
	m_listDataCtrl.AddString("负载开度限制"+(CString)temp);
	
	index=0x165-0x10D;
	wTemp=*(buf+index);
	sprintf(temp," %02XH---%.3f", wTemp, (double)wTemp);
	m_listDataCtrl.AddString("运行方式"+(CString)temp);
}

void CDongmoDlg::OnButtonup() 
{
	// TODO: Add your control notification handler code here
	UpdateData(true);
   
    if(sub0306(m_Jqno,6,0x5647,0x2b2b,3)==0)
		 AfxMessageBox("up error!");	
}

void CDongmoDlg::OnButtondown() 
{
	// TODO: Add your control notification handler code here
		UpdateData(true);
   
    if(sub0306(m_Jqno,6,0x5647,0x2d2d,3)==0)
		 AfxMessageBox("down error!");
}

void CDongmoDlg::OnButtonlcread() 
{
	// TODO: Add your control notification handler code here
	UpdateData(true);
	int jqno = m_JqnoLc;
	LC = TRUE;
    if(sub0306(jqno,3,0x110,4,3)==0)
	   AfxMessageBox("励磁读参数失败!");
	LC = FALSE;
}

void CDongmoDlg::displayLcData(BYTE *buf)
{
//CListBox	m_listDataCtrl;
//CString	m_listData;

	char temp[100];
	int index;
	WORD wTemp, wTemp1;

	m_listDataCtrl.ResetContent();

	m_listDataCtrl.AddString("===============================");
	m_listDataCtrl.AddString("读取励磁调节器数据");
	m_listDataCtrl.AddString("===============================");

	index=0x110-0x10D;
	wTemp=(*(buf+index))*256+(*(buf+index+1));
	sprintf(temp," %04XH---%.3f", wTemp,(double)wTemp/100.0);
	m_listDataCtrl.AddString("励磁电流"+(CString)temp);

	index=0x112-0x10D;
	wTemp=(*(buf+index))*256+(*(buf+index+1));
	sprintf(temp," %04XH---%.3f", wTemp, (double)wTemp/10.0);
	m_listDataCtrl.AddString("励磁电压"+(CString)temp);
}

void CDongmoDlg::OnChangeEdit3() 
{
	// TODO: If this is a RICHEDIT control, the control will not
	// send this notification unless you override the CDialog::OnInitDialog()
	// function and call CRichEditCtrl().SetEventMask()
	// with the ENM_CHANGE flag ORed into the mask.
	
	// TODO: Add your control notification handler code here
	
}

void CDongmoDlg::OnChangeEdit2() 
{
	// TODO: If this is a RICHEDIT control, the control will not
	// send this notification unless you override the CDialog::OnInitDialog()
	// function and call CRichEditCtrl().SetEventMask()
	// with the ENM_CHANGE flag ORed into the mask.
	
	// TODO: Add your control notification handler code here
	
}

void CAboutDlg::OnOK() 
{
	// TODO: Add extra validation here
	
	CDialog::OnOK();
}

⌨️ 快捷键说明

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