📄 high_octane_paticledlg.cpp
字号:
// high_octane_paticleDlg.cpp : implementation file
//
#include "stdafx.h"
#include "high_octane_paticle.h"
#include "high_octane_paticleDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#include <direct.h>
#include <fstream.h>
#include <iostream.h>
#include <string.h>
#include <stdio.h>
#include <math.h>
#include <cstdlib>
#include <cmath>
#include "stdlib.h"
#include "conio.h"
#include <string.h>
#include <iomanip.h>
#include<time.h>
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CHigh_octane_paticleDlg dialog
CHigh_octane_paticleDlg::CHigh_octane_paticleDlg(CWnd* pParent /*=NULL*/)
: CDialog(CHigh_octane_paticleDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CHigh_octane_paticleDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CHigh_octane_paticleDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CHigh_octane_paticleDlg)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CHigh_octane_paticleDlg, CDialog)
//{{AFX_MSG_MAP(CHigh_octane_paticleDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_Input, OnInput)
ON_BN_CLICKED(IDC_Deal, OnDeal)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CHigh_octane_paticleDlg message handlers
BOOL CHigh_octane_paticleDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
}
void CHigh_octane_paticleDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CHigh_octane_paticleDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CHigh_octane_paticleDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CHigh_octane_paticleDlg::OnInput()
{
CString WPathName[102];
CString WFileName[102];
char yu[20000];
memset(yu,0,sizeof(yu));
CString pn;
int fcon=0;
CFileDialog fd(true,"","",OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,"闪电GR数据(*.*)|*.*|,所有数据(*.*)|*.*|",this); //*.gag *.gsy
fd.m_ofn.lpstrFile=yu;
fd.m_ofn.nMaxFile=20000;
fd.m_ofn.lpstrInitialDir=NULL;
if(fd.DoModal()!=IDOK)
return;
POSITION rt=fd.GetStartPosition( );
while(rt!=0)
{
pn=fd.GetNextPathName(rt);
int l=pn.GetLength();
for(int i=l;i>1;i--)
{
if(pn.Mid( i, 1 )=='\\')
{
WPathName[fcon]=pn.Left(i+1);
WFileName[fcon]=pn.Right(l-(i+1));
fcon++;
break;
}
}
if(fcon>100)break;
}
if(fcon<=1)
{
return;
}
WFileName[fcon]=WFileName[0];
CString mp;
for(int i=0; i<200; i++)
{
CString x=WFileName[i].Left(1);
if(x!='d')
break;
#define row 1500000
#define col 4
int size ;
unsigned char *mem;//1
mem=new unsigned char [row*col];
if(!mem)
{
cout<<"??? \n";
}
ifstream inFile(WFileName[i],ios::in|ios::binary);
if (inFile.is_open())
{
size = row *col;
inFile.read((char*)mem, size);
cout << "the complete file content is in memory";
}
else
{
cout<< "MAIN: Error while opening forcedata file " <<endl;
}
inFile.close();
CString outdec="Dec_"+WFileName[i];
ofstream outfile(outdec);
for(int ii=0; ii<row; ii++)
{
if((short int)mem[ii*col+0]==205 && (short int)mem[ii*col+3]==205 && (short int)mem[ii*col+2]==205 )
break;
int s_n=0;
if((short int)mem[ii*col+0]==165)
{
CString geshi;
/* outfile<<"Time of frame create:"<<" ";
outfile<<(short int)mem[ii*col+1]<<" ";
outfile<<(short int)mem[ii*col+2]<<" ";
outfile<<(short int)mem[ii*col+3]<<" ";
outfile<<endl;*/
geshi.Format("Time of frame create:%4.0d %4.0d %4.0d ",
(short int)mem[ii*col+1],(short int)mem[ii*col+2],(short int)mem[ii*col+3]);
outfile<<geshi<<endl;
}
else if ((short int)mem[ii*col+0]==90)
{
cout<<endl;
outfile<<(short int)mem[ii*col+0]<<" ";
outfile<<(short int)mem[ii*col+1]<<" ";
outfile<<(short int)mem[ii*col+2]<<" ";
outfile<<(short int)mem[ii*col+3]<<" ";
outfile<<(short int)mem[ii*col+4]<<" ";
outfile<<(short int)mem[ii*col+5]<<" ";
outfile<<(short int)mem[ii*col+6]<<" ";
outfile<<(short int)mem[ii*col+7]<<" ";
outfile<<endl;
}
else
{
/* int cas =(short int)(mem[ii*col+0]>>6),
tcas=(short int)(mem[ii*col+0]<<2),
scas=(short int)(mem[ii*col+0]<<5),
hp =(short int)(mem[ii*col+0]<<7);
outfile<<(short int)(cas)<<" " ;
outfile<<(short int)(tcas>>6)<<" ";
outfile<<(short int)(scas>>6)<<" ";
outfile<<(short int)(hp>>7)<<" ";
outfile<<(short int)mem[ii*col+1]<<" ";
outfile<<(short int)mem[ii*col+3]<<" ";
outfile<<(short int)mem[ii*col+2]<<" ";
outfile<<endl;*/
if((short int)mem[ii*col+1]==2)
s_n=1;
/* outfile<<s_n<<" ";
outfile<<(short int)mem[ii*col+0]<<" ";
outfile<<(short int)mem[ii*col+3]<<" ";
outfile<<(short int)mem[ii*col+2]<<" ";
outfile<<endl;*/
CString geshi;
geshi.Format("%0.1d %4.1d %4.1d %4.1d ",
s_n,(short int)mem[ii*col+0],(short int)mem[ii*col+3],(short int)mem[ii*col+2]);
outfile<<geshi<<endl;
}
}
outfile.close();
/*
CString fil="Dec_file_dec.txt";
ofstream outFile(fil);
double time_s=0;
int time_alt=0;
double time_us[100000];
for(int i=0; i<100000; i++)
{
if((short int)mem[i*col+0]==165)
{
time_s=(short int)(mem[i*col+2]<<8)+(short int)mem[i*col+3];
}
else if ((short int)mem[i*col+1]==0)
{
time_alt=time_alt+1;
time_us[time_alt]=(double)((short int)mem[i*col+3]+(short int)mem[i*col+2])*20 ;
if(time_us[time_alt]-time_us[time_alt-1]<0)
{
time_s=time_s+1;
}
outFile.width(15);
outFile<<(short int)mem[i*col+0]<<" ";
outFile.width(15);
outFile<<(short int)mem[i*col+1]<<" ";
outFile.width(15);
outFile<<time_s<<".";
outFile.precision(8);
outFile<<time_us[time_alt]<<" "<<endl;
}
}
outFile.close();*/
delete []mem;
}
AfxMessageBox(" 二进制转化为了十进制!最多一次可以转化200个二进制文件");
}
void CHigh_octane_paticleDlg::OnDeal()
{
CString WPathName[102];
CString WFileName[102];
CString fil[2], filn[2];
// TODO: Add your control notification handler code here
char yu[20000];
memset(yu,0,sizeof(yu));
CString pn;
int fcon=0;
// CFileDialog dlg(TRUE,_T("3DSF"),_T("*.rfe"),OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,_T("3D闪电数据(*.txt)|*.txt|,所有数据(*.*)|*.*|"));
CFileDialog fd(true,"","",OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,"闪电GR数据(*.*)|*.*|,所有数据(*.*)|*.*|",this); //*.gag *.gsy
fd.m_ofn.lpstrFile=yu;
fd.m_ofn.nMaxFile=20000;
// fd.m_ofn.lStructSize=200;
// char m_str[7]="abcdef";
// fd.m_ofn.nMaxFileTitle=70;
// fd.m_ofn.lpstrFileTitle=yu;
fd.m_ofn.lpstrInitialDir=NULL; // = LPCTSTR(FilePath);
//fd.m_ofn.lpstrTitle = "打开一个文件";
if(fd.DoModal()!=IDOK)
return;
POSITION rt=fd.GetStartPosition( );
while(rt!=0)
{
pn=fd.GetNextPathName(rt);
int l=pn.GetLength();
for(int i=l;i>1;i--)
{
if(pn.Mid( i, 1 )=='\\')
{
WPathName[fcon]=pn.Left(i+1);
WFileName[fcon]=pn.Right(l-(i+1));
fcon++;
break;
}
}
if(fcon>100)break;
}
if(fcon<=1)
{
// AfxMessageBox("只输入一个文件!\n请重新输入! ");
return;
}
WFileName[fcon]=WFileName[0];
CString mp;
// mp.Format("%s--\n%s\n\n%d%s",FileName[1],FileName[fcon],fcon,"个文件合并。 现在保存文件吗?");
// int bu=::MessageBox(NULL,mp, "保存文件", MB_OKCANCEL);
// if(bu==1)
{
//Add_FileName(PathName,FileName,fcon);
// AfxMessageBox("文件合并完成! ");
}
CString zz_filepath=WPathName[0];
//*/
for(int i=0; i<200; i++)
{
CString x=WFileName[i].Left(1);
if(x!='d')
break;
fil[0]=WFileName[i].Left(WFileName[i].GetLength()-4)+"_0.txt";
fil[1]=WFileName[i].Left(WFileName[i].GetLength()-4)+"_1.txt";
filn[0]="AS_0_"+WFileName[i].Left(WFileName[i].GetLength()-4)+".txt";
filn[1]="AS_1_"+WFileName[i].Left(WFileName[i].GetLength()-4)+".txt";
//*/
ifstream fp;
char s[256];
ofstream outfile0;
ofstream outfile1;
fp.open(WFileName[i]);
int e=0;
int e0=0;
int e1=0;
outfile0.open(fil[0]);
outfile1.open(fil[1]);
if(fp == NULL)
{
cout<<"Can't open the file"<<endl;
exit(0);
}
while(1)
{
fp.getline(s,256);
if(fp.eof())
break;
CString sss=s;
CString ss=sss.Left(1);
CString sxx=sss.Right(sss.GetLength()-21);
CString s_n,p_n,h_t,l_t;
if(ss=='T')
{
e=e+1;
outfile0<<"165 "<<sxx<<endl;
outfile1<<"165 "<<sxx<<endl;
}
if(ss=='0')
{
e0=e0+1;
outfile0<<sss<<endl;
}
if(ss=='1')
{
e1=e1+1;
outfile1<<sss<<endl;
}
}
e0=e0+e;
e1=e1+e;
outfile0.close();
outfile1.close();
//////////////*****************0****************////////////////
int eee[3],s_nn[3];
/* fil[0]="kong_power0.txt";
fil[1]="kong_power1.txt";
filn[0]="kong_power_data0.txt";
filn[1]="kong_power_data1.txt"; */
eee[0]=e0;
eee[1]=e1;
s_nn[0]=0;
s_nn[1]=1;
CString dataout;
for(int i=0; i<2; i++)
{
int size0 ;
short int *memb0;//1
memb0=new short int [10000000];
fstream infile0;
infile0.open(fil[i],ios::in);
size0=eee[i]*4;
for(int ee=0;ee<size0;ee++)
{
infile0>>memb0[ee];
}
infile0.close();
ofstream outfile00;
outfile00.open(filn[i]);
outfile00<<eee[i]<<" points"<<endl;
double hms=0.0;
double power0=0.0;
double hms0=0.0;
double t=0.0;
double t0=0.0;
double us_0=0.0;
double us_1=0.0;
double us=0.0;
double hour=0;
double minute=0;
double hour01=0;
double minute01=0;
for(ee=0; ee<eee[i]; ee++)
{
hms0=hms;
if(memb0[ee*4+0]==165)
{
hms= /*memb0[ee*4+1]*60*60+ memb0[ee*4+2]*60+*/ memb0[ee*4+3];
hour=memb0[ee*4+1];
minute=memb0[ee*4+2];
hour01=hour*60*60;
minute01=minute*60;
}
if( memb0[ee*4+0]==s_nn[i] )
{
if(memb0[(ee-1)*4+0]==s_nn[i])
{
us_0=memb0[(ee-1)*4+2]*256+ memb0[(ee-1)*4+3];
us_1=memb0[ee*4+2]*256+ memb0[ee*4+3];
us=(memb0[ee*4+2]*256+ memb0[ee*4+3])*20.0/1000000.0;
if(us_1-us_0<0)
{
hms=hms+1;
}
t=hour01+minute01+hms+us;
}
if(memb0[(ee-1)*4+0]!=s_nn[i])
{
if(memb0[(ee-2)*4+0]==s_nn[i])
{
us_0=memb0[(ee-2)*4+2]*256+ memb0[(ee-2)*4+3];
us_1=memb0[ee*4+2]*256+ memb0[ee*4+3];
us=(memb0[ee*4+2]*256+ memb0[ee*4+3])*20.0/1000000.0;
if(us_1-us_0<0)
{
hms=hms+1;
}
t=hms+us;
}
}
// if(hms-hms0==0)
if(t-t0<0.1)
{
power0=power0+memb0[ee*4+1];
}
// if(hms-hms0>0)
if(t-t0>0.1 )
{
t0=t;
dataout.Format("%.1d# %2.0f:%2.0f %8.6f %7.0f",
memb0[ee*4+0],hour,minute,t-hour01-minute01,power0);
outfile00<<dataout<<endl;
power0=memb0[ee*4+1];
}
}
}
outfile0.close();
delete []memb0;
}
}
AfxMessageBox(" 过年了 ");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -