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

📄 irdlg.cpp

📁 Evc 4.0写的
💻 CPP
📖 第 1 页 / 共 3 页
字号:
   for(i=0;i<18+Len;i++)
	{
		recvbuf[k++]=((Cmd[i])/16<0x0A)?((Cmd[i])/16+'0'):((Cmd[i])/16+'A'-0x0A);
		recvbuf[k++]=(((Cmd[i])&0x0F)<0x0A)?((Cmd[i])&0x0F)+'0':((Cmd[i])&0x0F)+'A'-0x0A;
   }
    recvbuf[k]='\0';
	strSave = (char*)recvbuf;
    AfxMessageBox(strSave);

	wFlag=SendData(Cmd);	

	return wFlag;
}



BOOL CIRDlg::GetParam_Read(unsigned char *DATA,unsigned char *Bs,unsigned char *Bh)
{
	 bool rFlag=FALSE;
  //  Flag=TRUE;

	BYTE Get[255];
	BYTE GetBh[6];

    unsigned char  tt[6];
   // unsigned short tt1[12];

    for(int i=0;i<6;i++) tt[i]=0x99;

	for(i=0;i<255;i++)
	Get[i]='\0';

	dataflag=FALSE;
	int cnt=0;

	do{				
				cnt++;
				if(cnt>2)
				{
				 return FALSE;
				}

				dataflag=FALSE;
				RtnData = Get;
                RtnBh=GetBh;

				UpdateData(TRUE);
				if(m_Bh1!="")
				{
                 ExchangeBh(m_Bh1,tt);
				}
				

				if(!ReadCommand(tt,Bs))
				{
					AfxMessageBox(TEXT("Send data error"));
					return FALSE;
				}
				
				Flag=TRUE;
				WaitForSingleObject(eventGetData.m_hObject,5000);
				if(dataflag)
				{
					dataflag=FALSE;
					Flag=FALSE;
					int rr=0;

					if(dataLength>100)
					{
                     AfxMessageBox(TEXT("Error1 length"));
                     return FALSE;
                    }
					if(ACKFLAG!=0x81)
					{
                     AfxMessageBox(TEXT("Error data length"));
                      return FALSE;
					}

					for(int i=0;i<dataLength;i++)
					{
						DATA[rr++]=Get[2+i];						
					}

                    for(i=0;i<6;i++)
					{
						Bh[i]=GetBh[i];						
					}
                    
					return TRUE;
		
				}
				else
				{	
					return FALSE;
				}
			
		}while(TRUE);
	
	return TRUE;
}

BOOL CIRDlg::GetParam_Write(unsigned char *DATA,unsigned char *Bs,unsigned char *Bh,unsigned char Len,unsigned char nLen)
{
	Flag=FALSE;

	BYTE Get[255];
	BYTE GetBh[6];

    unsigned char  tt[6];

    for(int i=0;i<6;i++) tt[i]=0x99;

	for(i=0;i<255;i++)
	Get[i]='\0';

	dataflag=FALSE;
	int cnt=0;

	do{				
				cnt++;
				if(cnt>2)
				{
				 return FALSE;
				}

				dataflag=FALSE;
				RtnData = Get;
                RtnBh=GetBh;
				
				UpdateData(TRUE);

				if(m_Bh1!="")
				{
                 ExchangeBh(m_Bh1,tt);
                //AfxMessageBox(m_Bh1);
				}
				

				if(!WriteCommand(tt,Bs,DATA,Len,nLen))
				{
					AfxMessageBox(TEXT("Send data error"));
					return FALSE;
				}
				
				Flag=TRUE;
				WaitForSingleObject(eventGetData.m_hObject,1000);
				if(dataflag)
				{
					dataflag=FALSE;
					Flag=FALSE;
					int rr=0;

					
					if(ACKFLAG!=0x84)
					{
                      AfxMessageBox(TEXT("Error data length"));
                      return FALSE;
					}
                    
					return TRUE;
				}
				else
				{	
					return FALSE;
				}
			
		}while(TRUE);
	
	return TRUE;
}

void CIRDlg::ShowRecv(unsigned char *RECV,int Length)
{
	CEdit * pEdit;
	pEdit = (CEdit*)GetDlgItem(IDC_EDIT_RECV);
	BYTE* recvbuf;
	int bufLen=Length;
	recvbuf=new BYTE[bufLen*3+1];
	int k=0;
	CString strOld;
	CString strSave;

	for(int i=0;i<bufLen;i++)
	{
		recvbuf[k++]=((RECV[i])/16<0x0A)?((RECV[i])/16+'0'):((RECV[i])/16+'A'-0x0A);
		recvbuf[k++]=(((RECV[i])&0x0F)<0x0A)?((RECV[i])&0x0F)+'0':((RECV[i])&0x0F)+'A'-0x0A;
		recvbuf[k++]=0x20;
	}
	recvbuf[k]='\0';
	strSave = (char*)recvbuf;
	pEdit->SetWindowText(strSave);
}

BOOL CIRDlg::Connect(void)
{
	if(!Connected)
	{
		if(!m_CSerial->OpenPort(L"COM2:",1200,EVENPARITY,8,ONESTOPBIT))	
		{
			AfxMessageBox(TEXT("OPEN COM ERROR"));
			return FALSE;
		}
		Connected=TRUE;
		if(hThreadProc = CreateThread(NULL,0,ThreadProc,this,0,&dwThreadId))
		{
			return TRUE;
		}
		else
		{
			AfxMessageBox(TEXT("CREATE THREAD ERROR"));
			return FALSE;
		}
	}
	else
		return TRUE;
	
}

BOOL CIRDlg::Disconnect(void)
{
	if(Connected)
	{
		if(m_CSerial->ClosePort())
		{
			Connected=FALSE;
			 if(hThreadProc)
			  {
					TerminateThread(hThreadProc,0);
					CloseHandle(hThreadProc);
			  }
			
			return TRUE;
		}
		else
		{
		   
			return FALSE;
        }
	}
	else
		return TRUE;
	
}

void CIRDlg::OnButtonConnect() 
{
	// TODO: Add your control notification handler code here
	if(!Connect()) AfxMessageBox(TEXT("Open serial port error"));
	
}

void CIRDlg::OnButtonDisconnect() 
{
	// TODO: Add your control notification handler code here
	if(!Disconnect()) AfxMessageBox(TEXT("Close serial port error"));

	//delete [] TEST;
	//TEST=NULL;

    //delete m_CSerial;
    //m_CSerial=NULL;
}

void CIRDlg::OnButtonSend() 
{
	// TODO: Add your control notification handler code here
	BYTE DATA[255];
	int i;
	unsigned char Bs[2];
	unsigned char Bh[6];

	BYTE recvbuf[20];
    
    CEdit * pEdit,*pEdit1,*pEdit2,*pEdit3,*pEdit4;
    CButton *pButton,*pButton1,*pButton2,*pButton3;

	pEdit  = (CEdit*)GetDlgItem(IDC_edtTotal);
    pEdit1 = (CEdit*)GetDlgItem(IDC_edtRate1);
    pEdit2 = (CEdit*)GetDlgItem(IDC_edtRate2);
	pEdit3 = (CEdit*)GetDlgItem(IDC_edtRate3);
	pEdit4 = (CEdit*)GetDlgItem(IDC_edtRate4);

    pButton= (CButton*)GetDlgItem(IDC_RADIO1);
    pButton1= (CButton*)GetDlgItem(IDC_RADIO2);
	pButton2= (CButton*)GetDlgItem(IDC_RADIO3);
	pButton3= (CButton*)GetDlgItem(IDC_RADIO4);

	m_CbTime = _T("");

	m_Total = _T("");
	m_Rate1 = _T("");
	m_Rate2 = _T("");
	m_Rate3 = _T("");
	m_Rate4 = _T("");

	for(i=0;i<255;i++)
		DATA[i]='\0';

     //时间没取 
	  //m_CbTime="2007-07-07 17:00:00";
      CTime CrtTime;      
      char cFormatStr[20]   =   {0};   
      CrtTime = CTime::GetCurrentTime();   
      sprintf(cFormatStr,"%4d-%2d-%2d %2d:%2d:%2d",  CrtTime.GetYear(),CrtTime.GetMonth(),CrtTime.GetDay(),CrtTime.GetHour(),CrtTime.GetMinute(),   
      CrtTime.GetSecond());  
	  
      m_CbTime=(CString)cFormatStr;
      m_CbTime=FormatTime(m_CbTime);

     //  AfxMessageBox(m_CbTime);
      if(!Connect()) AfxMessageBox(TEXT("Open serial port error"));

   if(pButton->GetCheck())
	{
	 Bs[0]=0x90;
	 Bs[1]=0x1f;


	 int k=0;
	 if(GetParam_Read(DATA,Bs,Bh))
	 {
      
	  CString strSave;

      UpdateData(FALSE);

	  k=0;
	  for(i=0;i<6;i++)
	  {
		recvbuf[k++]=((Bh[5-i])/16<0x0A)?((Bh[5-i])/16+'0'):((Bh[5-i])/16+'A'-0x0A);
		recvbuf[k++]=(((Bh[5-i])&0x0F)<0x0A)?((Bh[5-i])&0x0F)+'0':((Bh[5-i])&0x0F)+'A'-0x0A;
	  }
	  recvbuf[k]='\0';
	  strSave = (char*)recvbuf;
      m_Bh=strSave;

      
	  //pEdit4->SetWindowText(strSave);
       k=0;
      for(int i=0;i<4;i++)
	  {
		recvbuf[k++]=((DATA[3-i]-0x33)/16<0x0A)?((DATA[3-i]-0x33)/16+'0'):((DATA[3-i]-0x33)/16+'A'-0x0A);
		recvbuf[k++]=(((DATA[3-i]-0x33)&0x0F)<0x0A)?((DATA[3-i]-0x33)&0x0F)+'0':((DATA[3-i]-0x33)&0x0F)+'A'-0x0A;
		if(i==2) recvbuf[k++]=46;
	  }
	  recvbuf[k]='\0';
	  strSave = (char*)recvbuf;
	  pEdit->SetWindowText(strSave); 

	  k=0;
	  for(i=0;i<4;i++)
	  {
		recvbuf[k++]=((DATA[7-i]-0x33)/16<0x0A)?((DATA[7-i]-0x33)/16+'0'):((DATA[7-i]-0x33)/16+'A'-0x0A);
		recvbuf[k++]=(((DATA[7-i]-0x33)&0x0F)<0x0A)?((DATA[7-i]-0x33)&0x0F)+'0':((DATA[7-i]-0x33)&0x0F)+'A'-0x0A;
		if(i==2) recvbuf[k++]=46;
	  }
	  recvbuf[k]='\0';
	  strSave = (char*)recvbuf;
	  pEdit1->SetWindowText(strSave);
	  
      k=0;
	  for(i=0;i<4;i++)
	  {
		recvbuf[k++]=((DATA[11-i]-0x33)/16<0x0A)?((DATA[11-i]-0x33)/16+'0'):((DATA[11-i]-0x33)/16+'A'-0x0A);
		recvbuf[k++]=(((DATA[11-i]-0x33)&0x0F)<0x0A)?((DATA[11-i]-0x33)&0x0F)+'0':((DATA[11-i]-0x33)&0x0F)+'A'-0x0A;
		if(i==2) recvbuf[k++]=46;
	  }
	  recvbuf[k]='\0';
	  strSave = (char*)recvbuf;
	  pEdit2->SetWindowText(strSave);
	  
	  k=0;
	  for(i=0;i<4;i++)
	  {
		recvbuf[k++]=((DATA[15-i]-0x33)/16<0x0A)?((DATA[15-i]-0x33)/16+'0'):((DATA[15-i]-0x33)/16+'A'-0x0A);
		recvbuf[k++]=(((DATA[15-i]-0x33)&0x0F)<0x0A)?((DATA[15-i]-0x33)&0x0F)+'0':((DATA[15-i]-0x33)&0x0F)+'A'-0x0A;
		if(i==2) recvbuf[k++]=46;
	  }
	  recvbuf[k]='\0';
	  strSave = (char*)recvbuf;
	  pEdit3->SetWindowText(strSave);

	  k=0;
	  for(i=0;i<4;i++)
	  {
		recvbuf[k++]=((DATA[19-i]-0x33)/16<0x0A)?((DATA[19-i]-0x33)/16+'0'):((DATA[19-i]-0x33)/16+'A'-0x0A);
		recvbuf[k++]=(((DATA[19-i]-0x33)&0x0F)<0x0A)?((DATA[19-i]-0x33)&0x0F)+'0':((DATA[19-i]-0x33)&0x0F)+'A'-0x0A;
		if(i==2) recvbuf[k++]=46;
	  }
	  recvbuf[k]='\0';
	  strSave = (char*)recvbuf;
	  pEdit4->SetWindowText(strSave);
	
 
      UpdateData(TRUE);

      CEnergy energyData ;
	  CFile stuFile;
      //FILE * fp;
	  
	  ZeroMemory(&energyData,sizeof(energyData));

	  wcscpy(energyData.Bh,m_Bh);
	  wcscpy(energyData.cbTime,m_CbTime);

	  wcscpy(energyData.eRate1,m_Rate1);
	  wcscpy(energyData.eRate2,m_Rate2);
	  wcscpy(energyData.eRate3,m_Rate3);
      wcscpy(energyData.eRate4,m_Rate4);
	  wcscpy(energyData.eTotal,m_Total);


	  stuFile.Open(ENERGYFILEPATH,CFile::modeRead | CFile::modeWrite);
	  stuFile.SeekToEnd();
	  stuFile.Write(&energyData,sizeof(energyData));
	  stuFile.Close();

	  //fp=fopen("\\ResidentFlash\\cEnergy.dat","wb");
	  //fseek(fp,0,2);
	  //fwrite(&energyData,sizeof(energyData),1,fp);
	  //fclose(fp);

	  //更新内存队列
	 // m_lstEnergy.AddTail(energyData);
	 
	  /*
	        if(!FirstStep())
             	{
	               AfxMessageBox(TEXT("Send 1 error"));
	               delete [] DATA;
	               DATA=NULL;

	               delete [] recvbuf;
	               recvbuf=NULL;

	               return ;
	            }
	 */
	   AfxMessageBox(TEXT("Communication Success!"));
     }
	 else
	 {
      AfxMessageBox(TEXT("Communication error!"));
	 }
}
    
	if(pButton1->GetCheck())//feilv 
	{
     Bs[0]=0xc3;
	 Bs[1]=0x3f;

     CString tt1="";
	 unsigned char tt[24];
     TCHAR ttt[48]={0};

     CFile stuFile;
     int dwRead;

	 if (stuFile.Open(S_XL1FILEPATH,CFile::modeRead))
	 {
		dwRead = stuFile.Read(ttt,96);
		//关闭数据文件
		stuFile.Close();
	 }
	 else  
	 {
        AfxMessageBox(TEXT("Read file error!"));
		stuFile.Close();
		return;
	 }

	 tt1=ttt;
     StrToChar(tt1,tt);
	 
     unsigned char Len,nLen;
     Len=24,nLen=3;

⌨️ 快捷键说明

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