📄 djbksendchose.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 + -