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

📄 dxmangerview.cpp

📁 645规约表计抄读设置软件 江苏省复费率表抄读设置 采用VC做得界面
💻 CPP
📖 第 1 页 / 共 5 页
字号:
				        break;
			  case 0x11: 
				        temp.Format("%02X:%02X:%02X",m_bRecData[17],m_bRecData[16],m_bRecData[15]);
						m_edit_time=temp;
						//	UpdateData(TRUE);
				        break;
			  case 0x29: 
				         
				        temp.Empty();
						if(m_bRecData[15]&0x01)
							temp="command lazha\r\n";
				        else
							temp="command hezha\r\n";
						if(m_bRecData[15]&0x02)
							temp+="actual lazha\r\n";
				        else
							temp+="actual hezha\r\n";
						if(m_bRecData[15]&0x04)
							temp+="I>=0.5Ib\r\n";
				        else
							temp+="I<0.5Ib\r\n";
                        m_edit_relay=temp;
					//		UpdateData(FALSE);
						break;
			  case 0x30:
				        temp.Format("%02X%02X%02X",m_bRecData[17],m_bRecData[16],m_bRecData[15]);
						m_edit_const=temp;
					//		UpdateData(TRUE);
				        break;
			  case  0x32:
				        temp.Format("%02X%02X%02X",m_bRecData[17],m_bRecData[16],m_bRecData[15]);
						m_edit_address=temp;
				//			UpdateData(TRUE);
				        break;
			  
			  }
		      break;
    case 0x8e:
		       if(m_bRecData[13]==0xa2)
			   {
				   temp.Format("%02d %02d %02d",m_bRecData[17],m_bRecData[16],m_bRecData[15]);
				   m_edit_protol=temp;
			   }
		      break;
	}
	UpdateData(FALSE);
}



void CDxMangerView::OnBtnReadGonglst() //采集电量
{

}

int CDxMangerView::Bcdtoint(BYTE bcddata)
{
	int result,h,l;
	h=bcddata>>4;
	l=bcddata&0x0f;
	result=h*10+l;
	return result;
}

void CDxMangerView::OnCheckChaobiao()//设置抄表项 
{
	 
}

void CDxMangerView::OnBtnReadMonthsrecord() //采集月份电量负荷记录
{
 
}

void CDxMangerView::ExplainHoursRecData()//解释接收到的整点电量数据
{
 

}

void CDxMangerView::OnReadHoursrecord() //采集整点电量
{
	// TODO: Add your control notification handler code here
 
	
	
}
void CDxMangerView::OnBtnReadparam() //采集参数数据
{
 
  senddata("000000000000", 4, "23");
  Receive645Data();

}


void CDxMangerView::OnBtnReadall() 
{ }

void CDxMangerView::OnBtnClearAll() 
{
	// TODO: Add your control notification handler code here
	
   	
}

void CDxMangerView::OnChangeEdtBiaonumber() 
{

		
}


void CDxMangerView::OnMenuSetbiao() 
{
	// TODO: Add your command handler code here
	 
}

void CDxMangerView::OnBtnbarSetdb() 
{
	 
}

void CDxMangerView::OnMenuSelectCom() 
{
	// TODO: Add your command handler code here
    CSetcommdlg dlg;
	 
  if(dlg.DoModal()==IDOK)
	{
	 com=dlg.comport;
	 cominfo=dlg.bauate+dlg.oddeven+"8,1";
	 initcomm(com);
	}
		
	SaveIni();
}


void CDxMangerView::AddReadStatusItem(CString xuanxiang, CString m_status)
{
    m_lst_readstatus.InsertItem(m_status_count,xuanxiang);
	m_lst_readstatus.SetItemText(m_status_count, 1, m_status);
	m_lst_readstatus.Update(m_status_count);
	m_status_count++;
}

BOOL CDxMangerView::Receive645Data()
{

/*	COleVariant varin;
    BYTE *recchar;
	CString temp;
	BYTE sum=0;
	int recstatus=0;
	int recptr=0;
	int limits=0;
	BeginWaitCursor();
		for(int j=0;j<255;j++)
          m_bRecData[j]=0;
	m_bRecData[0]=0xfe;
	m_bRecData[1]=0xfe;
	m_bRecData[2]=0xfe;
	m_bRecData[3]=0xfe;
	 
	//////////////////////////////////
	do{ 
	 
		Sleep(5);
		if(m_comm.GetInBufferCount()>=1)
		{
			m_comm.SetInputLen(1);
			varin=m_comm.GetInput(); //读COM口
			temp.Empty();
			recchar=(unsigned char *)varin.parray->pvData; 
			
			m_bRecData[recptr]=recchar[0];
			if(recptr<255)//控制缓冲溢出
			switch(m_bRecData[recptr])
			{
			 case 0xfe:
				 if(recptr>14&&recstatus!=0xff)
				 {
					 if(recptr<=14+m_bRecData[13])//如果为校验和位则接收
					 	 recptr++; 
					 else //否则清除接收缓冲
					 {
						 recptr=4;
						 recstatus=0;
					 }
				 }
				 else
				 {
					 recptr=4;
					 recstatus=0;
				 }
				 
				 break;
			 case 0x68:
				 if(recstatus==0||recstatus==0xff)
				 {
					 m_bRecData[4]=0x68;
					 recptr=5;
					 recstatus=1;
				 }
				 else recptr++; 
				 
				 break;
			 case 0x16:  
				 if(recptr>14&&recstatus!=0xff)
				 {
					 if(m_bRecData[13]+14==recptr)//如果为校验和位则接收
						 recptr++;
					 else //否则接收缓冲满
						 recstatus=0xff;
					 
				 }
				 else recptr++;
				 break;
			 default: if(recstatus==1)
						  recptr++;	                      
				 break;                               
			}
		}
		limits++;

		
	}while(recstatus!=0xff&&limits<200);
 
	EndWaitCursor();
	int i;
	CString xx;

	for( i=4;i<recptr-1;i++)
	{
	
	sum+=m_bRecData[i];
	  }
	
	  	if(m_comm.GetPortOpen())m_comm.SetPortOpen(FALSE);

	if(recstatus==0xff&&limits<200&&sum==m_bRecData[recptr-1]&&(m_bRecData[12]&0x80))
		
		return TRUE;
	
	else return FALSE;
*/
	COleVariant varin;
    BYTE *recchar;
	CString temp;
	BYTE sum=0;
	unsigned char length=0;
	unsigned char flag=0;
	int recstatus=0;
	int recptr=0;
	int limits=0;
	int j=0;
//	BeginWaitCursor();

  for( j=0;j<255;j++)
          m_bRecData[j]=0x00;
     
	m_prograss_status.SetRange(0,200);
     Sleep(100);
     flag++;
	 length=0;
	 
     recstatus=0;
	 recptr=0;
	 j=0;
	 ////////////////////////debug here
/*	 if(m_comm.GetInBufferCount()>=1)
		   {
		 m_comm.SetInputLen(1);
	 	 varin=m_comm.GetInput();
		 recchar=(unsigned char *)varin.parray->pvData; 
		 m_bRecData[recptr]=recchar[0];
	 }*/
	//  temp.Format("%02d",m_comm.GetInBufferCount());
 //	 AfxMessageBox(temp);
	 /////////////////////////debug here
 	  while(j<200)
	{
		m_prograss_status.SetPos(j);
		Sleep(5);
		
		if(m_comm.GetInBufferCount()>=1)
		{   
           
		 
            m_comm.SetInputLen(1);
			varin=m_comm.GetInput(); //读COM口
			temp.Empty();
			recchar=(unsigned char *)varin.parray->pvData; 
			m_bRecData[recptr]=recchar[0];
			if((m_bRecData[recptr]==0x68)&&(recstatus==0))
			{
				recptr=0;
                recstatus=1;
			}
		
			  recptr++;
				 
		
			
		 
		}
	
	 	if((recstatus==1)&&(recptr>1))
		{
			if(m_bRecData[1]!=0xf0)
				   j=199;
			if(recptr>3)
			{
				length=m_bRecData[3];
				if(recptr>10)
				{
					if((m_bRecData[4]!=0xbb)||(m_bRecData[5]!=0xbb)||(m_bRecData[6]!=0xbb))
					{
                        length=0;
	 
                        recstatus=0;
	                    recptr=0;
						j=0;
					}
				}
               if(recptr>length+2)
				   j=199;
			}

			
        } 
		j++;
		
	  }   

	/////////////////////////////////////////////////
   

	////////////////////////////////////////////////
    temp.Format("%x %x %x %x %x %x %x %x %x %x %x %x %x %x %x %x %x %x %x %x ",m_bRecData[0],m_bRecData[1],m_bRecData[2],m_bRecData[3],m_bRecData[4],m_bRecData[5],m_bRecData[6],m_bRecData[7],m_bRecData[8]
		,m_bRecData[9],m_bRecData[10],m_bRecData[11],m_bRecData[12],m_bRecData[13],m_bRecData[14],m_bRecData[15],m_bRecData[16],m_bRecData[17]
		,m_bRecData[18],m_bRecData[19]
		);
//	AfxMessageBox(temp);
	//////////////////////////////////
     EndWaitCursor();
	
	
	 if(m_comm.GetPortOpen())
		 m_comm.SetPortOpen(FALSE);

	if(m_bRecData[1]==0xf0)
	{       if((m_bRecData[7]==biaohao[2])&&(m_bRecData[8]==biaohao[1])&&(m_bRecData[9]==biaohao[0]))
	{        // AfxMessageBox("jjj");
	        //temp.Format("%02x %02x %02x",biaohao[0],biaohao[1],biaohao[2]);
            //AfxMessageBox(temp);
		    ExplainRecdata();////////clarify

	 
			UpdateData(FALSE);
	    	return TRUE;
	}
	else
		return FALSE;
	}
	
	else    
	{ 
		      return  FALSE;
	}


  
}

void CDxMangerView::LoadIni()
{
//////////////////////////////取当前应用程序路径//////////
	TCHAR  apppath[MAX_PATH];
	TCHAR  sdrive[_MAX_DRIVE];
	TCHAR sdir[_MAX_DIR];
	TCHAR sext[_MAX_EXT];
	TCHAR sname[MAX_PATH];
    ::GetModuleFileName(NULL,apppath,MAX_PATH);
    ::_tsplitpath(apppath,sdrive,sdir,sname,sext);
    CString inifilename;
    inifilename=CString(sdrive)+CString(sdir)+CString(sname)+".INI";
    //AfxMessageBox(inifilename);// to debug
///////////////////////////////////////////////////////////
/////////////////////////////////
/*
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"默认文件类型(*.ini)|*.ini|所有文件类型|*.*|",NULL);
  if(dlg.DoModal()==IDOK)  
  {    
     inifilename=dlg.GetPathName();
	 
  }
  */
//////////////////////////////
  //UpdateData(TRUE);
 char temp[20];
 	GetPrivateProfileString("DB305","biaohao","000001",temp,20,inifilename);
    m_targetaddress=temp;
	m_edit_biaoid=temp;
	GetPrivateProfileString("DB305","com","000001",temp,20,inifilename);
    cominfo=temp;
    GetPrivateProfileString("DB305","relayf","000001",temp,20,inifilename);
    
	switch(temp[0])
	{
	case '0':
		     relayfalg=0;
			 break;
	case '1':relayfalg=1;
		     break;
	}
	GetPrivateProfileString("DB305","relayn","000001",temp,20,inifilename);
    switch(temp[0])
	{
	case '0':
		     relaynumber=0;
			 break;
	case '1':relaynumber=1;

		     break;
    case '2':
		     relaynumber=2;
			 break;
	case '3':relaynumber=3;

		     break;
	case '4':
		     relaynumber=4;
			 break;
	case '5':relaynumber=5;

		     break;
	case '6':
		     relaynumber=6;
			 break;
	case '7':relaynumber=7;

		     break;
	case '8':relaynumber=8;

		     break;
	}
	GetPrivateProfileString("DB305","relay1","000001",temp,20,inifilename);
	relay1address=temp;
	GetPrivateProfileString("DB305","relay2","000001",temp,20,inifilename);
	relay2address=temp;
	GetPrivateProfileString("DB305","relay3","000001",temp,20,inifilename);
	relay3address=temp;
	GetPrivateProfileString("DB305","relay4","000001",temp,20,inifilename);
	relay4address=temp;
	GetPrivateProfileString("DB305","relay5","000001",temp,20,inifilename);
	relay5address=temp;
	GetPrivateProfileString("DB305","relay6","000001",temp,20,inifilename);
	relay6address=temp;
	GetPrivateProfileString("DB305","relay7","000001",temp,20,inifilename);
	relay7address=temp;
	GetPrivateProfileString("DB305","relay8","000001",temp,20,inifilename);
	relay8address=temp;
 	//AfxMessageBox(temp); 
	//com=GetPrivateProfileInt("DB305","com",1,inifilename);

⌨️ 快捷键说明

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