1516 lines
47 KiB
C++
1516 lines
47 KiB
C++
#pragma once
|
||
|
||
class XtfCvt
|
||
{
|
||
|
||
public:
|
||
int SystemCode;
|
||
|
||
CString findLetter(int nCode);
|
||
|
||
CString GetLetter(CString strText)
|
||
{
|
||
return strText;
|
||
};
|
||
|
||
short ToInt16(byte data[],int offset)
|
||
{
|
||
byte temp[2] ;
|
||
if (SystemCode == 1)
|
||
{
|
||
temp[0] = data[0 + offset];
|
||
temp[1] = data[1 + offset];
|
||
}
|
||
else
|
||
{
|
||
temp[0] = data[1 + offset];
|
||
temp[1] = data[0 + offset];
|
||
}
|
||
short result = *(short*)temp;
|
||
return result;
|
||
};
|
||
|
||
int ToInt32(byte data[], int offset)
|
||
{
|
||
byte temp[4];
|
||
if (SystemCode == 1)
|
||
{
|
||
temp[0] = data[0 + offset];
|
||
temp[1] = data[1 + offset];
|
||
temp[2] = data[2 + offset];
|
||
temp[3] = data[3 + offset];
|
||
}
|
||
else
|
||
{
|
||
temp[0] = data[3 + offset];
|
||
temp[1] = data[2 + offset];
|
||
temp[2] = data[1 + offset];
|
||
temp[3] = data[0 + offset];
|
||
}
|
||
int result = *(int*)temp;
|
||
return result;
|
||
};
|
||
|
||
long ToInt64(byte data[], int offset)
|
||
{
|
||
byte temp[8];// = new byte[8];
|
||
if (SystemCode == 1)
|
||
{
|
||
temp[0] = data[0 + offset];
|
||
temp[1] = data[1 + offset];
|
||
temp[2] = data[2 + offset];
|
||
temp[3] = data[3 + offset];
|
||
temp[4] = data[4 + offset];
|
||
temp[5] = data[5 + offset];
|
||
temp[6] = data[6 + offset];
|
||
temp[7] = data[7 + offset];
|
||
}
|
||
else
|
||
{
|
||
temp[0] = data[7 + offset];
|
||
temp[1] = data[6 + offset];
|
||
temp[2] = data[5 + offset];
|
||
temp[3] = data[4 + offset];
|
||
temp[4] = data[3 + offset];
|
||
temp[5] = data[2 + offset];
|
||
temp[6] = data[1 + offset];
|
||
temp[7] = data[0 + offset];
|
||
}
|
||
long result = *(long*)temp;
|
||
return result;
|
||
};
|
||
|
||
float ToFloat(byte data[], int offset)
|
||
{
|
||
byte temp[4];// = new byte[4];
|
||
if (SystemCode == 1)
|
||
{
|
||
temp[0] = data[0 + offset];
|
||
temp[1] = data[1 + offset];
|
||
temp[2] = data[2 + offset];
|
||
temp[3] = data[3 + offset];
|
||
}
|
||
else
|
||
{
|
||
temp[0] = data[3 + offset];
|
||
temp[1] = data[2 + offset];
|
||
temp[2] = data[1 + offset];
|
||
temp[3] = data[0 + offset];
|
||
}
|
||
float result = *(float*)temp;
|
||
return result;
|
||
};
|
||
|
||
double ToDouble(byte data[], int offset)
|
||
{
|
||
byte temp[8];// = new byte[8];
|
||
if (SystemCode == 1)
|
||
{
|
||
temp[0] = data[0 + offset];
|
||
temp[1] = data[1 + offset];
|
||
temp[2] = data[2 + offset];
|
||
temp[3] = data[3 + offset];
|
||
temp[4] = data[4 + offset];
|
||
temp[5] = data[5 + offset];
|
||
temp[6] = data[5 + offset];
|
||
temp[7] = data[6 + offset];
|
||
}
|
||
else
|
||
{
|
||
temp[0] = data[7 + offset];
|
||
temp[1] = data[6 + offset];
|
||
temp[2] = data[5 + offset];
|
||
temp[3] = data[4 + offset];
|
||
temp[4] = data[3 + offset];
|
||
temp[5] = data[2 + offset];
|
||
temp[6] = data[1 + offset];
|
||
temp[7] = data[0 + offset];
|
||
}
|
||
|
||
double result = *(double*)temp;
|
||
return result;
|
||
};
|
||
|
||
byte ToByte(byte data[], int offset)
|
||
{
|
||
byte temp = data[offset];
|
||
return temp;
|
||
};
|
||
|
||
CString ToCString(byte data[], int offset,int length)
|
||
{
|
||
char temp[4096]="";
|
||
|
||
for (int i = 0; i < length; i++)
|
||
{
|
||
temp[i] = (char)(data[i + offset]);
|
||
}
|
||
|
||
CString result =temp;
|
||
result.TrimLeft();
|
||
result.TrimRight();
|
||
|
||
return result;
|
||
};
|
||
|
||
|
||
int ToBytes(int data, byte bdata[], int offset)
|
||
{
|
||
byte temp[4];
|
||
byte result[4];
|
||
memcpy(temp,&data,4);
|
||
if (SystemCode == 1)
|
||
{
|
||
result[0] = temp[0];
|
||
result[1] = temp[1];
|
||
result[2] = temp[2];
|
||
result[3] = temp[3];
|
||
}
|
||
else
|
||
{
|
||
result[0] = temp[3];
|
||
result[1] = temp[2];
|
||
result[2] = temp[1];
|
||
result[3] = temp[0];
|
||
}
|
||
|
||
memcpy((void*)(bdata+offset),result,4);
|
||
|
||
return data;
|
||
};
|
||
|
||
byte ToBytes(byte data, byte bdata[], int offset)
|
||
{
|
||
bdata[offset]=data;
|
||
return data;
|
||
};
|
||
|
||
short ToBytes(short data, byte bdata[], int offset)
|
||
{
|
||
byte temp[2];
|
||
byte result[2];
|
||
memcpy(temp,&data,2);
|
||
if (SystemCode == 1)
|
||
{
|
||
result[0] = temp[0];
|
||
result[1] = temp[1];
|
||
}
|
||
else
|
||
{
|
||
|
||
result[0] = temp[1];
|
||
result[1] = temp[0];
|
||
}
|
||
|
||
memcpy((void*)(bdata+offset),result,2);
|
||
|
||
return data;
|
||
};
|
||
|
||
|
||
float ToBytes(float data, byte bdata[], int offset)
|
||
{
|
||
byte temp[4];
|
||
byte result[4];
|
||
memcpy(temp,&data,4);
|
||
|
||
if (SystemCode == 1)
|
||
{
|
||
result[0] = temp[0];
|
||
result[1] = temp[1];
|
||
result[2] = temp[2];
|
||
result[3] = temp[3];
|
||
}
|
||
else
|
||
{
|
||
result[0] = temp[3];
|
||
result[1] = temp[2];
|
||
result[2] = temp[1];
|
||
result[3] = temp[0];
|
||
}
|
||
|
||
memcpy((void*)(bdata+offset),result,4);
|
||
|
||
return data;
|
||
};
|
||
|
||
double ToBytes(double data, byte bdata[], int offset)
|
||
{
|
||
byte temp[8];
|
||
byte result[8];
|
||
memcpy(temp,&data,8);
|
||
|
||
|
||
if (SystemCode == 1)
|
||
{
|
||
result[0] = temp[0];
|
||
result[1] = temp[1];
|
||
result[2] = temp[2];
|
||
result[3] = temp[3];
|
||
result[4] = temp[4];
|
||
result[5] = temp[5];
|
||
result[6] = temp[6];
|
||
result[7] = temp[7];
|
||
}
|
||
else
|
||
{
|
||
result[0] = temp[7];
|
||
result[1] = temp[6];
|
||
result[2] = temp[5];
|
||
result[3] = temp[4];
|
||
result[4] = temp[3];
|
||
result[5] = temp[2];
|
||
result[6] = temp[1];
|
||
result[7] = temp[0];
|
||
}
|
||
|
||
memcpy((void*)(bdata+offset),result,8);
|
||
|
||
return data;
|
||
};
|
||
|
||
CString ToBytes(CString data, byte bdata[], int offset, int length)
|
||
{
|
||
int len=data.GetLength();
|
||
if(length<len)len=length;
|
||
for(int i=0;i<len;i++)
|
||
bdata[offset+i]=data.GetAt(i);
|
||
|
||
return data;
|
||
};
|
||
};
|
||
|
||
class CurveHeadInfo
|
||
{
|
||
public :
|
||
|
||
CString CurveName;
|
||
CString CurveUnit;
|
||
CString CurveRemark;
|
||
CString ServiceCompany;
|
||
CString ToolType;
|
||
CString CurveClass;
|
||
CString DepthUnit;
|
||
CString WaveTimeUnit;
|
||
CString StartTimeUnit;
|
||
CString OrinHeadRecord;
|
||
CString LogDirection; //???
|
||
|
||
float Step;
|
||
float Window;
|
||
float CBILAngle;
|
||
float TR_Distance;
|
||
float RR_Distance;
|
||
float OrinToSurface;
|
||
|
||
|
||
CString AIFName;
|
||
CString OCTName;
|
||
CString LisName;
|
||
CString ToolName;
|
||
float StartDepth;
|
||
float EndDepth;
|
||
float DepthLevel;
|
||
float MinValue;
|
||
float MaxValue;
|
||
float AvgValue;
|
||
float TimeValuesLevel;
|
||
float DACTimeOffset;
|
||
float StaticMeasureDepth;
|
||
float StandardDeviation;
|
||
|
||
double DoubleInitValues;
|
||
double DoubleStartDepth;
|
||
double DoubleEndDepth;
|
||
double DoubleDepthLevel;
|
||
int CreateDate;
|
||
int CreateTime;
|
||
int AccessDate;
|
||
int AccessTime;
|
||
int CurveHeadRecordNum;
|
||
int EndPosition;
|
||
float InitValues;
|
||
int SamplesNum;
|
||
short MajorVersion;
|
||
short MinorVersion;
|
||
short CurveIndex;
|
||
short CurveType;
|
||
short CurveDataType;
|
||
short CurveHorz;
|
||
short CurveVert;
|
||
short CurveDimNum;
|
||
short CurveE1Num;
|
||
short CurveE2Num;
|
||
short CurveE3Num;
|
||
|
||
short DataTypeFlag;
|
||
short HaveNegFlag;
|
||
short DataBitsNum;
|
||
short FixedWaveStartFlag;
|
||
short FixedWaveGain;
|
||
short WaveGainExp;
|
||
short GainMethod;
|
||
short GainApplyFlag;
|
||
short WaveLength;
|
||
short ToolNo;
|
||
short CurveSerialNo;
|
||
byte TranFillArea[24];//=new byte[24];
|
||
byte RecvFillArea[24];//=new byte[24];
|
||
byte SystemCode;
|
||
};
|
||
|
||
class MyXtfLib
|
||
{
|
||
|
||
public :
|
||
QFile *dataFile;
|
||
bool openFlag;
|
||
int fileOptions;
|
||
|
||
int BlockNum; //8
|
||
|
||
int CurveFlag[512]; //<2F><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD><EFBFBD><EFBFBD>־,
|
||
|
||
|
||
//<2F><>1
|
||
byte HeadRecord[512];
|
||
CString FileExtation;
|
||
CString FilePath;
|
||
CString SystemDepthUnit;
|
||
CString AIFVersion;
|
||
|
||
byte SystemCode;
|
||
byte Version1;
|
||
byte Version2;//E;
|
||
int CurveNum;
|
||
int MaxCurveNum;
|
||
float FileStartDepth;
|
||
float FileEndDepth;
|
||
float FileDepthLevel;
|
||
|
||
//<2F><>2
|
||
byte BitmapHead; //ͷ
|
||
byte BitmapRecords[4071];
|
||
byte BitmapValues[4];
|
||
byte BitmapFirst[4];
|
||
byte BitmapSecond[4];
|
||
byte BitmapPreview[4];
|
||
byte BitmapCurrent[4];
|
||
byte BitmapNext[4];
|
||
|
||
|
||
//<2F><>3
|
||
CString CurveName[512]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
//<2F><>4
|
||
int CurveStartPos[512] ;//<2F><><EFBFBD>߿<EFBFBD>ʼλ<CABC><CEBB>
|
||
int CurveSampleNum[512] ; //<2F><><EFBFBD><EFBFBD><EFBFBD>ܲ<EFBFBD><DCB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
int CurveEndPos[512]; //<2F><><EFBFBD>߿<EFBFBD>ʼλ<CABC><CEBB>
|
||
|
||
//<2F><>5
|
||
short CurveDimNum[512]; //ά<><CEAC>
|
||
short CurveE1Num[512]; //<2F><>1ά<31><CEAC><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD>
|
||
short CurveE2Num[512]; //<2F><>2ά<32><CEAC><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD>
|
||
short CurveE3Num[512]; //<2F><>3ά<33><CEAC><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD>
|
||
|
||
//<2F><>6
|
||
float CurveStartDepth[512];
|
||
float CurveEndDepth[512];
|
||
|
||
//<2F><>7
|
||
float CurveDepthLevel[512];
|
||
byte CurveType[512];
|
||
byte CurveDataType[512] ;
|
||
byte CurveHorz[512];
|
||
byte CurveVert[512] ;
|
||
|
||
//<2F><>8
|
||
CString WSI;
|
||
CString WellName;
|
||
CString OilFieldName;
|
||
CString CompanyName;
|
||
CString CountryName;
|
||
CString StatesName;
|
||
CString WellLocate;
|
||
float JingDu;
|
||
float WeiDu;
|
||
float HaiBa;
|
||
short SystemForM; //<2F><>Ӣ
|
||
float MagtCPJ; //<2F><>ƫ<EFBFBD><C6AB>
|
||
|
||
|
||
//<2F><>9
|
||
CString CurveUnit[512];
|
||
|
||
CurveHeadInfo curveInfo[512];
|
||
|
||
int CreateDate;
|
||
int CreateTime;
|
||
int LastAccessDate;
|
||
int LastAccessTime;
|
||
|
||
XtfCvt XtfConvert;
|
||
|
||
MyXtfLib()//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD>
|
||
{
|
||
int i=0;
|
||
|
||
byte ByteArray[4096] = {0};
|
||
|
||
//<2F><>1
|
||
memset(ByteArray,0, 4096);
|
||
// HeadRecord = XtfConvert.ToCString(ByteArray, 0, 32);
|
||
FileExtation = XtfConvert.ToCString(ByteArray, 760, 4);
|
||
FileExtation.MakeLower();
|
||
FilePath = XtfConvert.ToCString(ByteArray, 764, 80);
|
||
SystemDepthUnit = XtfConvert.ToCString(ByteArray, 844, 8);
|
||
AIFVersion = XtfConvert.ToCString(ByteArray, 852, 8);
|
||
SystemCode = XtfConvert.ToByte(ByteArray, 948); //5=<3D><><EFBFBD><EFBFBD>վ<EFBFBD><D5BE>1=PC<50><43><EFBFBD><EFBFBD>
|
||
|
||
XtfConvert.SystemCode = SystemCode;
|
||
|
||
Version1 = XtfConvert.ToByte(ByteArray, 950);
|
||
Version2 = XtfConvert.ToByte(ByteArray, 951);
|
||
CurveNum = XtfConvert.ToInt32(ByteArray, 996);
|
||
MaxCurveNum = XtfConvert.ToInt32(ByteArray, 1000);
|
||
FileStartDepth = XtfConvert.ToFloat(ByteArray, 2048);
|
||
FileEndDepth = XtfConvert.ToFloat(ByteArray, 2052);
|
||
FileDepthLevel = XtfConvert.ToFloat(ByteArray, 2056);
|
||
|
||
|
||
//<2F><>2
|
||
memset(ByteArray,0, 4096);
|
||
BitmapHead = ByteArray[0];
|
||
memcpy(BitmapRecords,ByteArray+1,4071);
|
||
memcpy(BitmapValues,ByteArray+4072,4);
|
||
|
||
//<2F><>3
|
||
memset(ByteArray,0, 4096);
|
||
for ( i = 0; i < 512; i++)
|
||
{
|
||
CurveName[i] = XtfConvert.ToCString(ByteArray, i * 8, 8);
|
||
}
|
||
|
||
//<2F><>4
|
||
memset(ByteArray,0, 4096);
|
||
for ( i = 0; i < 256; i++)
|
||
{
|
||
CurveStartPos[i] = XtfConvert.ToInt32(ByteArray, i * 8);
|
||
CurveStartPos[i+256] = XtfConvert.ToInt32(ByteArray, i * 8+4);
|
||
}
|
||
for ( i = 0; i < 256; i++)
|
||
{
|
||
CurveSampleNum[i] = XtfConvert.ToInt32(ByteArray, i * 8 + 2048);
|
||
CurveSampleNum[i + 256] = XtfConvert.ToInt32(ByteArray, i * 8 + 4 + 2048);
|
||
}
|
||
|
||
//<2F><>5
|
||
memset(ByteArray,0, 4096);
|
||
for ( i = 0; i < 256; i++)
|
||
{
|
||
CurveDimNum[i] = XtfConvert.ToInt16(ByteArray, i * 8);
|
||
CurveE1Num[i ] = XtfConvert.ToInt16(ByteArray, i * 8 + 2);
|
||
|
||
CurveDimNum[i + 256] = XtfConvert.ToInt16(ByteArray, i * 8 + 4);
|
||
CurveE1Num[i + 256] = XtfConvert.ToInt16(ByteArray, i * 8 + 6);
|
||
}
|
||
for ( i = 0; i < 256; i++)
|
||
{
|
||
CurveE2Num[i] = XtfConvert.ToInt16(ByteArray, i * 8 + 2048);
|
||
CurveE3Num[i] = XtfConvert.ToInt16(ByteArray, i * 8 + 2 + 2048);
|
||
|
||
CurveE2Num[i + 256] = XtfConvert.ToInt16(ByteArray, i * 8 + 4 + 2048);
|
||
CurveE3Num[i + 256] = XtfConvert.ToInt16(ByteArray, i * 8 + 6 + 2048);
|
||
}
|
||
|
||
//<2F><>6
|
||
memset(ByteArray,0, 4096);
|
||
for ( i = 0; i < 256; i++)
|
||
{
|
||
CurveStartDepth[i] = XtfConvert.ToFloat(ByteArray, i * 8);
|
||
CurveStartDepth[i + 256] = XtfConvert.ToFloat(ByteArray, i * 8 + 4);
|
||
}
|
||
|
||
for ( i = 0; i < 256; i++)
|
||
{
|
||
CurveEndDepth[i] = XtfConvert.ToFloat(ByteArray, i * 8 + 2048);
|
||
CurveEndDepth[i + 256] = XtfConvert.ToFloat(ByteArray, i * 8 + 4 + 2048);
|
||
}
|
||
|
||
//<2F><>7
|
||
memset(ByteArray,0, 4096);
|
||
for ( i = 0; i < 256; i++)
|
||
{
|
||
CurveDepthLevel[i] = XtfConvert.ToFloat(ByteArray, i * 8);
|
||
CurveDepthLevel[i + 256] = XtfConvert.ToFloat(ByteArray, i * 8 + 4);
|
||
}
|
||
for ( i = 0; i < 256; i++)
|
||
{
|
||
CurveType[i] = XtfConvert.ToByte(ByteArray, i * 8 + 2048);
|
||
CurveDataType[i] = XtfConvert.ToByte(ByteArray, i * 8 + 1 + 2048);
|
||
CurveHorz[i] = XtfConvert.ToByte(ByteArray, i * 8 + 2 + 2048);
|
||
CurveVert[i] = XtfConvert.ToByte(ByteArray, i * 8 + 3 + 2048);
|
||
|
||
CurveType[i + 256] = XtfConvert.ToByte(ByteArray, i * 8 + 4 + 2048);
|
||
CurveDataType[i + 256] = XtfConvert.ToByte(ByteArray, i * 8 + 5 + 2048);
|
||
CurveHorz[i + 256] = XtfConvert.ToByte(ByteArray, i * 8 + 6 + 2048);
|
||
CurveVert[i + 256] = XtfConvert.ToByte(ByteArray, i * 8 + 7 + 2048);
|
||
}
|
||
|
||
//<2F><>8
|
||
memset(ByteArray,0, 4096);
|
||
WSI = XtfConvert.ToCString(ByteArray, 0, 8);
|
||
WellName = XtfConvert.ToCString(ByteArray, 8, 80);
|
||
OilFieldName= XtfConvert.ToCString(ByteArray, 88, 80);
|
||
CompanyName = XtfConvert.ToCString(ByteArray, 168, 80);
|
||
CountryName = XtfConvert.ToCString(ByteArray, 248, 32);
|
||
// StatesName = XtfConvert.ToCString(ByteArray, 328, 32);
|
||
WellLocate = XtfConvert.ToCString(ByteArray, 336, 40);
|
||
JingDu = XtfConvert.ToFloat(ByteArray, 1024);
|
||
WeiDu = XtfConvert.ToFloat(ByteArray, 1028);
|
||
HaiBa = XtfConvert.ToFloat(ByteArray, 1040);
|
||
SystemForM = XtfConvert.ToInt16(ByteArray, 2060);
|
||
|
||
//ɨ<><C9A8><EFBFBD><EFBFBD>9
|
||
|
||
// CreateDate = 0; //<2F>⾮ʱ<E2BEAE><CAB1>
|
||
// CreateTime = 0;
|
||
//whp change 2012.11.6
|
||
CreateDate=GetCurrentTime();
|
||
CreateTime = GetCurrentTime();
|
||
|
||
openFlag=false;
|
||
};
|
||
int Init()
|
||
{
|
||
int i=0;
|
||
byte aa[32768] ={0};
|
||
|
||
for( i=0;i<32;i++)
|
||
HeadRecord[i] = 0;
|
||
|
||
for ( i = 1; i <= 8; i++)
|
||
HeadRecord[i*4-1] = (byte)i;
|
||
|
||
WSI = "WSI";
|
||
SystemCode = 5; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //SUN
|
||
Version1 = 0x06;//4;
|
||
Version2 = 0x00;//E;
|
||
SystemForM = 0; //<2F><><EFBFBD><EFBFBD>
|
||
SystemDepthUnit = "meters";
|
||
AIFVersion = "";
|
||
FileExtation = ".xtf";
|
||
|
||
|
||
CurveNum = 0;
|
||
MaxCurveNum = 512;
|
||
BlockNum = 8;
|
||
|
||
XtfConvert.SystemCode = SystemCode;
|
||
|
||
for ( i = 0; i < 512; i++)
|
||
{
|
||
CurveName[i] = "";
|
||
CurveStartPos[i] = 0;
|
||
CurveSampleNum[i] = 0;
|
||
CurveDimNum[i] = 0;
|
||
CurveE1Num[i] = 0;
|
||
CurveE2Num[i] = 0;
|
||
CurveE3Num[i] = 0;
|
||
|
||
CurveStartDepth[i] = 0;
|
||
CurveEndDepth[i] = 0;
|
||
|
||
CurveDepthLevel[i] = 0;
|
||
CurveType[i] = 0;
|
||
CurveDataType[i] = 0;
|
||
CurveHorz[i] = 0;
|
||
CurveVert[i] = 0;
|
||
|
||
CurveUnit[i] = "none";
|
||
SystemForM = 0;
|
||
|
||
CurveFlag[i]=0;
|
||
|
||
byte ccc[4096]={0};
|
||
CurveHeadGet(i,ccc);
|
||
|
||
|
||
memset(curveInfo[i].TranFillArea,0,24);
|
||
memset(curveInfo[i].RecvFillArea ,0,24);
|
||
}
|
||
return 0;
|
||
};
|
||
|
||
|
||
//method
|
||
|
||
int OpenDataFile(QString dataFileName, int nOpenFlags)
|
||
{
|
||
// srcFileFlag //nOpenFlags =0,Read,=1 Write,=2,readwrite;
|
||
Init();
|
||
|
||
if (openFlag)
|
||
{
|
||
dataFile->close();
|
||
openFlag = false;
|
||
}
|
||
//////////////////////////////////////////////////////////////////////////
|
||
///ע<>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ٴδ<CEB4><F2BFAAB1><EFBFBD><EFBFBD>ļ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>Ѿ<EFBFBD><D1BE>رյ<D8B1><D5B5>쳣<EFBFBD><ECB3A3>ʾ
|
||
//////////////////////////////////////////////////////////////////////////
|
||
{
|
||
dataFile=new QFile(dataFileName);
|
||
fileOptions = nOpenFlags;
|
||
if (fileOptions == 0)
|
||
{
|
||
dataFile->open(QIODevice::ReadOnly);
|
||
}
|
||
else if (fileOptions == 1)
|
||
{
|
||
dataFile->open(QIODevice::WriteOnly);
|
||
}
|
||
|
||
else if (fileOptions == 2)
|
||
{
|
||
dataFile->open(QIODevice::ReadWrite);
|
||
}
|
||
|
||
openFlag = true;
|
||
}
|
||
return 1;
|
||
|
||
};
|
||
|
||
int FileHead_Read()
|
||
{
|
||
int i=0;
|
||
int FileHead = 32*1024;
|
||
|
||
byte ByteArray[32768] = {0};
|
||
|
||
|
||
dataFile->seek(0);
|
||
|
||
//<2F><>1
|
||
dataFile->read((char*)&ByteArray[0], 4096);
|
||
// HeadRecord = XtfConvert.ToCString(ByteArray, 0, 32);
|
||
FileExtation = XtfConvert.ToCString(ByteArray, 760, 4);
|
||
FileExtation.MakeLower();
|
||
FilePath = XtfConvert.ToCString(ByteArray, 764, 80);
|
||
SystemDepthUnit = XtfConvert.ToCString(ByteArray, 844, 8);
|
||
AIFVersion = XtfConvert.ToCString(ByteArray, 852, 8);
|
||
SystemCode = XtfConvert.ToByte(ByteArray, 948); //5=<3D><><EFBFBD><EFBFBD>վ<EFBFBD><D5BE>1=PC<50><43><EFBFBD><EFBFBD>
|
||
|
||
XtfConvert.SystemCode = SystemCode;
|
||
|
||
Version1 = XtfConvert.ToByte(ByteArray, 950);
|
||
Version2 = XtfConvert.ToByte(ByteArray, 951);
|
||
CurveNum = XtfConvert.ToInt32(ByteArray, 996);
|
||
MaxCurveNum = XtfConvert.ToInt32(ByteArray, 1000);
|
||
FileStartDepth = XtfConvert.ToFloat(ByteArray, 2048);
|
||
FileEndDepth = XtfConvert.ToFloat(ByteArray, 2052);
|
||
FileDepthLevel = XtfConvert.ToFloat(ByteArray, 2056);
|
||
|
||
|
||
//<2F><>2
|
||
dataFile->read((char*)&ByteArray[0], 4096);
|
||
BitmapHead = ByteArray[0];
|
||
memcpy(BitmapRecords,ByteArray+1,4071);
|
||
memcpy(BitmapValues,ByteArray+4072,4);
|
||
|
||
//<2F><>3
|
||
dataFile->read((char*)&ByteArray[0], 4096);
|
||
for ( i = 0; i < 512; i++)
|
||
{
|
||
CurveName[i] = XtfConvert.ToCString(ByteArray, i * 8, 8);
|
||
}
|
||
|
||
//<2F><>4
|
||
dataFile->read((char*)&ByteArray[0], 4096);
|
||
for ( i = 0; i < 256; i++)
|
||
{
|
||
CurveStartPos[i] = XtfConvert.ToInt32(ByteArray, i * 8);
|
||
CurveStartPos[i+256] = XtfConvert.ToInt32(ByteArray, i * 8+4);
|
||
}
|
||
for ( i = 0; i < 256; i++)
|
||
{
|
||
CurveSampleNum[i] = XtfConvert.ToInt32(ByteArray, i * 8 + 2048);
|
||
CurveSampleNum[i + 256] = XtfConvert.ToInt32(ByteArray, i * 8 + 4 + 2048);
|
||
}
|
||
|
||
//<2F><>5
|
||
dataFile->read((char*)&ByteArray[0], 4096);
|
||
for ( i = 0; i < 256; i++)
|
||
{
|
||
CurveDimNum[i] = XtfConvert.ToInt16(ByteArray, i * 8);
|
||
CurveE1Num[i ] = XtfConvert.ToInt16(ByteArray, i * 8 + 2);
|
||
|
||
CurveDimNum[i + 256] = XtfConvert.ToInt16(ByteArray, i * 8 + 4);
|
||
CurveE1Num[i + 256] = XtfConvert.ToInt16(ByteArray, i * 8 + 6);
|
||
}
|
||
for ( i = 0; i < 256; i++)
|
||
{
|
||
CurveE2Num[i] = XtfConvert.ToInt16(ByteArray, i * 8 + 2048);
|
||
CurveE3Num[i] = XtfConvert.ToInt16(ByteArray, i * 8 + 2 + 2048);
|
||
|
||
CurveE2Num[i + 256] = XtfConvert.ToInt16(ByteArray, i * 8 + 4 + 2048);
|
||
CurveE3Num[i + 256] = XtfConvert.ToInt16(ByteArray, i * 8 + 6 + 2048);
|
||
}
|
||
|
||
//<2F><>6
|
||
dataFile->read((char*)&ByteArray[0], 4096);
|
||
for ( i = 0; i < 256; i++)
|
||
{
|
||
CurveStartDepth[i] = XtfConvert.ToFloat(ByteArray, i * 8);
|
||
CurveStartDepth[i + 256] = XtfConvert.ToFloat(ByteArray, i * 8 + 4);
|
||
}
|
||
|
||
for ( i = 0; i < 256; i++)
|
||
{
|
||
CurveEndDepth[i] = XtfConvert.ToFloat(ByteArray, i * 8 + 2048);
|
||
CurveEndDepth[i + 256] = XtfConvert.ToFloat(ByteArray, i * 8 + 4 + 2048);
|
||
}
|
||
|
||
//<2F><>7
|
||
dataFile->read((char*)&ByteArray[0], 4096);
|
||
for ( i = 0; i < 256; i++)
|
||
{
|
||
CurveDepthLevel[i] = XtfConvert.ToFloat(ByteArray, i * 8);
|
||
CurveDepthLevel[i + 256] = XtfConvert.ToFloat(ByteArray, i * 8 + 4);
|
||
}
|
||
for ( i = 0; i < 256; i++)
|
||
{
|
||
CurveType[i] = XtfConvert.ToByte(ByteArray, i * 8 + 2048);
|
||
CurveDataType[i] = XtfConvert.ToByte(ByteArray, i * 8 + 1 + 2048);
|
||
CurveHorz[i] = XtfConvert.ToByte(ByteArray, i * 8 + 2 + 2048);
|
||
CurveVert[i] = XtfConvert.ToByte(ByteArray, i * 8 + 3 + 2048);
|
||
|
||
CurveType[i + 256] = XtfConvert.ToByte(ByteArray, i * 8 + 4 + 2048);
|
||
CurveDataType[i + 256] = XtfConvert.ToByte(ByteArray, i * 8 + 5 + 2048);
|
||
CurveHorz[i + 256] = XtfConvert.ToByte(ByteArray, i * 8 + 6 + 2048);
|
||
CurveVert[i + 256] = XtfConvert.ToByte(ByteArray, i * 8 + 7 + 2048);
|
||
}
|
||
|
||
//<2F><>8
|
||
dataFile->read((char*)&ByteArray[0], 4096);
|
||
WSI = XtfConvert.ToCString(ByteArray, 0, 8);
|
||
WellName = XtfConvert.ToCString(ByteArray, 8, 80);
|
||
OilFieldName= XtfConvert.ToCString(ByteArray, 88, 80);
|
||
CompanyName = XtfConvert.ToCString(ByteArray, 168, 80);
|
||
CountryName = XtfConvert.ToCString(ByteArray, 248, 32);
|
||
// StatesName = XtfConvert.ToCString(ByteArray, 328, 32);
|
||
WellLocate = XtfConvert.ToCString(ByteArray, 336, 40);
|
||
JingDu = XtfConvert.ToFloat(ByteArray, 1024);
|
||
WeiDu = XtfConvert.ToFloat(ByteArray, 1028);
|
||
HaiBa = XtfConvert.ToFloat(ByteArray, 1040);
|
||
SystemForM = XtfConvert.ToInt16(ByteArray, 2060);
|
||
|
||
//ɨ<><C9A8><EFBFBD><EFBFBD>9
|
||
for ( i = 0; i < CurveNum; i++)
|
||
{
|
||
long pos = (CurveStartPos[i] - 1) * 4096;
|
||
dataFile->seek(pos);
|
||
dataFile->read((char*)&ByteArray[0], 4096);
|
||
|
||
|
||
CurveHeadGet(i,ByteArray); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
|
||
|
||
CurveName[i] =curveInfo[i].CurveName;
|
||
CurveUnit[i] = curveInfo[i].CurveUnit;
|
||
CurveEndPos[i] = curveInfo[i].EndPosition;
|
||
|
||
}
|
||
CreateDate = curveInfo[0].CreateDate; //<2F>⾮ʱ<E2BEAE><CAB1>
|
||
CreateTime = curveInfo[0].CreateTime;
|
||
|
||
|
||
|
||
if (FileExtation != ".xtf" || MaxCurveNum != 512) // || UnixToPc.ToCString(head1.ExtendFileType) != ".XTF")
|
||
{
|
||
// MessageBox(" <20><><EFBFBD><EFBFBD>EPLIPS5700 XTF<54><46>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>!");
|
||
|
||
return 0;
|
||
}
|
||
dataFile->seek(0);
|
||
|
||
return FileHead;
|
||
};
|
||
|
||
int FileHead_Write()
|
||
{
|
||
int i=0;
|
||
int FileHead = 32 * 1024;
|
||
|
||
Version1 = 0x06;
|
||
Version2 = 0x00;
|
||
|
||
// Version1 = 0x06;
|
||
// Version2 = 0x00;
|
||
|
||
SystemCode = 5; //5,new,<2C><><EFBFBD><EFBFBD><EFBFBD>̶<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>վģʽ
|
||
XtfConvert.SystemCode = SystemCode; //??????????????????????
|
||
////////////////////////////////////
|
||
|
||
byte ByteArray[32768] = {0};
|
||
dataFile->seek(0);
|
||
|
||
//<2F><>1
|
||
// HeadRecord="10002000300040005000600070008000";
|
||
for ( i = 0; i < 32; i++) ByteArray[i] = HeadRecord[i];
|
||
// XtfConvert.ToBytes(HeadRecord,ByteArray, 0,32);
|
||
|
||
FileExtation.MakeLower();
|
||
XtfConvert.ToBytes(FileExtation, ByteArray, 760, 4);
|
||
FilePath="/data1/data.xtf";
|
||
XtfConvert.ToBytes(FilePath, ByteArray, 764, 80);
|
||
XtfConvert.ToBytes(SystemDepthUnit, ByteArray, 844, 8);
|
||
XtfConvert.ToBytes(AIFVersion, ByteArray, 852, 8);
|
||
//whp add 2012.11.6 for SystemDepthUnit<69><74>AIFVersion<6F><6E><EFBFBD><EFBFBD>8<EFBFBD><38><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ÿո<C3BF><D5B8><EFBFBD><EFBFBD><EFBFBD>
|
||
for ( i = 0; i < 16; i++)
|
||
{
|
||
if(ByteArray[844+i]==0)
|
||
{
|
||
ByteArray[844+i]=32;
|
||
}
|
||
}
|
||
XtfConvert.ToBytes(SystemCode, ByteArray, 948);
|
||
XtfConvert.ToBytes(Version1, ByteArray, 950);
|
||
XtfConvert.ToBytes(Version2, ByteArray, 952);
|
||
XtfConvert.ToBytes(CurveNum, ByteArray, 996);
|
||
XtfConvert.ToBytes(MaxCurveNum, ByteArray, 1000);
|
||
XtfConvert.ToBytes(FileStartDepth, ByteArray, 2048);
|
||
XtfConvert.ToBytes(FileEndDepth, ByteArray, 2052);
|
||
XtfConvert.ToBytes(FileDepthLevel, ByteArray, 2056);
|
||
//float temp_float = 0.00508f;
|
||
//XtfConvert.ToBytes(temp_float, ByteArray, 2056);
|
||
|
||
ByteArray[4094] = 0x0E;
|
||
ByteArray[4095] = 0xE0;
|
||
|
||
dataFile->write((char*)&ByteArray[0], 4096);
|
||
|
||
//<2F><>2
|
||
memset(ByteArray,0,4096); //<2F><>0<EFBFBD><30>
|
||
|
||
int xx = BlockNum / 8;
|
||
int yy = BlockNum % 8;
|
||
for( i=0;i<xx;i++)ByteArray[i]=255;
|
||
ByteArray[xx]=0;
|
||
byte tt[8]={0x80,0x40,0x20,0x10,8,4,2,1};
|
||
for( i=0;i<yy;i++)
|
||
{
|
||
ByteArray[xx] |= tt[i];
|
||
}
|
||
|
||
xx = 0;
|
||
XtfConvert.ToBytes(xx, ByteArray, 4072); //<2F><><EFBFBD><EFBFBD>ֵ
|
||
|
||
xx = 1;
|
||
XtfConvert.ToBytes(xx, ByteArray, 4076); //<2F><>һ<EFBFBD><D2BB>
|
||
|
||
xx = 32576;
|
||
XtfConvert.ToBytes(xx, ByteArray, 4080); //<2F>ڶ<EFBFBD><DAB6><EFBFBD>
|
||
|
||
xx = 0;
|
||
XtfConvert.ToBytes(xx, ByteArray, 4084); //ǰһ<C7B0><D2BB>
|
||
|
||
xx = 2;
|
||
XtfConvert.ToBytes(xx, ByteArray, 4088); //<2F><>ǰ<EFBFBD><C7B0>¼<EFBFBD><C2BC>
|
||
|
||
xx = 0;
|
||
XtfConvert.ToBytes(xx, ByteArray, 4092); //<2F><>һ<EFBFBD><D2BB>
|
||
|
||
dataFile->write((char*)&ByteArray[0], 4096);
|
||
|
||
|
||
//<2F><>3
|
||
memset(ByteArray,0,4096); //<2F><>0<EFBFBD><30>
|
||
for ( i = 0; i < 512; i++)
|
||
{
|
||
// CurveName[i] = HzClass.Convert(CurveName[i]); //ȥ<><C8A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
XtfConvert.ToBytes(CurveName[i],ByteArray,i * 8, 8);
|
||
}
|
||
//whp add 2012.11.6 for <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>8<EFBFBD><38><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ÿո<C3BF><D5B8><EFBFBD><EFBFBD><EFBFBD>
|
||
for ( i = 0; i < 4096; i++)
|
||
{
|
||
if(ByteArray[i]==0)
|
||
{
|
||
ByteArray[i]=32;
|
||
}
|
||
}
|
||
dataFile->write((char*)&ByteArray[0], 4096);
|
||
|
||
//<2F><>4
|
||
memset(ByteArray, 0,4096); //<2F><>0<EFBFBD><30>
|
||
for ( i = 0; i < 256; i++)
|
||
{
|
||
XtfConvert.ToBytes(CurveStartPos[i], ByteArray, i * 8);
|
||
XtfConvert.ToBytes(CurveStartPos[i+256],ByteArray,i * 8+4);
|
||
}
|
||
for ( i = 0; i < 256; i++)
|
||
{
|
||
XtfConvert.ToBytes(CurveSampleNum[i],ByteArray,i * 8 + 2048);
|
||
XtfConvert.ToBytes(CurveSampleNum[i+256],ByteArray,i * 8 + 4 + 2048);
|
||
}
|
||
dataFile->write((char*)&ByteArray[0], 4096);
|
||
|
||
//<2F><>5
|
||
memset(ByteArray,0, 4096); //<2F><>0<EFBFBD><30>
|
||
for ( i = 0; i < 256; i++)
|
||
{
|
||
XtfConvert.ToBytes(CurveDimNum[i], ByteArray, i * 8);
|
||
XtfConvert.ToBytes(CurveE1Num[i], ByteArray, i * 8 + 2);
|
||
|
||
XtfConvert.ToBytes(CurveDimNum[i+256], ByteArray, i * 8+4);
|
||
XtfConvert.ToBytes(CurveE1Num[i+256], ByteArray, i * 8 + 6);
|
||
}
|
||
for ( i = 0; i < 256; i++)
|
||
{
|
||
XtfConvert.ToBytes(CurveE2Num[i], ByteArray, i * 8 + 2048);
|
||
XtfConvert.ToBytes(CurveE3Num[i], ByteArray, i * 8 + 2 + 2048);
|
||
|
||
XtfConvert.ToBytes(CurveE2Num[i + 256], ByteArray, i * 8 + 4 + 2048);
|
||
XtfConvert.ToBytes(CurveE3Num[i + 256], ByteArray, i * 8 + 6 + 2048);
|
||
}
|
||
dataFile->write((char*)&ByteArray[0], 4096);
|
||
|
||
//<2F><>6
|
||
memset(ByteArray,0,4096); //<2F><>0<EFBFBD><30>
|
||
for ( i = 0; i < 256; i++)
|
||
{
|
||
XtfConvert.ToBytes(CurveStartDepth[i], ByteArray, i * 8);
|
||
XtfConvert.ToBytes(CurveStartDepth[i + 256], ByteArray, i * 8 + 4);
|
||
}
|
||
for ( i = 0; i < 256; i++)
|
||
{
|
||
XtfConvert.ToBytes(CurveEndDepth[i], ByteArray, i * 8 + 2048);
|
||
XtfConvert.ToBytes(CurveEndDepth[i + 256], ByteArray, i * 8 + 4 + 2048);
|
||
}
|
||
dataFile->write((char*)&ByteArray[0], 4096);
|
||
|
||
//<2F><>7
|
||
memset(ByteArray,0,4096); //<2F><>0<EFBFBD><30>
|
||
for ( i = 0; i < 256; i++)
|
||
{
|
||
XtfConvert.ToBytes(CurveDepthLevel[i], ByteArray, i * 8);
|
||
XtfConvert.ToBytes(CurveDepthLevel[i+256], ByteArray, i * 8+4);
|
||
}
|
||
for ( i = 0; i < 256; i++)
|
||
{
|
||
XtfConvert.ToBytes(CurveType[i], ByteArray, i * 8 + 2048);
|
||
XtfConvert.ToBytes(CurveDataType[i], ByteArray, i * 8 + 1 + 2048);
|
||
XtfConvert.ToBytes(CurveHorz[i], ByteArray, i * 8 + 2 + 2048);
|
||
XtfConvert.ToBytes(CurveVert[i], ByteArray, i * 8 + 3 + 2048);
|
||
|
||
XtfConvert.ToBytes(CurveType[i + 256], ByteArray, i * 8 + 4 + 2048);
|
||
XtfConvert.ToBytes(CurveDataType[i + 256], ByteArray, i * 8 + 5 + 2048);
|
||
XtfConvert.ToBytes(CurveHorz[i + 256], ByteArray, i * 8 + 6 + 2048);
|
||
XtfConvert.ToBytes(CurveVert[i + 256], ByteArray, i * 8 + 7 + 2048);
|
||
}
|
||
dataFile->write((char*)&ByteArray[0], 4096);
|
||
|
||
//<2F><>8
|
||
memset(ByteArray,0,4096); //<2F><>0<EFBFBD><30>
|
||
for ( i = 0; i < 1024; i++) ByteArray[i] = 0x20;
|
||
|
||
WellName = XtfConvert.GetLetter(WellName);
|
||
OilFieldName = XtfConvert.GetLetter(OilFieldName);
|
||
CompanyName = XtfConvert.GetLetter(CompanyName);
|
||
CountryName = XtfConvert.GetLetter(CountryName);
|
||
WellLocate = XtfConvert.GetLetter(WellLocate);
|
||
|
||
XtfConvert.ToBytes(WSI, ByteArray, 0 ,8); //<2F><>Чͼͷ
|
||
XtfConvert.ToBytes(WellName, ByteArray, 8, 80); //<2F><><EFBFBD><EFBFBD>
|
||
XtfConvert.ToBytes(OilFieldName, ByteArray, 88, 80); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
XtfConvert.ToBytes(CompanyName, ByteArray, 168, 80); //<2F><>˾<EFBFBD><CBBE>
|
||
XtfConvert.ToBytes(CountryName, ByteArray, 248, 32); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
XtfConvert.ToBytes(WellLocate, ByteArray, 336, 40); //<2F><>λ
|
||
|
||
XtfConvert.ToBytes(JingDu, ByteArray, 336); //<2F><><EFBFBD><EFBFBD>
|
||
XtfConvert.ToBytes(WeiDu, ByteArray, 1028); //ά<><CEAC>
|
||
XtfConvert.ToBytes(HaiBa, ByteArray, 1040); //<2F><><EFBFBD><EFBFBD>
|
||
XtfConvert.ToBytes(SystemForM, ByteArray,2060); //ϵͳ<CFB5><CDB3>
|
||
dataFile->write((char*)&ByteArray[0], 4096);
|
||
|
||
|
||
dataFile->flush();
|
||
|
||
return FileHead;
|
||
};
|
||
|
||
int CloseDataFile()
|
||
{
|
||
if (openFlag)
|
||
{
|
||
dataFile->close();
|
||
openFlag = false;
|
||
}
|
||
return 0;
|
||
};
|
||
|
||
int CurveHeadGet(int CurveNo, byte ByteArray[])
|
||
{
|
||
curveInfo[CurveNo].CurveName = XtfConvert.ToCString(ByteArray, 0, 8); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
curveInfo[CurveNo].CurveUnit = XtfConvert.ToCString(ByteArray, 8, 8); //<2F><><EFBFBD>ߵ<EFBFBD>λ
|
||
|
||
curveInfo[CurveNo].CurveRemark = XtfConvert.ToCString(ByteArray, 16, 8); //<2F><><EFBFBD>߱<EFBFBD>ע
|
||
|
||
curveInfo[CurveNo].ServiceCompany = XtfConvert.ToCString(ByteArray, 48, 8); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾
|
||
|
||
curveInfo[CurveNo].ToolType = XtfConvert.ToCString(ByteArray, 48, 8); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
curveInfo[CurveNo].CurveClass = XtfConvert.ToCString(ByteArray, 56, 8); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
curveInfo[CurveNo].DepthUnit = XtfConvert.ToCString(ByteArray, 64, 8); //<2F><><EFBFBD>ȵ<EFBFBD>λ
|
||
|
||
curveInfo[CurveNo].WaveTimeUnit = XtfConvert.ToCString(ByteArray, 72, 8); //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
||
|
||
//???
|
||
//???
|
||
curveInfo[CurveNo].LogDirection = XtfConvert.ToCString(ByteArray, 120, 8); //<2F>⾮<EFBFBD><E2BEAE><EFBFBD><EFBFBD>
|
||
|
||
curveInfo[CurveNo].AIFName = XtfConvert.ToCString(ByteArray, 128, 8); //AIF<49><46>
|
||
curveInfo[CurveNo].OCTName = XtfConvert.ToCString(ByteArray, 152, 8); //OCT<43><54>
|
||
curveInfo[CurveNo].ToolName = XtfConvert.ToCString(ByteArray, 152, 8); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
curveInfo[CurveNo].LisName = XtfConvert.ToCString(ByteArray, 224, 8); //LIS<49><53>
|
||
|
||
curveInfo[CurveNo].StartDepth = XtfConvert.ToFloat(ByteArray, 1024); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
||
curveInfo[CurveNo].EndDepth = XtfConvert.ToFloat(ByteArray, 1028); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
curveInfo[CurveNo].DepthLevel = XtfConvert.ToFloat(ByteArray, 1032); //<2F><><EFBFBD>Ȳ<EFBFBD><C8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
curveInfo[CurveNo].MinValue = XtfConvert.ToFloat(ByteArray, 1036); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сֵ
|
||
curveInfo[CurveNo].MaxValue = XtfConvert.ToFloat(ByteArray, 1040); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||
curveInfo[CurveNo].AvgValue = XtfConvert.ToFloat(ByteArray, 1044); //<2F><><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD>ֵ
|
||
|
||
curveInfo[CurveNo].TimeValuesLevel = XtfConvert.ToFloat(ByteArray, 1048); //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
curveInfo[CurveNo].DACTimeOffset = XtfConvert.ToFloat(ByteArray, 1052); //DAC<41><43>ʼʱ<CABC><CAB1>
|
||
|
||
curveInfo[CurveNo].StaticMeasureDepth = XtfConvert.ToFloat(ByteArray, 1056); //<2F><>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
curveInfo[CurveNo].Step = XtfConvert.ToFloat(ByteArray, 1068); //<2F><>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
curveInfo[CurveNo].Window = XtfConvert.ToFloat(ByteArray, 1072); //<2F><>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
curveInfo[CurveNo].CBILAngle = XtfConvert.ToFloat(ByteArray, 1076); //<2F><>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
curveInfo[CurveNo].TR_Distance = XtfConvert.ToFloat(ByteArray, 1080); //<2F><>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
curveInfo[CurveNo].RR_Distance = XtfConvert.ToFloat(ByteArray, 1084); //<2F><>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
curveInfo[CurveNo].OrinToSurface = XtfConvert.ToFloat(ByteArray, 1088); //<2F><>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
|
||
|
||
curveInfo[CurveNo].DoubleStartDepth = XtfConvert.ToDouble(ByteArray, 1544); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||
curveInfo[CurveNo].DoubleEndDepth = XtfConvert.ToDouble(ByteArray, 1552); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||
curveInfo[CurveNo].DoubleDepthLevel = XtfConvert.ToDouble(ByteArray, 1560); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||
|
||
curveInfo[CurveNo].CreateDate = XtfConvert.ToInt32(ByteArray, 2048); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||
curveInfo[CurveNo].CreateTime = XtfConvert.ToInt32(ByteArray, 2052); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||
|
||
curveInfo[CurveNo].AccessDate = XtfConvert.ToInt32(ByteArray, 2056); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||
curveInfo[CurveNo].AccessTime = XtfConvert.ToInt32(ByteArray, 2060); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||
|
||
curveInfo[CurveNo].AccessTime = XtfConvert.ToInt32(ByteArray, 2060); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||
|
||
curveInfo[CurveNo].CurveHeadRecordNum = XtfConvert.ToInt32(ByteArray, 2064); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||
curveInfo[CurveNo].EndPosition = XtfConvert.ToInt32(ByteArray, 2068); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||
curveInfo[CurveNo].SamplesNum = XtfConvert.ToInt32(ByteArray, 2076); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||
|
||
curveInfo[CurveNo].CurveIndex = XtfConvert.ToInt16(ByteArray, 2564); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||
|
||
curveInfo[CurveNo].CurveType = XtfConvert.ToInt16(ByteArray, 2566); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||
curveInfo[CurveNo].CurveDataType = XtfConvert.ToInt16(ByteArray, 2568); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||
curveInfo[CurveNo].CurveVert = XtfConvert.ToInt16(ByteArray, 2570); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||
curveInfo[CurveNo].CurveHorz = XtfConvert.ToInt16(ByteArray, 2572); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||
|
||
curveInfo[CurveNo].CurveDimNum = XtfConvert.ToInt16(ByteArray, 2574); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||
curveInfo[CurveNo].CurveE1Num = XtfConvert.ToInt16(ByteArray, 2576); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||
curveInfo[CurveNo].CurveE2Num = XtfConvert.ToInt16(ByteArray, 2578); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||
curveInfo[CurveNo].CurveE3Num = XtfConvert.ToInt16(ByteArray, 2580); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||
|
||
curveInfo[CurveNo].DataTypeFlag = XtfConvert.ToInt16(ByteArray, 2592); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||
curveInfo[CurveNo].HaveNegFlag = XtfConvert.ToInt16(ByteArray, 2594); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||
curveInfo[CurveNo].DataBitsNum = XtfConvert.ToInt16(ByteArray, 2596); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||
curveInfo[CurveNo].FixedWaveStartFlag = XtfConvert.ToInt16(ByteArray, 2606); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||
|
||
curveInfo[CurveNo].FixedWaveGain = XtfConvert.ToInt16(ByteArray, 2608); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||
|
||
curveInfo[CurveNo].WaveGainExp = XtfConvert.ToInt16(ByteArray, 2610); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||
|
||
curveInfo[CurveNo].GainMethod = XtfConvert.ToInt16(ByteArray, 2612); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||
|
||
curveInfo[CurveNo].GainApplyFlag = XtfConvert.ToInt16(ByteArray, 2614); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||
|
||
curveInfo[CurveNo].WaveLength = XtfConvert.ToInt16(ByteArray, 2616); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||
|
||
curveInfo[CurveNo].ToolNo = XtfConvert.ToInt16(ByteArray, 2618); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||
|
||
|
||
curveInfo[CurveNo].CurveSerialNo = XtfConvert.ToInt16(ByteArray, 2620); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||
|
||
for (int i = 0; i < 24; i++)
|
||
{
|
||
curveInfo[CurveNo].TranFillArea[i] = XtfConvert.ToByte(ByteArray, 3072+i); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||
|
||
curveInfo[CurveNo].RecvFillArea[i] = XtfConvert.ToByte(ByteArray, 3096+i); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||
}
|
||
|
||
curveInfo[CurveNo].SystemCode = XtfConvert.ToByte(ByteArray, 4095); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||
|
||
/* if (curveInfo[CurveNo].CurveName.Contains("TX"))
|
||
{
|
||
byte b1=ByteArray[0x668];
|
||
byte b2 = ByteArray[0x669];
|
||
byte b3 = ByteArray[0x66A];
|
||
|
||
byte c1 = ByteArray[0xA00];
|
||
byte c2 = ByteArray[0xA01];
|
||
byte c3 = ByteArray[0xA02];
|
||
byte c4 = ByteArray[0xA03];
|
||
|
||
byte d1 = ByteArray[0xD55];
|
||
byte d2 = ByteArray[0xD56];
|
||
|
||
}*/
|
||
|
||
return CurveNo;
|
||
};
|
||
|
||
|
||
int CurveHeadSet(int CurveNo, byte ByteArray[])
|
||
{
|
||
CString temp_str = "";
|
||
int temp_int = 0;
|
||
long temp_long = 0;
|
||
float temp_float = 0;
|
||
short temp_short = 0;
|
||
double temp_double = 0;
|
||
for (int i = 0; i < 1024; i++) ByteArray[i] = 0x20;
|
||
XtfConvert.ToBytes(CurveName[CurveNo], ByteArray, 0,8); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
curveInfo[CurveNo].CurveName = CurveName[CurveNo];
|
||
curveInfo[CurveNo].CurveUnit = CurveUnit[CurveNo];
|
||
|
||
//<2F><>λ<EFBFBD>任
|
||
/* if (CurveUnit[CurveNo] == "") CurveUnit[CurveNo] = "raw";
|
||
if (CurveUnit[CurveNo].Contains("<22><>")) CurveUnit[CurveNo] = CurveUnit[CurveNo].Replace("<22><>", "ohm");
|
||
if (CurveUnit[CurveNo].Contains("<22><>")) CurveUnit[CurveNo] = CurveUnit[CurveNo].Replace("<22><>", "degC");
|
||
if (CurveUnit[CurveNo].Contains("^")) CurveUnit[CurveNo] = CurveUnit[CurveNo].Replace("^", "");
|
||
if (CurveUnit[CurveNo].Contains("<22><>")) CurveUnit[CurveNo] = CurveUnit[CurveNo].Replace("<22><>", "deg");
|
||
if (CurveUnit[CurveNo].Contains("<22><>")) CurveUnit[CurveNo] = CurveUnit[CurveNo].Replace("<22><>", "deg");
|
||
if (CurveUnit[CurveNo].Contains("%")) CurveUnit[CurveNo] = CurveUnit[CurveNo].Replace("%", "pu");
|
||
if (CurveUnit[CurveNo].Contains("mS/m")) CurveUnit[CurveNo] = CurveUnit[CurveNo].Replace("mS/m", "mmho/m");
|
||
if (CurveUnit[CurveNo].Contains("g/cm^3")) CurveUnit[CurveNo] = CurveUnit[CurveNo].Replace("g/cm^3", "g/cm3");
|
||
if (CurveUnit[CurveNo].Contains("CPS")) CurveUnit[CurveNo] = CurveUnit[CurveNo].Replace("CPS", "cts/s");
|
||
|
||
if (curveInfo[CurveNo].CurveName == "GR") CurveUnit[CurveNo] = "gAPI";
|
||
|
||
curveInfo[CurveNo].CurveUnit = CurveUnit[CurveNo];
|
||
|
||
if (CurveFlag[CurveNo] > 1)
|
||
{
|
||
if (curveInfo[CurveNo].CurveName.Contains("WV") || (curveInfo[CurveNo].CurveName.Contains("GN")) || (curveInfo[CurveNo].CurveName.Contains("ST")))
|
||
{
|
||
if (curveInfo[CurveNo].CurveName.Contains("TF"))
|
||
{
|
||
curveInfo[CurveNo].OrinToSurface = -5.334f;
|
||
curveInfo[CurveNo].TR_Distance = 3.6576f;
|
||
curveInfo[CurveNo].RR_Distance = 0.1524f;
|
||
curveInfo[CurveNo].StartTimeUnit = "us";
|
||
curveInfo[CurveNo].WaveTimeUnit = "us";
|
||
// curveInfo[CurveNo].TimeValuesLevel = 12;
|
||
|
||
curveInfo[CurveNo].FixedWaveStartFlag = 1;
|
||
curveInfo[CurveNo].FixedWaveGain = 1;
|
||
|
||
for (int i = 0; i < 8; i++)
|
||
{
|
||
curveInfo[CurveNo].TranFillArea[i] = (byte)0x01;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
curveInfo[CurveNo].RecvFillArea[i] = (byte)(0x01 + i);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
}
|
||
}
|
||
|
||
if (curveInfo[CurveNo].CurveName.Contains("TN"))
|
||
{
|
||
curveInfo[CurveNo].OrinToSurface = -5.7912f;
|
||
curveInfo[CurveNo].TR_Distance = 2.5908f;
|
||
curveInfo[CurveNo].RR_Distance = 0.1524f;
|
||
curveInfo[CurveNo].StartTimeUnit = "us";
|
||
curveInfo[CurveNo].WaveTimeUnit = "us";
|
||
// curveInfo[CurveNo].TimeValuesLevel = 8;
|
||
|
||
curveInfo[CurveNo].FixedWaveStartFlag = 1;
|
||
curveInfo[CurveNo].FixedWaveGain = 1;
|
||
|
||
for (int i = 0; i < 4; i++)
|
||
{
|
||
curveInfo[CurveNo].TranFillArea[i] = (byte)0x02;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
curveInfo[CurveNo].RecvFillArea[i] = (byte)(0x01 + i);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
}
|
||
}
|
||
|
||
if (curveInfo[CurveNo].CurveName.Contains("TXX") || curveInfo[CurveNo].CurveName.Contains("TXY"))
|
||
{
|
||
curveInfo[CurveNo].OrinToSurface = -5.6388f;
|
||
curveInfo[CurveNo].TR_Distance = 3.2004f;
|
||
curveInfo[CurveNo].RR_Distance = 0.1524f;
|
||
curveInfo[CurveNo].StartTimeUnit = "us";
|
||
curveInfo[CurveNo].WaveTimeUnit = "us";
|
||
// curveInfo[CurveNo].TimeValuesLevel = 36;
|
||
|
||
curveInfo[CurveNo].FixedWaveStartFlag = 1;
|
||
curveInfo[CurveNo].FixedWaveGain = 1;
|
||
|
||
for (int i = 0; i < 8; i++)
|
||
{
|
||
curveInfo[CurveNo].TranFillArea[i] = (byte)0x03;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
curveInfo[CurveNo].RecvFillArea[i] = (byte)(0x01 + i);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
}
|
||
|
||
}
|
||
if (curveInfo[CurveNo].CurveName.Contains("TYX") || curveInfo[CurveNo].CurveName.Contains("TYY"))
|
||
{
|
||
curveInfo[CurveNo].OrinToSurface = -5.6388f;
|
||
curveInfo[CurveNo].TR_Distance = 3.2004f;
|
||
curveInfo[CurveNo].RR_Distance = 0.1524f;
|
||
curveInfo[CurveNo].StartTimeUnit = "us";
|
||
curveInfo[CurveNo].WaveTimeUnit = "us";
|
||
// curveInfo[CurveNo].TimeValuesLevel = 36;
|
||
|
||
curveInfo[CurveNo].FixedWaveStartFlag = 1;
|
||
curveInfo[CurveNo].FixedWaveGain = 1;
|
||
|
||
for (int i = 0; i < 8; i++)
|
||
{
|
||
curveInfo[CurveNo].TranFillArea[i] = (byte)0x04;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
curveInfo[CurveNo].RecvFillArea[i] = (byte)(0x01 + i);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
}
|
||
}
|
||
}
|
||
}*/
|
||
|
||
|
||
XtfConvert.ToBytes(CurveUnit[CurveNo], ByteArray, 8,8);
|
||
|
||
|
||
temp_str = "j727e03.aff";// CurveName[CurveNo];
|
||
XtfConvert.ToBytes(temp_str, ByteArray, 16, 24); //<2F><><EFBFBD>߱<EFBFBD>ע
|
||
|
||
temp_str = "ATLAS";
|
||
XtfConvert.ToBytes(temp_str, ByteArray, 40, 8); //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||
|
||
|
||
temp_str = " ";
|
||
XtfConvert.ToBytes(temp_str, ByteArray, 48,8); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
temp_str = "AFF";
|
||
XtfConvert.ToBytes(temp_str, ByteArray, 56,8); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
temp_str = SystemDepthUnit;
|
||
XtfConvert.ToBytes(temp_str, ByteArray, 64, 8);
|
||
|
||
temp_str = "up";
|
||
XtfConvert.ToBytes(temp_str, ByteArray, 120, 8); //<2F>⾮<EFBFBD><E2BEAE><EFBFBD><EFBFBD>
|
||
|
||
XtfConvert.ToBytes(CurveName[CurveNo], ByteArray, 128, 4); //AIF
|
||
temp_str = "j727e";
|
||
XtfConvert.ToBytes(temp_str, ByteArray, 152, 8); //OCT
|
||
|
||
temp_str = "1515MA";
|
||
XtfConvert.ToBytes(temp_str, ByteArray, 160, 48); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
XtfConvert.ToBytes(CurveName[CurveNo], ByteArray, 224, 4); //LIS
|
||
temp_str = " aff2xtf Rev 1.0";
|
||
XtfConvert.ToBytes(temp_str, ByteArray, 228, 796); //no use
|
||
|
||
XtfConvert.ToBytes(CurveStartDepth[CurveNo], ByteArray, 1024); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>float
|
||
XtfConvert.ToBytes(CurveEndDepth[CurveNo], ByteArray, 1028); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>float
|
||
XtfConvert.ToBytes(CurveDepthLevel[CurveNo], ByteArray, 1032); //<2F><><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>float
|
||
|
||
temp_float = -999999.;//0;
|
||
XtfConvert.ToBytes(temp_float, ByteArray, 1036); //min
|
||
temp_float = 999999.;//0;
|
||
XtfConvert.ToBytes(temp_float, ByteArray, 1040); //max
|
||
temp_float = 0;
|
||
XtfConvert.ToBytes(temp_float, ByteArray, 1044); //avg
|
||
|
||
|
||
temp_double = 1000000;
|
||
XtfConvert.ToBytes(temp_double, ByteArray, 1536); //start depth, double
|
||
temp_double = CurveStartDepth[CurveNo];
|
||
XtfConvert.ToBytes(temp_double, ByteArray, 1544); //start depth, double
|
||
temp_double = CurveEndDepth[CurveNo];
|
||
XtfConvert.ToBytes(temp_double, ByteArray, 1552); //end depth,double
|
||
temp_double = CurveDepthLevel[CurveNo];
|
||
XtfConvert.ToBytes(temp_double, ByteArray, 1560); //depth level,double
|
||
|
||
XtfConvert.ToBytes(CreateDate, ByteArray, 2048); //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||
XtfConvert.ToBytes(CreateTime, ByteArray, 2052); //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||
XtfConvert.ToBytes(CreateDate, ByteArray, 2056); //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||
XtfConvert.ToBytes(CreateTime, ByteArray, 2060); //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||
|
||
|
||
temp_int = 1;
|
||
XtfConvert.ToBytes(temp_int, ByteArray, 2064); //ͷ<><CDB7>¼<EFBFBD><C2BC>
|
||
|
||
temp_int = CurveEndPos[CurveNo];
|
||
XtfConvert.ToBytes(temp_int, ByteArray, 2068); //<2F><><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD>¼λ<C2BC><CEBB>
|
||
|
||
// temp_int = 0;
|
||
// XtfConvert.ToBytes(temp_int, ByteArray, 2072); //
|
||
|
||
temp_float = -9999.0f;
|
||
XtfConvert.ToBytes(temp_float, ByteArray, 2072); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼֵ
|
||
|
||
temp_int = CurveSampleNum[CurveNo];
|
||
XtfConvert.ToBytes(temp_int, ByteArray, 2076); //<2F><><EFBFBD>߲<EFBFBD><DFB2><EFBFBD><EFBFBD>ܵ<EFBFBD><DCB5><EFBFBD>
|
||
|
||
// temp_str = " ";
|
||
// XtfConvert.ToBytes(temp_str, ByteArray, 2088, 472); //no use
|
||
|
||
temp_short = (short)(CurveNo+1);
|
||
XtfConvert.ToBytes(temp_short, ByteArray, 2564); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
temp_short = (short)CurveType[CurveNo];
|
||
XtfConvert.ToBytes(temp_short, ByteArray, 2566); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
temp_short = (short)CurveDataType[CurveNo];
|
||
XtfConvert.ToBytes(temp_short, ByteArray, 2568); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
temp_short = (short)CurveVert[CurveNo];
|
||
XtfConvert.ToBytes(temp_short, ByteArray, 2570); //<2F><>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>
|
||
|
||
temp_short = (short)CurveHorz[CurveNo];
|
||
XtfConvert.ToBytes(temp_short, ByteArray, 2572); //<2F><>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>
|
||
|
||
|
||
temp_short = (short)CurveDimNum[CurveNo];
|
||
XtfConvert.ToBytes(temp_short, ByteArray, 2574); //ά<><CEAC>
|
||
|
||
temp_short = (short)CurveE1Num[CurveNo];
|
||
XtfConvert.ToBytes(temp_short, ByteArray, 2576); //<2F><>1ά<31><CEAC><EFBFBD><EFBFBD>
|
||
|
||
temp_short = (short)CurveE2Num[CurveNo];
|
||
XtfConvert.ToBytes(temp_short, ByteArray, 2578); //<2F><>2ά<32><CEAC><EFBFBD><EFBFBD>
|
||
|
||
temp_short = (short)CurveE3Num[CurveNo];
|
||
XtfConvert.ToBytes(temp_short, ByteArray, 2580); //<2F><>3ά<33><CEAC><EFBFBD><EFBFBD>
|
||
|
||
temp_short = -32767;
|
||
XtfConvert.ToBytes(temp_short, ByteArray, 2590); //INT*2<><32>ʼֵ
|
||
|
||
if (CurveDataType[CurveNo] == 2 || CurveDataType[CurveNo] == 9)
|
||
{
|
||
temp_short = 1;
|
||
}
|
||
else
|
||
{
|
||
temp_short = 2;
|
||
}
|
||
XtfConvert.ToBytes(temp_short, ByteArray, 2592); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
|
||
temp_short = 1;
|
||
XtfConvert.ToBytes(temp_short, ByteArray, 2594); //<2F><><EFBFBD><EFBFBD><DEB8>ű<EFBFBD>־<EFBFBD><D6BE>1<EFBFBD><31>
|
||
|
||
if (CurveDataType[CurveNo] == 2 || CurveDataType[CurveNo] == 9)
|
||
temp_short = 16;
|
||
else
|
||
temp_short = 32;
|
||
XtfConvert.ToBytes(temp_short, ByteArray, 2596); //ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><D4AA>λ<EFBFBD><CEBB>
|
||
|
||
if (CurveFlag[CurveNo] > 0)
|
||
{
|
||
XtfConvert.ToBytes(curveInfo[CurveNo].TR_Distance, ByteArray, 1080); //T-R<><52><EFBFBD><EFBFBD>
|
||
XtfConvert.ToBytes(curveInfo[CurveNo].RR_Distance, ByteArray, 1084); //R-R<><52><EFBFBD><EFBFBD>
|
||
XtfConvert.ToBytes(curveInfo[CurveNo].OrinToSurface, ByteArray, 1088); //R-R<><52><EFBFBD><EFBFBD>
|
||
|
||
for (int i = 0; i < 24; i++)
|
||
{
|
||
XtfConvert.ToBytes(curveInfo[CurveNo].TranFillArea[i], ByteArray, 3072 + i); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
XtfConvert.ToBytes(curveInfo[CurveNo].RecvFillArea[i], ByteArray, 3096+i); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
}
|
||
|
||
XtfConvert.ToBytes(curveInfo[CurveNo].StartTimeUnit, ByteArray, 80,8); //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||
XtfConvert.ToBytes(curveInfo[CurveNo].WaveTimeUnit, ByteArray, 72,8); //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||
|
||
XtfConvert.ToBytes(curveInfo[CurveNo].FixedWaveStartFlag, ByteArray, 2606); //0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||
XtfConvert.ToBytes(curveInfo[CurveNo].FixedWaveGain, ByteArray, 2608); //0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD>
|
||
//whp del 2016.6.2
|
||
//XtfConvert.ToBytes(curveInfo[CurveNo].TimeValuesLevel, ByteArray, 1048); //ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
}
|
||
//whp add 2016.6.2 for ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>ʼʱ<CABC><CAB1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
XtfConvert.ToBytes(curveInfo[CurveNo].TimeValuesLevel, ByteArray, 1048); //ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
XtfConvert.ToBytes(curveInfo[CurveNo].DACTimeOffset, ByteArray, 1052); //DAC<41><43>ʼʱ<CABC><CAB1>
|
||
//whp add end
|
||
ByteArray[2618] = 0x01; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
|
||
ByteArray[0xA00] = 0x00;
|
||
ByteArray[0xA01] = Version1;
|
||
ByteArray[0xA02] = 0x00;
|
||
ByteArray[0xA03] = Version2;
|
||
|
||
|
||
if(CurveFlag[CurveNo] > 1)
|
||
{
|
||
ByteArray[0xA1E] = 0x80; //0x00;//
|
||
ByteArray[0xA1F] = 0x01; //0x00;//
|
||
|
||
ByteArray[0x668] = 0xBF;
|
||
ByteArray[0x669] = 0xE3;
|
||
ByteArray[0x66A] = 0x82;
|
||
|
||
ByteArray[0xD55] = 0x88;
|
||
ByteArray[0xD56] = 0x44;
|
||
}
|
||
|
||
ByteArray[4095] = SystemCode;//ϵͳ<CFB5><CDB3>
|
||
// XtfConvert.ToBytes(SystemCode, ByteArray, 4095);
|
||
return CurveNo;
|
||
};
|
||
|
||
|
||
int CurveHead_Write(int CurveNo)
|
||
{
|
||
byte ByteArray[4096] = {0};
|
||
|
||
CurveHeadSet(CurveNo, ByteArray);
|
||
|
||
long pos = CurveStartPos[CurveNo] - 1;
|
||
|
||
dataFile->seek(pos * 4096);
|
||
dataFile->write((char*)&ByteArray[0], 4096);
|
||
dataFile->flush();
|
||
|
||
return CurveNo;
|
||
};
|
||
|
||
int CurveRecord_Write(byte buf[],int offset,int length)
|
||
{
|
||
dataFile->write((char*)&buf[offset], length);
|
||
|
||
return 0;
|
||
};
|
||
|
||
int CurveHead_Read(int CurveNo)
|
||
{
|
||
byte ByteArray[4096] = {0};
|
||
|
||
long pos = CurveStartPos[CurveNo] - 1;
|
||
|
||
dataFile->seek(pos * 4096);
|
||
dataFile->read((char*)&ByteArray[0], 4096);
|
||
|
||
CurveHeadGet(CurveNo, ByteArray);
|
||
|
||
return 0;
|
||
};
|
||
|
||
int CurveRecord_Read(byte buf[], int offset, int length)
|
||
{
|
||
dataFile->read((char*)&buf[offset], length);
|
||
|
||
return 0;
|
||
};
|
||
|
||
};
|
||
|