📄 djbkdlg.cpp
字号:
// DjbkDlg.cpp : implementation file
//
#include "stdafx.h"
#include "Wonder.h"
#include "DjbkDlg.h"
#include "FzcsDjbkDlg.h"
#include "DjbkFindDlg.h"
#include "CommSetDlg.h"
#include "DataStruct.h"
#include "DjbkSendChose.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
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 int serialOpen ;
extern CDjbkData DjbkBL;
extern fdlx FDLH;
extern zslx ZXLH;
extern char back[];
extern int DjbSendChose ;
extern HANDLE hDjbkFile;
extern CFile DjbkFile;
extern CFile YjbkFile;
/////////////////////////////////////////////////////////////////////////////
// CDjbkDlg dialog
CDjbkDlg::CDjbkDlg(CWnd* pParent /*=NULL*/)
: CDialog(CDjbkDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CDjbkDlg)
m_Djbk_sJBH = _T("");
m_Djbk_sCCBH = _T("");
m_Djbk_sJXFS = _T("");
m_Djbk_sPTBB = _T("");
m_Djbk_sJDY = _T("");
m_Djbk_sDLJR = _T("");
m_Djbk_sDBXH = _T("");
m_Djbk_sDATE = _T("");
m_Djbk_sCTBB = _T("");
m_Djbk_fDBCS = 0.0f;
m_Djbk_fEDDL = 0.0f;
m_Djbk_fEDDY = 0.0f;
m_Djbk_iJBQS = 0;
m_Djbk_fJDDJ = 0.0f;
m_Djbk_iBL = 0;
//}}AFX_DATA_INIT
}
void CDjbkDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDjbkDlg)
DDX_Text(pDX, IDC_DJBKDLG_EDT_JBH, m_Djbk_sJBH);
DDX_Text(pDX, IDC_DJBKDLG_EDT_CCBH, m_Djbk_sCCBH);
DDX_CBString(pDX, IDC_DJBKDLG_CBX_JXFS, m_Djbk_sJXFS);
DDX_CBString(pDX, IDC_DJBKDLG_CBX_PTBB, m_Djbk_sPTBB);
DDX_CBString(pDX, IDC_DJBKDLG_CBX_JDY, m_Djbk_sJDY);
DDX_CBString(pDX, IDC_DJBKDLG_CBX_DLJR, m_Djbk_sDLJR);
DDX_CBString(pDX, IDC_DJBKDLG_CBX_DBXH, m_Djbk_sDBXH);
DDX_CBString(pDX, IDC_DJBKDLG_CBX_DATE, m_Djbk_sDATE);
DDX_CBString(pDX, IDC_DJBKDLG_CBX_CTBB, m_Djbk_sCTBB);
DDX_Text(pDX, IDC_DJBKDLG_EDT_DBCS, m_Djbk_fDBCS);
DDX_Text(pDX, IDC_DJBKDLG_EDT_EDDL, m_Djbk_fEDDL);
DDX_Text(pDX, IDC_DJBKDLG_EDT_EDDY, m_Djbk_fEDDY);
DDX_Text(pDX, IDC_DJBKDLG_EDT_JBQS, m_Djbk_iJBQS);
DDX_Text(pDX, IDC_DJBKDLG_EDT_JDDJ, m_Djbk_fJDDJ);
DDX_Text(pDX, IDC_DJBKDLG_EDT_BL, m_Djbk_iBL);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDjbkDlg, CDialog)
//{{AFX_MSG_MAP(CDjbkDlg)
ON_BN_CLICKED(IDC_DJBKDLG_BTN_EXIT, OnDjbkdlgBtnExit)
ON_BN_CLICKED(IDC_DJBKDLG_BTN_FZCS, OnDjbkdlgBtnFzcs)
ON_BN_CLICKED(IDC_DJBKDLG_BTN_FIND, OnDjbkdlgBtnFind)
ON_BN_CLICKED(IDC_DJBKDLG_BTN_TO203, OnDjbkdlgBtnTo203)
ON_BN_CLICKED(IDC_DJBKDLG_BTN_FROMPC, OnDjbkdlgBtnFrompc)
ON_BN_CLICKED(IDC_DJBKDLG_BTN_ADD, OnDjbkdlgBtnAdd)
ON_BN_CLICKED(IDC_DJBKDLG_BTN_UP, OnDjbkdlgBtnUp)
ON_BN_CLICKED(IDC_DJBKDLG_BTN_DEL, OnDjbkdlgBtnDel)
ON_BN_CLICKED(IDC_DJBKDLG_BTN_DOWN, OnDjbkdlgBtnDown)
ON_WM_CTLCOLOR()
ON_BN_CLICKED(IDC_DJBKDLG_BTN_BREAK, OnDjbkdlgBtnBreak)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDjbkDlg message handlers
void CDjbkDlg::OnDjbkdlgBtnExit()
{
// TODO: Add your control notification handler code here
//保存数据至文件
DWORD dwByteWrite=0,dwByteWriteJBH=0;
//if((MessageBox(_T("表库已更新,是否保存?"),_T("保存?"),MB_OKCANCEL))==IDOK)
{
CloseHandle(hDjbkFile);
DeleteFile(_T("\\My Documents\\djbk.dat"));
//create
hDjbkFile=CreateFile(
DJBKPATH,
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_ALWAYS,
FILE_ATTRIBUTE_HIDDEN,
NULL);
if(hDjbkFile==INVALID_HANDLE_VALUE)
{
AfxMessageBox(_T("保存失败!"));
CloseHandle(hDjbkFile);
return ;
}
do{
for(int i=0;i<DjbkTotal;i++)
{
WriteFile(hDjbkFile,DjbkData[i].azdw ,25,&dwByteWrite,NULL);
WriteFile(hDjbkFile,DjbkData[i].azdz ,25,&dwByteWrite,NULL);
WriteFile(hDjbkFile,DjbkData[i].bl ,25,&dwByteWrite,NULL);
WriteFile(hDjbkFile,DjbkData[i].bwdh ,25,&dwByteWrite,NULL);
WriteFile(hDjbkFile,DjbkData[i].ccbh ,25,&dwByteWrite,NULL);
WriteFile(hDjbkFile,DjbkData[i].ccrq ,25,&dwByteWrite,NULL);
WriteFile(hDjbkFile,DjbkData[i].CT ,25,&dwByteWrite,NULL);
WriteFile(hDjbkFile,DjbkData[i].dbcs ,25,&dwByteWrite,NULL);
WriteFile(hDjbkFile,DjbkData[i].dbxh ,25,&dwByteWrite,NULL);
WriteFile(hDjbkFile,DjbkData[i].dljr ,25,&dwByteWrite,NULL);
WriteFile(hDjbkFile,DjbkData[i].eddl ,25,&dwByteWrite,NULL);
WriteFile(hDjbkFile,DjbkData[i].eddy ,25,&dwByteWrite,NULL);
WriteFile(hDjbkFile,DjbkData[i].jbh ,25,&dwByteWriteJBH,NULL);
WriteFile(hDjbkFile,DjbkData[i].jbqs ,25,&dwByteWrite,NULL);
WriteFile(hDjbkFile,DjbkData[i].jbrq ,25,&dwByteWrite,NULL);
WriteFile(hDjbkFile,DjbkData[i].jddj ,25,&dwByteWrite,NULL);
WriteFile(hDjbkFile,DjbkData[i].jdy ,25,&dwByteWrite,NULL);
WriteFile(hDjbkFile,DjbkData[i].jxfs ,25,&dwByteWrite,NULL);
WriteFile(hDjbkFile,DjbkData[i].PT ,25,&dwByteWrite,NULL);
WriteFile(hDjbkFile,DjbkData[i].scbh ,25,&dwByteWrite,NULL);
WriteFile(hDjbkFile,DjbkData[i].sccj ,25,&dwByteWrite,NULL);
WriteFile(hDjbkFile,DjbkData[i].shy ,25,&dwByteWrite,NULL);
WriteFile(hDjbkFile,DjbkData[i].tzbh ,25,&dwByteWrite,NULL);
}
if(i==DjbkTotal)break;
}while(dwByteWriteJBH);
}
CloseHandle(hDjbkFile);
CDialog::OnCancel();
}
void CDjbkDlg::OnDjbkdlgBtnFzcs()
{
// TODO: Add your control notification handler code here
CFzcsDjbkDlg dlg;
dlg.m_bFullScreen = FALSE;
dlg.DoModal();
}
void CDjbkDlg::OnDjbkdlgBtnFind()
{
// TODO: Add your control notificati2n handler code here
UpdateData(TRUE);
char tempJBH[26]="";
WideCharToMultiByte(CP_ACP, 0, m_Djbk_sJBH, -1, tempJBH, 25, NULL, NULL);
if(m_Djbk_sJBH==_T(""))
{
AfxMessageBox(_T("请输入局编号 "));
return;
}
int i;
for(i=0;i<DjbkTotal;i++)
{
if(strcmp(DjbkData[i].jbh ,tempJBH)==0)
{
break;
}
}
if(i==DjbkTotal)
{
AfxMessageBox(_T("无匹配局编号表数据!"));
}
else
{
DjbkNum=i;
//显示匹配数据
MultiByteToWideChar(CP_ACP,MB_COMPOSITE,DjbkData[DjbkNum].ccbh ,-1,m_Djbk_sCCBH.GetBuffer(25),25);
MultiByteToWideChar(CP_ACP,MB_COMPOSITE,DjbkData[DjbkNum].CT ,-1,m_Djbk_sCTBB.GetBuffer(25),25);
MultiByteToWideChar(CP_ACP,MB_COMPOSITE,DjbkData[DjbkNum].jbrq ,-1,m_Djbk_sDATE.GetBuffer(25),25);
MultiByteToWideChar(CP_ACP,MB_COMPOSITE,DjbkData[DjbkNum].dbxh ,-1,m_Djbk_sDBXH.GetBuffer(25),25);
MultiByteToWideChar(CP_ACP,MB_COMPOSITE,DjbkData[DjbkNum].dljr ,-1,m_Djbk_sDLJR.GetBuffer(25),25);
MultiByteToWideChar(CP_ACP,MB_COMPOSITE,DjbkData[DjbkNum].jbh ,-1,m_Djbk_sJBH.GetBuffer(25),25);
MultiByteToWideChar(CP_ACP,MB_COMPOSITE,DjbkData[DjbkNum].jdy ,-1,m_Djbk_sJDY.GetBuffer(25),25);
MultiByteToWideChar(CP_ACP,MB_COMPOSITE,DjbkData[DjbkNum].jxfs ,-1,m_Djbk_sJXFS.GetBuffer(25),25);
MultiByteToWideChar(CP_ACP,MB_COMPOSITE,DjbkData[DjbkNum].PT ,-1,m_Djbk_sPTBB.GetBuffer(25),25);
int j;
char ch[4];
float *p;
for(j=0;j<4;j++)ch[j]=DjbkData[DjbkNum].dbcs[j];
p=(float *)ch;
m_Djbk_fDBCS=*p;
for(j=0;j<4;j++)ch[j]=DjbkData[DjbkNum].eddl [j];
p=(float *)ch;
m_Djbk_fEDDL=*p;
for(j=0;j<4;j++)ch[j]=DjbkData[DjbkNum].eddy [j];
p=(float *)ch;
m_Djbk_fEDDY=*p;
for(j=0;j<4;j++)ch[j]=DjbkData[DjbkNum].jddj [j];
p=(float *)ch;
m_Djbk_fJDDJ=*p;
strcpy(ZXLH.ch,DjbkData[DjbkNum].jbqs );
m_Djbk_iJBQS=ZXLH.i ;
strcpy(ZXLH.ch,DjbkData[DjbkNum].bl );
m_Djbk_iBL=ZXLH.i ;
UpdateData(FALSE);
}
return ;
}
void CDjbkDlg::OnDjbkdlgBtnTo203()
{
// TODO: Add your control notification handler code here
//添加当前数据至数组
UpdateData(TRUE);
int i;
WideCharToMultiByte(CP_ACP, 0, m_Djbk_sJBH, -1, back, 25, NULL, NULL);
if(strlen(back))
{
for(i=0;i<DjbkTotal;i++)
{
if(!strcmp(back,DjbkData[i].jbh)){DjbkNum=i;break;}
}
if(i==DjbkTotal)
{
DjbkNum=DjbkTotal++;
}
WideCharToMultiByte(CP_ACP, 0, m_Djbk_sJBH, -1, DjbkData[DjbkNum].jbh, 25, NULL, NULL);//1
WideCharToMultiByte(CP_ACP, 0, m_Djbk_sCCBH, -1, DjbkData[DjbkNum].ccbh , 25, NULL, NULL);//3
WideCharToMultiByte(CP_ACP, 0, m_Djbk_sCTBB, -1, DjbkData[DjbkNum].CT , 15, NULL, NULL);//4
WideCharToMultiByte(CP_ACP, 0, m_Djbk_sDATE, -1, DjbkData[DjbkNum].jbrq, 15, NULL, NULL); //5
WideCharToMultiByte(CP_ACP, 0, m_Djbk_sDBXH, -1, DjbkData[DjbkNum].dbxh , 15, NULL, NULL);//7
WideCharToMultiByte(CP_ACP, 0, m_Djbk_sDLJR, -1, DjbkData[DjbkNum].dljr , 15, NULL, NULL);//8
char *p;
int j;
p=(char *)(&m_Djbk_fDBCS);
for(j=0;j<4;j++)DjbkData[i].dbcs[j]=(p[j]&0xff); //6
p=(char *)(&m_Djbk_fEDDL);
for(j=0;j<4;j++)DjbkData[i].eddl[j]=(p[j]&0xff);//9
p=(char *)(&m_Djbk_fEDDY);
for(j=0;j<4;j++)DjbkData[i].eddy[j]=(p[j]&0xff);//9
p=(char *)(&m_Djbk_fJDDJ);
for(j=0;j<4;j++)DjbkData[i].jddj[j]=(p[j]&0xff);//9
ZXLH.i =m_Djbk_iJBQS;
for(j=0;j<2;j++)DjbkData[i].jbqs[j]=(ZXLH.ch[j]&0xff); //11
ZXLH.i =m_Djbk_iBL;
for(j=0;j<2;j++)DjbkData[i].bl[j]=(ZXLH.ch[j]&0xff); //11
WideCharToMultiByte(CP_ACP, 0, m_Djbk_sJDY, -1, DjbkData[DjbkNum].jdy , 15, NULL, NULL);//13
WideCharToMultiByte(CP_ACP, 0, m_Djbk_sJXFS, -1, DjbkData[DjbkNum].jxfs , 15, NULL, NULL); //14
WideCharToMultiByte(CP_ACP, 0, m_Djbk_sPTBB, -1, DjbkData[DjbkNum].PT , 15, NULL, NULL);//15
strcpy(DjbkData[DjbkNum].sccj,DjbkBL.sccj);
strcpy(DjbkData[DjbkNum].scbh ,DjbkBL.scbh );
strcpy(DjbkData[DjbkNum].ccrq,DjbkBL.ccrq);
strcpy(DjbkData[DjbkNum].azdw,DjbkBL.azdw);
strcpy(DjbkData[DjbkNum].azdz,DjbkBL.azdz);
strcpy(DjbkData[DjbkNum].bwdh,DjbkBL.bwdh);
strcpy(DjbkData[DjbkNum].tzbh,DjbkBL.tzbh);
strcpy(DjbkData[DjbkNum].shy,DjbkBL.shy);
//////////////////////
}
CString s;
s.Format(_T("电表总数: %d"),DjbkTotal);
CEdit* pEdit = (CEdit*)GetDlgItem(IDC_DJBKDLG_COUNT_INFO);
pEdit->SetWindowText(s);
DjbSendChose = 2;
//选择发送数据
if(serialOpen==0)
{
CCommSetDlg dlg;
dlg.m_bFullScreen = FALSE;
dlg.DoModal();
}
if(serialOpen==1)
{
CDjbkSendChose dlg;
dlg.m_bFullScreen = FALSE;
dlg.DoModal();
}
}
void CDjbkDlg::OnDjbkdlgBtnFrompc()
{
// TODO: Add your control notification handler code here
}
BOOL CDjbkDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_hbrush=CreateSolidBrush(RGB(134,171,192));
//数据文件初始化
DWORD dwByteRead,dwByteReadJBH;
hDjbkFile=CreateFile(
DJBKPATH,
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_ALWAYS,
FILE_ATTRIBUTE_HIDDEN,
NULL);
if(hDjbkFile==INVALID_HANDLE_VALUE)
{
AfxMessageBox(_T("创建或打开存储文件失败!"));
CloseHandle(hDjbkFile);
return FALSE;
}
DjbkTotal=0;
do
{
ReadFile(hDjbkFile,DjbkData[DjbkTotal].azdw ,25,&dwByteRead,NULL);
ReadFile(hDjbkFile,DjbkData[DjbkTotal].azdz ,25,&dwByteRead,NULL);
ReadFile(hDjbkFile,DjbkData[DjbkTotal].bl ,25,&dwByteRead,NULL);
ReadFile(hDjbkFile,DjbkData[DjbkTotal].bwdh ,25,&dwByteRead,NULL);
ReadFile(hDjbkFile,DjbkData[DjbkTotal].ccbh ,25,&dwByteRead,NULL);
ReadFile(hDjbkFile,DjbkData[DjbkTotal].ccrq ,25,&dwByteRead,NULL);
ReadFile(hDjbkFile,DjbkData[DjbkTotal].CT ,25,&dwByteRead,NULL);
ReadFile(hDjbkFile,DjbkData[DjbkTotal].dbcs ,25,&dwByteRead,NULL);
ReadFile(hDjbkFile,DjbkData[DjbkTotal].dbxh ,25,&dwByteRead,NULL);
ReadFile(hDjbkFile,DjbkData[DjbkTotal].dljr ,25,&dwByteRead,NULL);
ReadFile(hDjbkFile,DjbkData[DjbkTotal].eddl ,25,&dwByteRead,NULL);
ReadFile(hDjbkFile,DjbkData[DjbkTotal].eddy ,25,&dwByteRead,NULL);
ReadFile(hDjbkFile,DjbkData[DjbkTotal].jbh ,25,&dwByteReadJBH,NULL);
ReadFile(hDjbkFile,DjbkData[DjbkTotal].jbqs ,25,&dwByteRead,NULL);
ReadFile(hDjbkFile,DjbkData[DjbkTotal].jbrq ,25,&dwByteRead,NULL);
ReadFile(hDjbkFile,DjbkData[DjbkTotal].jddj ,25,&dwByteRead,NULL);
ReadFile(hDjbkFile,DjbkData[DjbkTotal].jdy ,25,&dwByteRead,NULL);
ReadFile(hDjbkFile,DjbkData[DjbkTotal].jxfs ,25,&dwByteRead,NULL);
ReadFile(hDjbkFile,DjbkData[DjbkTotal].PT ,25,&dwByteRead,NULL);
ReadFile(hDjbkFile,DjbkData[DjbkTotal].scbh ,25,&dwByteRead,NULL);
ReadFile(hDjbkFile,DjbkData[DjbkTotal].sccj ,25,&dwByteRead,NULL);
ReadFile(hDjbkFile,DjbkData[DjbkTotal].shy ,25,&dwByteRead,NULL);
ReadFile(hDjbkFile,DjbkData[DjbkTotal].tzbh ,25,&dwByteRead,NULL);
if(dwByteReadJBH)DjbkTotal++;
}while(dwByteReadJBH);
DjbkNum=0;
if(DjbkTotal)
{
MultiByteToWideChar(CP_ACP,MB_COMPOSITE,DjbkData[DjbkNum].ccbh ,-1,m_Djbk_sCCBH.GetBuffer(25),25);
MultiByteToWideChar(CP_ACP,MB_COMPOSITE,DjbkData[DjbkNum].CT ,-1,m_Djbk_sCTBB.GetBuffer(25),25);
MultiByteToWideChar(CP_ACP,MB_COMPOSITE,DjbkData[DjbkNum].jbrq ,-1,m_Djbk_sDATE.GetBuffer(25),25);
MultiByteToWideChar(CP_ACP,MB_COMPOSITE,DjbkData[DjbkNum].dbxh ,-1,m_Djbk_sDBXH.GetBuffer(25),25);
MultiByteToWideChar(CP_ACP,MB_COMPOSITE,DjbkData[DjbkNum].dljr ,-1,m_Djbk_sDLJR.GetBuffer(25),25);
MultiByteToWideChar(CP_ACP,MB_COMPOSITE,DjbkData[DjbkNum].jbh ,-1,m_Djbk_sJBH.GetBuffer(25),25);
MultiByteToWideChar(CP_ACP,MB_COMPOSITE,DjbkData[DjbkNum].jdy ,-1,m_Djbk_sJDY.GetBuffer(25),25);
MultiByteToWideChar(CP_ACP,MB_COMPOSITE,DjbkData[DjbkNum].jxfs ,-1,m_Djbk_sJXFS.GetBuffer(25),25);
MultiByteToWideChar(CP_ACP,MB_COMPOSITE,DjbkData[DjbkNum].PT ,-1,m_Djbk_sPTBB.GetBuffer(25),25);
int j;
char ch[4];
float *p;
for(j=0;j<4;j++)ch[j]=DjbkData[DjbkNum].dbcs[j];
p=(float *)ch;
m_Djbk_fDBCS=*p;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -