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

📄 high_octane_paticledlg.cpp

📁 这个是有关小的数据结构读取的程序代码
💻 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 + -