📄 tseg2.cpp
字号:
// TSeg2.cpp: implementation of the TSeg2 class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "seg2.h"
#include "TSeg2.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
TSeg2::TSeg2()
{
m_IsSeg2File=FALSE;
m_IsOpen=FALSE;
m_Seg2File= new CFile;
}
TSeg2::~TSeg2()
{
if(m_IsOpen!=FALSE)m_Seg2File->Close();
delete m_Seg2File;
}
//////////////////////////////////////////////////////////////////////
// TSeg2FileHead Class
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
TSeg2FileHead::TSeg2FileHead()
{
iId=0X553a;
iFxg=0;//修改数
iPointLarge=0;//道指针子块的大小(M)
iNt=0;//文件中的道数
cAscii=0,cAscii1=0,cAscii2=0;//字符串终端大小
cLineend=0,cLineend1=0,cLineend2=0;
m_FHString.RemoveAll();
}
TSeg2FileHead::~TSeg2FileHead()
{
m_FHString.FreeExtra();
}
//////////////////////////////////////////////////////////////////////
// TSeg2Chanel Class
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
TSeg2Chanel::TSeg2Chanel()
{
iId=0;
iLargeHead=0;
iLargeData=0;
iSamples=0;
iDataType=0;
cChar.Empty();
m_THString.RemoveAll();
}
TSeg2Chanel::~TSeg2Chanel()
{
m_THString.FreeExtra();
}
TSeg2FileHead& TSeg2::ReadFileHead()
{
m_Seg2File->SeekToBegin();
m_Seg2File->Read(&m_FileHead.iId, 2);
m_Seg2File->Read(&m_FileHead.iFxg, 2);
m_Seg2File->Read(&m_FileHead.iPointLarge, 2);
m_Seg2File->Read(&m_FileHead.iNt, 2);
m_Seg2File->Read(&m_FileHead.cAscii,1);
m_Seg2File->Read(&m_FileHead.cAscii1, 1);
m_Seg2File->Read(&m_FileHead.cAscii2, 1);
m_Seg2File->Read(&m_FileHead.cLineend, 1);
m_Seg2File->Read(&m_FileHead.cLineend1, 1);
m_Seg2File->Read(&m_FileHead.cLineend2, 1);
m_Seg2File->Read(&m_FileHead.cDemo1, 18);
for(int i=0;i<m_FileHead.iNt;i++)m_Seg2File->Read(&m_FileHead.lPointNt[i], 4);
m_FileHead.m_FHString.RemoveAll();
CString str1;
int lenstr=0;
char mystring[80];
m_Seg2File->Read(&lenstr, 2);
str1.Format("%i",lenstr);
while(lenstr!=0)
{
m_Seg2File->Read(mystring,lenstr-2);
str1+=mystring;
m_FileHead.m_FHString.Add(str1);
lenstr=0;
m_Seg2File->Read(&lenstr, 2);
str1.Format("%i",lenstr);
}
m_FileHead.Position=m_Seg2File->GetPosition();
/*lenstr=m_FileHead.m_FHString.GetSize();//测试
for(i=0;i<lenstr;i++)
{
stmp=m_FileHead.m_FHString.GetAt(i);
AfxMessageBox(stmp);
}*/
return m_FileHead;
}
TSeg2Chanel& TSeg2::ReadChanel(int nt)
{
// int i;
m_Seg2File->Seek(m_FileHead.lPointNt[nt-1],CFile::begin);
m_Seg2File->Read(&m_ChanelHead.iId,2);
m_Seg2File->Read(&m_ChanelHead.iLargeHead,2);
m_Seg2File->Read(&m_ChanelHead.iLargeData,4);
m_Seg2File->Read(&m_ChanelHead.iSamples,4);
m_Seg2File->Read(&m_ChanelHead.iDataType,1);
m_Seg2File->Read(&m_ChanelHead.cDemo,19);
m_ChanelHead.m_THString.RemoveAll();
CString str1;
int lenstr=0;
char mystring[80];
m_Seg2File->Read(&lenstr, 2);
str1.Format("%i",lenstr);
while(lenstr!=0)
{
m_Seg2File->Read(mystring,lenstr-2);
str1+=mystring;
m_ChanelHead.m_THString.Add(str1);
lenstr=0;
m_Seg2File->Read(&lenstr, 2);
str1.Format("%i",lenstr);
}
m_ChanelHead.lpData.SetSize(m_ChanelHead.iLargeData);
m_Seg2File->Seek(m_FileHead.lPointNt[nt-1]+m_ChanelHead.iLargeHead,CFile::begin);
m_Seg2File->Read((LPSTR)m_ChanelHead.lpData.GetData(),m_ChanelHead.iLargeData);
return m_ChanelHead;
}
BOOL TSeg2::IsSeg2File()
{
if(m_IsOpen==FALSE)
{
AfxMessageBox("q");//,MB_ICONQUESTION);
m_IsSeg2File=FALSE;
return m_IsSeg2File;
}
m_Seg2File->Read(&m_FileHead.iId, 2 );
if(m_FileHead.iId!=14933)
{
AfxMessageBox("打开的源文件格式不对!!!...");
m_IsSeg2File=FALSE;
return FALSE;
}
m_IsSeg2File=TRUE;
return TRUE;
}
void TSeg2::OpenFile()
{
CFileDialog dlg(TRUE,"*.SG2",NULL,OFN_HIDEREADONLY |OFN_OVERWRITEPROMPT,"SEG2格式数据文件(*.SG2)|*.sg2|所有文件(*.*)|*.*|",NULL);
dlg.m_ofn.lpstrTitle="SEG2格式的数据文件";
//------用来检测目前的操作系统的版本信息
int nStructSize = 0;
DWORD dwVersion, dwWindowsMajorVersion, dwWindwosMinorVersion;
dwVersion = GetVersion();
dwWindowsMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion)));
dwWindwosMinorVersion = (DWORD)(HIBYTE(LOWORD(dwVersion)));
if(dwVersion < 0x80000000)
{
nStructSize = 88; //2k,xp下显示新的版本
}
else
{
nStructSize = 76; //98下显示老版本,如图1
}
dlg.m_ofn.lStructSize = nStructSize; //------用来检测目前的操作系统的版本信息
dlg.m_ofn.Flags |= OFN_EXPLORER |OFN_ALLOWMULTISELECT;
///////////////
if(dlg.DoModal()==IDCANCEL)return;
m_strFileName=dlg.GetPathName();
// AfxMessageBox(m_strFileName);
CFileException e;
if( !m_Seg2File->Open(LPCTSTR(m_strFileName),CFile::modeRead,&e ) )
{
#ifdef _DEBUG
afxDump << "File could not be opened " << e.m_cause << "\n";
#endif
}
m_IsOpen=TRUE;
}
int TSeg2::ReadSeg2()
{
OpenFile();
if(IsSeg2File()!=TRUE)return 1;
ReadFileHead();
// for(int i=0;i<
ReadChanel(1);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -