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

📄 djbksendchose.cpp

📁 本项目是我工作时候应公司需求开发的 开发工具是EVC++4.0
💻 CPP
字号:
// DjbkSendChose.cpp : implementation file
//

#include "stdafx.h"
#include "Wonder.h"
#include "DjbkSendChose.h"
#include "DataStruct.h"
#include "CESeries.h"
#include "DjbSendingDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


extern int DjbSendChose;
extern CCESeries serial;
extern CDjbkData DjbkData[];
extern int DjbkNum ;
extern int DjbkTotal ;
extern BYTE Data232[];
extern int iCounter;
extern int flg_Djb_hand;
extern int flg_Djb_recOK ;
extern char back[];

/////////////////////////////////////////////////////////////////////////////
// CDjbkSendChose dialog


CDjbkSendChose::CDjbkSendChose(CWnd* pParent /*=NULL*/)
	: CDialog(CDjbkSendChose::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDjbkSendChose)
	//}}AFX_DATA_INIT
}


void CDjbkSendChose::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDjbkSendChose)
	DDX_Control(pDX, IDC_DJB_SEND_CHOSE_PROBAR, m_Sending_ProBar);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDjbkSendChose, CDialog)
	//{{AFX_MSG_MAP(CDjbkSendChose)
	ON_BN_CLICKED(IDC_DJBK_SEND_BTN_EXIT, OnDjbkSendBtnExit)
	ON_BN_CLICKED(IDC_DJBK_SEND_BTN_OK, OnDjbkSendBtnOk)
	ON_BN_CLICKED(IDC_DJBK_SEND_RADIO_DQ, OnDjbkSendRadioDq)
	ON_BN_CLICKED(IDC_DJBK_SEND_RADIO_QB, OnDjbkSendRadioQb)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDjbkSendChose message handlers

void CDjbkSendChose::OnDjbkSendBtnExit() 
{
	// TODO: Add your control notification handler code here
	CDialog::OnCancel();
}

void CDjbkSendChose::OnDjbkSendBtnOk() 
{
	// TODO: Add your control notification handler code here
	
	CString s;
	s.Format (_T("total=%d,num=%d"),
		DjbkTotal,DjbkNum);
//	AfxMessageBox(s);
	//设置控件不可用
	CButton *pBtnSendOK = (CButton*)GetDlgItem(IDC_DJBK_SEND_BTN_OK);
	ASSERT(pBtnSendOK != NULL);
	pBtnSendOK->EnableWindow(FALSE);

	CButton *pBtnSendEXIT = (CButton*)GetDlgItem(IDC_DJBK_SEND_BTN_EXIT);
	ASSERT(pBtnSendEXIT != NULL);
	pBtnSendEXIT->EnableWindow(FALSE);

	CButton *pRadioDQ = (CButton*)GetDlgItem(IDC_DJBK_SEND_RADIO_DQ);
	ASSERT(pRadioDQ != NULL);
	pRadioDQ->EnableWindow(FALSE);

	CButton *pRadioQB = (CButton*)GetDlgItem(IDC_DJBK_SEND_RADIO_QB);
	ASSERT(pRadioQB != NULL);
	pRadioQB->EnableWindow(FALSE);   
	
	m_Sending_ProBar.SetPos(0);
    
	BYTE  buf[SENDBUFLEN]="";
	int Num=0;	
	
if(DjbSendChose==0)
{
	
	for(int i=0;i<RECBUFLEN;i++)	Data232[i]=0;
	for(i=0;i<SENDBUFLEN;i++)buf[i]=0;	
	   
   //发送数据	
   int j=0; 
   buf[j++]=0x41;
   buf[j++]=0x42;
   buf[j++]=0x00;
   buf[j++]=0x07;
   buf[j++]=0x00;
   buf[j++]=0x18;
   buf[j++]=0xa2;
   buf[j++]=0x43;
   if (!serial.WritePort(buf,8))
	{
		AfxMessageBox(_T("写入串口失败"));
		pBtnSendEXIT->EnableWindow(TRUE);
		return;		
	}   

   	while(flg_Djb_hand==0)
	{
	Sleep(20);
	m_Sending_ProBar.SetPos(Num%20);
	Num++;
	
		CString s;
		s.Format(_T("%d"),Num);
		CEdit * pSendNum=(CEdit*)GetDlgItem(IDC_DJBK_SEND_NUM);
		pSendNum->SetWindowText(s);	
	
	
	if(Num>=200)
	{		
		AfxMessageBox(_T("通讯失败,请重试..."));
		for(int i=0;i<RECBUFLEN;i++)
		{
			Data232[i]=0;
		}
		pBtnSendOK->EnableWindow(TRUE);
		pBtnSendEXIT->EnableWindow(TRUE);
		pRadioQB->EnableWindow(TRUE);
		pRadioDQ->EnableWindow(TRUE);
		m_Sending_ProBar.SetPos(0);
	    return;
	}	
	}

	m_Sending_ProBar.SetPos(20);
	flg_Djb_hand=0;


   j=0;
   buf[j++]=0x41;
   buf[j++]=0x42;
   j=4;
   buf[j++]=0x00;
   buf[j++]=0x17;  
   for(i=0;i<25;i++)buf[j++]=DjbkData[DjbkNum].jbh[i];
   for(i=0;i<25;i++)buf[j++]=DjbkData[DjbkNum].ccbh [i];
   for(i=0;i<15;i++)buf[j++]=DjbkData[DjbkNum].jbrq[i];
   for(i=0;i<15;i++)buf[j++]=DjbkData[DjbkNum].dbxh[i];
   for(i=0;i<15;i++)buf[j++]=DjbkData[DjbkNum].jxfs [i];
   for(i=3;i>=0;i--)buf[j++]=DjbkData[DjbkNum].eddy[i];
   for(i=3;i>=0;i--)buf[j++]=DjbkData[DjbkNum].eddl [i];
   for(i=3;i>=0;i--)buf[j++]=DjbkData[DjbkNum].dbcs [i];
   for(i=1;i>=0;i--)buf[j++]=DjbkData[DjbkNum].jbqs [i];
   for(i=3;i>=0;i--)buf[j++]=DjbkData[DjbkNum].jddj [i];
   for(i=0;i<15;i++)buf[j++]=DjbkData[DjbkNum].dljr [i];
   for(i=0;i<15;i++)buf[j++]=DjbkData[DjbkNum].PT [i];
   for(i=0;i<15;i++)buf[j++]=DjbkData[DjbkNum].CT [i];
   for(i=1;i>=0;i--)buf[j++]=DjbkData[DjbkNum].bl [i];
   for(i=0;i<15;i++)buf[j++]=DjbkData[DjbkNum].jdy [i];  
   buf[2]=(j+1)/256;
   buf[3]=(j+1)%256;
    for(i=0;i<j;i++)buf[j]+=buf[i];
   buf[++j]=0x43; 


	if (!serial.WritePort(buf,j+1))
	{
		AfxMessageBox(_T("写入串口失败"));
		pBtnSendEXIT->EnableWindow(TRUE);
		return;		
	}	
	Num=0;
	while(flg_Djb_recOK==0)
	{
	Sleep(20);
	m_Sending_ProBar.SetPos(Num%20);
	Num++;

		CString s;
		s.Format(_T("%d"),Num);
		CEdit * pSendNum=(CEdit*)GetDlgItem(IDC_DJBK_SEND_NUM);
		pSendNum->SetWindowText(s);	
	if(Num>=200)
	{		
		AfxMessageBox(_T("通讯失败,请重试..."));
		for(int i=0;i<RECBUFLEN;i++)
		{
			Data232[i]=0;
		}
		pBtnSendOK->EnableWindow(TRUE);
		pBtnSendEXIT->EnableWindow(TRUE);
		pRadioQB->EnableWindow(TRUE);
		pRadioDQ->EnableWindow(TRUE);
		m_Sending_ProBar.SetPos(0);
	    return;
	}	
	}
	m_Sending_ProBar.SetPos(20);	
	
	flg_Djb_recOK=0;
	flg_Djb_hand=0;
}
else//more
{
	int cnt=0;
	int a=0;
	
	switch(DjbkTotal)
	{
	case 1: a=1;break;
	case 2: a=2;break;
	case 3: a=3;break;
	case 4: a=4;break;
	case 5: a=5;break;
	case 6: a=6;break;
	case 7: a=7;break;
	case 8: a=8;break;
	case 9: a=9;break;
	case 10: a=10;break;
	case 11: a=11;break;
	case 12: a=12;break;
	case 13: a=13;break;
	case 14: a=14;break;
	case 15: a=15;break;
	case 16: a=16;break;
	case 17: a=17;break;
	case 18: a=18;break;
	case 19: a=19;break;
	case 20: a=20;break;
	case 21: a=21;break;
	case 22: a=22;break;
	case 23: a=23;break;
	case 24: a=24;break;
	case 25: a=25;break;
	default: a=DjbkTotal;break;
	}
		if(cnt<=a)
		{	
				for(int i=0;i<RECBUFLEN;i++)Data232[i]=0;
				for(i=0;i<SENDBUFLEN;i++)buf[i]=0;	
						
						
					  
				//发握手	
				int j=0; 
				buf[j++]=0x41;
				buf[j++]=0x42;
				buf[j++]=0x00;
				buf[j++]=0x07;
				buf[j++]=0x00;
				buf[j++]=0x18;
				buf[j++]=0xa2;
				buf[j++]=0x43;
					if (!serial.WritePort(buf,8))
						{
							AfxMessageBox(_T("写入串口失败"));
							pBtnSendEXIT->EnableWindow(TRUE);
							return;		
						}	
				   	while(flg_Djb_hand==0)
						{
							Sleep(20);
							m_Sending_ProBar.SetPos(Num%20);
							Num++;	
							CString s;
		                    s.Format(_T("%d"),Num);
		                    CEdit * pSendNum=(CEdit*)GetDlgItem(IDC_DJBK_SEND_NUM);
		                    pSendNum->SetWindowText(s);	
								if(Num>=200)
									{		
										AfxMessageBox(_T("通讯失败,请重试..."));
										for(int i=0;i<RECBUFLEN;i++)	Data232[i]=0;
										pBtnSendOK->EnableWindow(TRUE);
										pBtnSendEXIT->EnableWindow(TRUE);
										pRadioQB->EnableWindow(TRUE);
										pRadioDQ->EnableWindow(TRUE);
										m_Sending_ProBar.SetPos(0);
										return;
									}	
						}////end while(flg_djb_hand)

		m_Sending_ProBar.SetPos(20);
		flg_Djb_hand=0;
		for(int cnt=0;cnt<a;cnt++)         //发送数据
			{
			   j=0;
				buf[j++]=0x41;
				buf[j++]=0x42;
				j=4;
				buf[j++]=0x00;
				buf[j++]=0x17;  
				for(i=0;i<25;i++)buf[j++]=DjbkData[cnt].jbh[i];
				for(i=0;i<25;i++)buf[j++]=DjbkData[cnt].ccbh [i];
				for(i=0;i<15;i++)buf[j++]=DjbkData[cnt].jbrq[i];
				for(i=0;i<15;i++)buf[j++]=DjbkData[cnt].dbxh[i];
				for(i=0;i<15;i++)buf[j++]=DjbkData[cnt].jxfs [i];
				for(i=3;i>=0;i--)buf[j++]=DjbkData[cnt].eddy[i];
				for(i=3;i>=0;i--)buf[j++]=DjbkData[cnt].eddl [i];
				for(i=3;i>=0;i--)buf[j++]=DjbkData[cnt].dbcs [i];
				for(i=1;i>=0;i--)buf[j++]=DjbkData[cnt].jbqs [i];
				for(i=3;i>=0;i--)buf[j++]=DjbkData[cnt].jddj [i];
				for(i=0;i<15;i++)buf[j++]=DjbkData[cnt].dljr [i];
				for(i=0;i<15;i++)buf[j++]=DjbkData[cnt].PT [i];
				for(i=0;i<15;i++)buf[j++]=DjbkData[cnt].CT [i];
				for(i=1;i>=0;i--)buf[j++]=DjbkData[cnt].bl [i];
				for(i=0;i<15;i++)buf[j++]=DjbkData[cnt].jdy [i];  
				buf[2]=(j+1)/256;
				buf[3]=(j+1)%256;
				for(i=0;i<j;i++)buf[j]+=buf[i];
				buf[++j]=0x43;   
			
				if (!serial.WritePort(buf,j+1))
					{
							AfxMessageBox(_T("写入串口失败"));
							pBtnSendEXIT->EnableWindow(TRUE);
							return;		
					}	
				Num=0;
				while(flg_Djb_recOK==0)
					{
						Sleep(20);
						m_Sending_ProBar.SetPos(Num%20);
						Num++;

						CString s;
		                s.Format(_T("%d"),Num);
		                CEdit * pSendNum=(CEdit*)GetDlgItem(IDC_DJBK_SEND_NUM);
		                pSendNum->SetWindowText(s);	
						if(Num>=200)
							{		
								AfxMessageBox(_T("通讯失败,请重试..."));		
								for(int i=0;i<RECBUFLEN;i++)	Data232[i]=0;				
								pBtnSendOK->EnableWindow(TRUE);
								pBtnSendEXIT->EnableWindow(TRUE);
								pRadioQB->EnableWindow(TRUE);
								pRadioDQ->EnableWindow(TRUE);
								m_Sending_ProBar.SetPos(0);
								return;
							}	
					}//end while(flg_djb_recok)
			for(i=0;i<RECBUFLEN;i++)Data232[i]=0;
			for(i=0;i<SENDBUFLEN;i++)buf[i]=0;
			m_Sending_ProBar.SetPos(20);
			Sleep(1000);
			if(flg_Djb_recOK==0)break;
			flg_Djb_recOK=0;
			}///endfor(cnt++);	
		}//end if 发送
	
} //end else more
	/*
   //发送断开命令
   int j=0; 
   buf[j++]=0x41;
   buf[j++]=0x42;
   buf[j++]=0x00;
   buf[j++]=0x07;
   buf[j++]=0x00;
   buf[j++]=0x1d;
   buf[j++]=0xa7;
   buf[j++]=0x43;
   if (!serial.WritePort(buf,8))
	{
		AfxMessageBox(_T("写入串口失败"));
		pBtnSendEXIT->EnableWindow(TRUE);
		return;		
	}		
	*/
	AfxMessageBox(_T("发送成功!"));
   
	pBtnSendEXIT->EnableWindow(TRUE);	
    return;	

}

void CDjbkSendChose::OnDjbkSendRadioDq() 
{
	// TODO: Add your control notification handler code here
	DjbSendChose = 0;
	CButton *pOK = (CButton*)GetDlgItem(IDC_DJBK_SEND_BTN_OK);
	ASSERT(pOK != NULL);
	pOK->EnableWindow(TRUE);
	
	
}

void CDjbkSendChose::OnDjbkSendRadioQb() 
{
	// TODO: Add your control notification handler code here
	DjbSendChose = 1;	
	CButton *pOK = (CButton*)GetDlgItem(IDC_DJBK_SEND_BTN_OK);
	ASSERT(pOK != NULL);
	pOK->EnableWindow(TRUE);
}

BOOL CDjbkSendChose::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here

	if(DjbSendChose==2)
	{
		CButton *pOK = (CButton*)GetDlgItem(IDC_DJBK_SEND_BTN_OK);
	    ASSERT(pOK != NULL);
	    pOK->EnableWindow(FALSE);
	}
	if(!strlen(back))
	{
		CButton *pRadioDQ = (CButton*)GetDlgItem(IDC_DJBK_SEND_RADIO_DQ);
	    ASSERT(pRadioDQ != NULL);
	    pRadioDQ->EnableWindow(FALSE);
	}
	m_Sending_ProBar.SetRange(0,20);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

⌨️ 快捷键说明

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