1153 lines
26 KiB
C
1153 lines
26 KiB
C
|
|
/////////////////////////////////////////////
|
|||
|
|
// MyDlisLib.h
|
|||
|
|
#pragma once
|
|||
|
|
|
|||
|
|
|
|||
|
|
#define MAX_CURVE_NUM 256
|
|||
|
|
|
|||
|
|
struct Info_Reel // <20><><EFBFBD><EFBFBD>Ϣ Type 132 133
|
|||
|
|
{
|
|||
|
|
char ServiceName[6]; //6 65 Service Name
|
|||
|
|
char NoUse1[6]; //6 65
|
|||
|
|
char Date[8]; //6 65
|
|||
|
|
char NoUse2[2]; //6 65
|
|||
|
|
char DataOrigin[4]; //6 65
|
|||
|
|
char Nouse3[2]; //6 65
|
|||
|
|
char ReelName[8]; //6 65
|
|||
|
|
char NoUse4[2]; //6 65
|
|||
|
|
char ReelContinueNo[2]; //2 65
|
|||
|
|
char NoUse5[2]; //2 65
|
|||
|
|
char PreReelName[8]; //8 65
|
|||
|
|
char NoUse6[2]; //2 65
|
|||
|
|
char Comments[74]; //74 65
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
struct Info_Tape // <20>Ŵ<EFBFBD><C5B4><EFBFBD>Ϣ Type 130 131
|
|||
|
|
{
|
|||
|
|
char ServiceName[6]; //6 65 Service Name
|
|||
|
|
char NoUse1[6]; //6 65
|
|||
|
|
char Date[8]; //6 65
|
|||
|
|
char NoUse2[2]; //6 65
|
|||
|
|
char DataOrigin[4]; //6 65
|
|||
|
|
char Nouse3[2]; //6 65
|
|||
|
|
char TapeName[8]; //6 65
|
|||
|
|
char NoUse4[2]; //6 65
|
|||
|
|
char TapeContinueNo[2]; //2 65
|
|||
|
|
char NoUse5[2]; //6 65
|
|||
|
|
char PreTapeName[8]; //8 65
|
|||
|
|
char NoUse6[2]; //2 65
|
|||
|
|
char Comments[74]; //74 65
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
struct Info_File //<2F>ļ<EFBFBD>ͷβ<CDB7><CEB2>Ϣ
|
|||
|
|
{
|
|||
|
|
char FileName[10]; // 10 65 <20>ļ<EFBFBD><C4BC><EFBFBD>
|
|||
|
|
char NoUse1[2]; // 2 65 <20>հ<EFBFBD>
|
|||
|
|
char ServiceID[6]; // 6 65 <20>μ<EFBFBD><CEBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
char VerID[8]; // 8 65 <20>汾<EFBFBD><E6B1BE>
|
|||
|
|
char ProductDate[8]; // 8 65 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
char NoUse2; // 1 65 <20>հ<EFBFBD>
|
|||
|
|
char MaxPhiLen[5]; // 5 65 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>
|
|||
|
|
char NoUse3[2]; // 2 65 <20>հ<EFBFBD>
|
|||
|
|
char FileType[2]; // 2 65 <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
char NoUse4[2]; // 4 65 <20>հ<EFBFBD>
|
|||
|
|
char FileNameB[10]; // 10 65 ǰ<><C7B0><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
struct Info_Block
|
|||
|
|
{
|
|||
|
|
BYTE Type ; // 1 66 Ԫ<><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
BYTE DataCode; // 1 66 Ԫ<><D4AA><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>
|
|||
|
|
BYTE Length; // 1 66 Ԫ<><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
BYTE Kind; // 1 66 Ԫ<><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
char MNEM[4]; // 4 65 Ԫ<><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
char UNIT[4]; // 4 65 Ԫ<><D4AA><EFBFBD><EFBFBD>λ
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
struct DataItem
|
|||
|
|
{
|
|||
|
|
BYTE Type; // 1 66 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
BYTE Length; // 1 66 <20><><EFBFBD>鳤<EFBFBD><E9B3A4>
|
|||
|
|
BYTE DataCode; // 1 66 <20><>ʾ<EFBFBD><CABE>ֵ
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
struct CurveS0 //40 BYTE <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD> 0
|
|||
|
|
{
|
|||
|
|
char Name[4]; // 4 65 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
char ServeID[6]; // 6 65 <20><><EFBFBD><EFBFBD>ID
|
|||
|
|
char ServeSort[8]; // 8 65 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
char Unit[4]; // 4 65 <20><>λ
|
|||
|
|
struct APICodeS // API<50><49><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
BYTE LogType; // 1 66 API<50>⾮<EFBFBD><E2BEAE><EFBFBD><EFBFBD>
|
|||
|
|
BYTE CurveType; // 1 66 API<50><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
BYTE CurveGrade; // 1 66 API<50><49><EFBFBD><EFBFBD><DFBC><EFBFBD>
|
|||
|
|
BYTE DefineData; // 1 66 API<50><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
}APICode;
|
|||
|
|
BYTE FileNo[2]; // 2 79 <20>ļ<EFBFBD><C4BC><EFBFBD>
|
|||
|
|
BYTE Length[2]; // 2 79 <20><><EFBFBD><EFBFBD> ֡<>д<EFBFBD><D0B4>ŵ<EFBFBD><C5B5>ֽ<EFBFBD><D6BD><EFBFBD>
|
|||
|
|
short noUse1; // 2 79 <20><><EFBFBD><EFBFBD>
|
|||
|
|
BYTE ProcID; // 1 66 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
BYTE DotsNum; // 1 66 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
BYTE DataType; // 1 66 <20><>ʾ<EFBFBD><CABE> <20><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
BYTE Nouse2; // 1 66 <20><><EFBFBD><EFBFBD>
|
|||
|
|
int Nouse3; // 4 73 <20><><EFBFBD><EFBFBD>
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
struct CurveS1 //40 BYTE <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD> 1
|
|||
|
|
{
|
|||
|
|
char Name[4]; // 4 65 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
char ServeID[6]; // 6 65 <20><><EFBFBD><EFBFBD>ID
|
|||
|
|
char ServeSort[8]; // 8 65 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
char Unit[4]; // 4 65 <20><>λ
|
|||
|
|
struct APICodeS // API<50><49><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
BYTE LogType; // 1 66 API<50>⾮<EFBFBD><E2BEAE><EFBFBD><EFBFBD>
|
|||
|
|
BYTE CurveType; // 1 66 API<50><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
BYTE CurveGrade; // 1 66 API<50><49><EFBFBD><EFBFBD><DFBC><EFBFBD>
|
|||
|
|
BYTE DefineData; // 1 66 API<50><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
}APICode;
|
|||
|
|
BYTE FileNo[2]; // 2 79
|
|||
|
|
BYTE Length[2]; // 2 79
|
|||
|
|
BYTE noUse1[3]; // 3 66 <20><><EFBFBD><EFBFBD>
|
|||
|
|
BYTE DotsNum; // 1 66 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
BYTE DataType; // 1 66 <20><>ʾ<EFBFBD><CABE> <20><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
BYTE ProcID[5]; // 5 77 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
};
|
|||
|
|
struct Data_Explain_Block
|
|||
|
|
{
|
|||
|
|
BYTE End_Flag; // 1 66 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
|||
|
|
BYTE Data_Type; // 1 66 <20><><EFBFBD>ݼ<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>
|
|||
|
|
BYTE Data_Mode; // 1 66 <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
int Frame_Length; // 1 73 <20><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>
|
|||
|
|
BYTE Log_Dir; // 1 66 <20><><EFBFBD>²<EFBFBD><C2B2><EFBFBD>־
|
|||
|
|
BYTE Record_Unit; // 1 66 <20>⾮<EFBFBD><E2BEAE><EFBFBD>ȵ<EFBFBD>λ
|
|||
|
|
float Refer_Point; // 4 68 <20><><EFBFBD>ݲο<DDB2><CEBF><EFBFBD>
|
|||
|
|
char Refer_Unit[4]; // 4 65 <20><><EFBFBD>ݲο<DDB2><CEBF>㵥λ
|
|||
|
|
float Frame_Step; // 2 79 ֮֡<D6A1><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȳ<EFBFBD>
|
|||
|
|
int Max_Frame_Count; // 1 66 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼֡<C2BC><D6A1>
|
|||
|
|
float Invalid_Data; // 4 68 <20><>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>
|
|||
|
|
BYTE Depth_Mode; // 1 66 <20><><EFBFBD>ȼ<EFBFBD>¼<EFBFBD><C2BC>ʽ
|
|||
|
|
char Depth_Unit[4]; // 1 65 <20><><EFBFBD>ȼ<EFBFBD>¼<EFBFBD><C2BC>λ
|
|||
|
|
BYTE Depth_Code; // 1 66 <20><><EFBFBD>ȱ<EFBFBD>ʾ<EFBFBD><CABE>
|
|||
|
|
BYTE Curve_Mode; // 1 66 <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
struct UseCurveS
|
|||
|
|
{
|
|||
|
|
char Name[40];
|
|||
|
|
char Unit[40];
|
|||
|
|
byte DotCount;
|
|||
|
|
float BytesNum;
|
|||
|
|
byte DataType;
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
class MyLisLib
|
|||
|
|
{
|
|||
|
|
private:
|
|||
|
|
|
|||
|
|
struct CurveS0 theCurveS0[MAX_CURVE_NUM];
|
|||
|
|
struct CurveS1 theCurveS1[MAX_CURVE_NUM];
|
|||
|
|
|
|||
|
|
bool openFlag;
|
|||
|
|
int fileOptions;
|
|||
|
|
int Max_Phi_Len;
|
|||
|
|
BYTE tmpb[8200];
|
|||
|
|
struct Data_Explain_Block m_explain_block;
|
|||
|
|
|
|||
|
|
float curIndex;
|
|||
|
|
double realFrame_Step;
|
|||
|
|
int m_depth_mode;
|
|||
|
|
|
|||
|
|
int b_ptr ; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
|||
|
|
BYTE tmp[40*1000*4];
|
|||
|
|
|
|||
|
|
int ii;
|
|||
|
|
|
|||
|
|
int DataPtr[MAX_CURVE_NUM]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>λ<EFBFBD><CEBB>
|
|||
|
|
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
//attrib
|
|||
|
|
|
|||
|
|
struct UseCurveS Curve[MAX_CURVE_NUM];
|
|||
|
|
QFile *DataFile;
|
|||
|
|
int Year,Month,Day;
|
|||
|
|
|
|||
|
|
int LogDir ; //-1 Up, 0 Time ,1 Down;
|
|||
|
|
float Frame_Step;
|
|||
|
|
|
|||
|
|
int ProcessBlock;
|
|||
|
|
int CurveNum;
|
|||
|
|
|
|||
|
|
int projRecordCount;
|
|||
|
|
|
|||
|
|
|
|||
|
|
MyLisLib()
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
Max_Phi_Len=1024;
|
|||
|
|
memset(tmpb,0,8200);
|
|||
|
|
Year=2000;
|
|||
|
|
Month=1;
|
|||
|
|
Day=1;
|
|||
|
|
openFlag=false;
|
|||
|
|
fileOptions=0;
|
|||
|
|
projRecordCount=1;
|
|||
|
|
|
|||
|
|
LogDir=-1;
|
|||
|
|
Frame_Step=0.1f;
|
|||
|
|
m_depth_mode=1;//1;//<2F><><EFBFBD>ȼ<EFBFBD>¼<EFBFBD><C2BC>ʽ:0-ÿ֡<C3BF><D6A1><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,1-һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
|
//=1ʱ<31><CAB1>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٽ<EFBFBD><D9BD><EFBFBD><E0B2BB>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ProcessBlock=0;
|
|||
|
|
CurveNum=0;
|
|||
|
|
for(int i=0;i<MAX_CURVE_NUM;i++)
|
|||
|
|
{
|
|||
|
|
memset(&theCurveS0[i],0,sizeof(CurveS0));
|
|||
|
|
memset(&theCurveS1[i],0,sizeof(CurveS1));
|
|||
|
|
DataPtr[i]=0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
~MyLisLib()
|
|||
|
|
{
|
|||
|
|
delete DataFile;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
int OpenDataFile(QString dataFileName, int nOpenFlags)
|
|||
|
|
{
|
|||
|
|
// srcFileFlag //nOpenFlags =0,Read,=1 Write,=2,readwrite;
|
|||
|
|
|
|||
|
|
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 CloseDataFile()
|
|||
|
|
{
|
|||
|
|
if (openFlag)
|
|||
|
|
{
|
|||
|
|
DataFile->close();
|
|||
|
|
openFlag = false;
|
|||
|
|
}
|
|||
|
|
return 0;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
int FillLisFileHead()
|
|||
|
|
{
|
|||
|
|
unsigned short phiLen;
|
|||
|
|
struct Info_File *fileH;
|
|||
|
|
///////////////////////////////////////// <20>ļ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼
|
|||
|
|
tmpb[0]=0;
|
|||
|
|
tmpb[1]=62; // =4+2+sizoef(Info_File){56}
|
|||
|
|
tmpb[2]=0x80;
|
|||
|
|
tmpb[3]=0;
|
|||
|
|
////////////////////////////////////////// // <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ͷ
|
|||
|
|
tmpb[4]=128;
|
|||
|
|
tmpb[5]=0;
|
|||
|
|
|
|||
|
|
fileH=(struct Info_File *)(&tmpb[6]);
|
|||
|
|
|
|||
|
|
memset(fileH,0x20,sizeof(struct Info_File));
|
|||
|
|
|
|||
|
|
strcpy(fileH->FileName,"LISOUT.001");
|
|||
|
|
strcpy(fileH->ServiceID,"MYYLIS");
|
|||
|
|
strcpy(fileH->VerID,"2.00");
|
|||
|
|
strcpy(fileH->ProductDate,"10/10/10");
|
|||
|
|
strcpy(fileH->FileType,"LO");
|
|||
|
|
char tmp[10];
|
|||
|
|
memset(tmp,0,10);
|
|||
|
|
sprintf(tmp,"%d",Max_Phi_Len);
|
|||
|
|
|
|||
|
|
strncpy(fileH->MaxPhiLen,tmp,5);
|
|||
|
|
//////////////////////////////////////////////
|
|||
|
|
phiLen =tmpb[1]+tmpb[0]*0x100;
|
|||
|
|
DataFile->seek(0);
|
|||
|
|
DataFile->write((char*)&tmpb[0],phiLen);
|
|||
|
|
return phiLen;
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
int FillLisFileTail()
|
|||
|
|
{
|
|||
|
|
unsigned short phiLen;
|
|||
|
|
struct Info_File * fileT;
|
|||
|
|
///////////////////////////////////////// <20>ļ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼
|
|||
|
|
tmpb[0]=0;
|
|||
|
|
tmpb[1]=62; // =4+2+sizoef(Info_File){56}
|
|||
|
|
tmpb[2]=0x80;
|
|||
|
|
tmpb[3]=0;
|
|||
|
|
////////////////////////////////////////// // <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ͷ
|
|||
|
|
tmpb[4]=129;
|
|||
|
|
tmpb[5]=0;
|
|||
|
|
|
|||
|
|
fileT = (struct Info_File *)(&tmpb[6]);
|
|||
|
|
|
|||
|
|
memset(fileT,0x20,sizeof(struct Info_File));
|
|||
|
|
|
|||
|
|
strcpy(fileT->FileName,"LISOUT.001");
|
|||
|
|
strcpy(fileT->ServiceID,"MYYLIS");
|
|||
|
|
strcpy(fileT->VerID,"2.00");
|
|||
|
|
|
|||
|
|
sprintf(fileT->ProductDate,"%2d/%2d/%2d",Month,Day,Year%100);
|
|||
|
|
|
|||
|
|
strcpy(fileT->FileType,"LO");
|
|||
|
|
|
|||
|
|
char tmp[10];
|
|||
|
|
memset(tmp,0,10);
|
|||
|
|
sprintf(tmp,"%d",Max_Phi_Len);
|
|||
|
|
|
|||
|
|
strncpy(fileT->MaxPhiLen,tmp,5);
|
|||
|
|
//////////////////////////////////////////////
|
|||
|
|
phiLen =tmpb[1]+tmpb[0]*0x100;
|
|||
|
|
|
|||
|
|
DataFile->write((char*)&tmpb[0],phiLen);
|
|||
|
|
|
|||
|
|
|
|||
|
|
return phiLen;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
int FillLisDataItemT(BYTE Type, BYTE Length, BYTE DataCode, BYTE tmpt[],unsigned short phiLen)
|
|||
|
|
{
|
|||
|
|
int item_Len;
|
|||
|
|
struct DataItem item;
|
|||
|
|
|
|||
|
|
item.Type = Type;
|
|||
|
|
item.Length = Length;
|
|||
|
|
item.DataCode= DataCode;
|
|||
|
|
|
|||
|
|
memcpy(tmpb+phiLen,&item,sizeof(DataItem));
|
|||
|
|
|
|||
|
|
if( item.Length>0)
|
|||
|
|
{
|
|||
|
|
memcpy(tmpb+phiLen+sizeof(DataItem),tmpt,item.Length);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
item_Len = sizeof(struct DataItem) +item.Length ;
|
|||
|
|
|
|||
|
|
return item_Len;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
long FillLisDataBolck()
|
|||
|
|
{
|
|||
|
|
int i,tmpi;
|
|||
|
|
unsigned short phiLen;
|
|||
|
|
BYTE t1[100];
|
|||
|
|
|
|||
|
|
|
|||
|
|
ProcessBlock=0;
|
|||
|
|
for(i=0;i<CurveNum;i++)
|
|||
|
|
{
|
|||
|
|
ProcessBlock+=Curve[i].BytesNum;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/////////////////////////////// <20><>д<EFBFBD><D0B4><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼
|
|||
|
|
tmpb[0] = 0;
|
|||
|
|
tmpb[1] = 0;
|
|||
|
|
tmpb[2] = 0x80;
|
|||
|
|
tmpb[3] = 0;
|
|||
|
|
|
|||
|
|
tmpb[4] =64; //type
|
|||
|
|
tmpb[5] =0;
|
|||
|
|
|
|||
|
|
phiLen=6;
|
|||
|
|
|
|||
|
|
memset(&m_explain_block,0,sizeof(struct Data_Explain_Block));
|
|||
|
|
|
|||
|
|
m_explain_block.Data_Mode = 0;
|
|||
|
|
m_explain_block.Data_Type = 0;
|
|||
|
|
|
|||
|
|
if(LogDir<0)m_explain_block.Log_Dir=1;
|
|||
|
|
else m_explain_block.Log_Dir=255;
|
|||
|
|
|
|||
|
|
if(LogDir==0)m_explain_block.Record_Unit = 0;
|
|||
|
|
else m_explain_block.Record_Unit = 255;
|
|||
|
|
|
|||
|
|
m_explain_block.Frame_Step=Frame_Step;
|
|||
|
|
|
|||
|
|
m_explain_block.Invalid_Data= -9999.99f;
|
|||
|
|
m_explain_block.Depth_Mode = m_depth_mode;
|
|||
|
|
m_explain_block.Depth_Code = 68;
|
|||
|
|
m_explain_block.Curve_Mode = 1;
|
|||
|
|
|
|||
|
|
m_explain_block.Frame_Length= ProcessBlock+(1-m_explain_block.Depth_Mode)*sizeof(float) ;
|
|||
|
|
|
|||
|
|
//<2F><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
t1[0]=m_explain_block.Data_Mode;
|
|||
|
|
phiLen += FillLisDataItemT(1,1,66,t1,phiLen);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
t1[0]=m_explain_block.Data_Type;
|
|||
|
|
phiLen += FillLisDataItemT(2,1,66,t1,phiLen);
|
|||
|
|
|
|||
|
|
//֡<><D6A1><EFBFBD><EFBFBD>
|
|||
|
|
tmpi=m_explain_block.Frame_Length;
|
|||
|
|
ConvertFloatToLisData((float)tmpi,t1,79);
|
|||
|
|
phiLen += FillLisDataItemT(3,2,79,t1,phiLen);
|
|||
|
|
|
|||
|
|
// <20>⾮<EFBFBD><E2BEAE><EFBFBD><EFBFBD>
|
|||
|
|
// 1=<3D>ϲ<EFBFBD> <20><>255=<3D>²⣻ 0Ϊ<30><CEAA><EFBFBD>߶<EFBFBD><DFB6><EFBFBD><EFBFBD>ǣ<EFBFBD>ȱʡΪ1
|
|||
|
|
|
|||
|
|
t1[0]=m_explain_block.Log_Dir;
|
|||
|
|
phiLen += FillLisDataItemT(4,1,66,t1,phiLen);
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>ȵ<EFBFBD>λ
|
|||
|
|
// 1= Ӣ<><D3A2> <20><> 255=<3D><> <20><>0= ʱ<>䣻 ȱʡΪ1 *
|
|||
|
|
t1[0]=m_explain_block.Record_Unit;
|
|||
|
|
phiLen += FillLisDataItemT(5,1,66,t1,phiLen);
|
|||
|
|
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ݲο<DDB2><CEBF><EFBFBD>
|
|||
|
|
memset(t1,0,4);
|
|||
|
|
phiLen += FillLisDataItemT(6,4,73,t1,phiLen);
|
|||
|
|
|
|||
|
|
|
|||
|
|
if(LogDir !=0 ) //depth
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD>ݲο<DDB2><CEBF><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>λ
|
|||
|
|
memcpy(t1,"M ",4);
|
|||
|
|
phiLen += FillLisDataItemT(7,4,65,t1,phiLen);
|
|||
|
|
|
|||
|
|
//֡<><D6A1><EFBFBD><EFBFBD>
|
|||
|
|
ConvertFloatToLisData(float(m_explain_block.Frame_Step),t1,68);
|
|||
|
|
phiLen += FillLisDataItemT(8,4,68,t1,phiLen);
|
|||
|
|
|
|||
|
|
//֡<><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
|||
|
|
memcpy(t1,"M ",4);
|
|||
|
|
|
|||
|
|
phiLen += FillLisDataItemT(9,4,65,t1,phiLen);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
else //time
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD>ݲο<DDB2><CEBF><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>λ
|
|||
|
|
|
|||
|
|
memcpy(t1,"S ",4);
|
|||
|
|
phiLen += FillLisDataItemT(7,4,65,t1,phiLen);
|
|||
|
|
|
|||
|
|
//֡<><D6A1><EFBFBD><EFBFBD>
|
|||
|
|
ConvertFloatToLisData(float(m_explain_block.Frame_Step),t1,68);
|
|||
|
|
phiLen += FillLisDataItemT(8,4,68,t1,phiLen);
|
|||
|
|
|
|||
|
|
//֡<><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
|||
|
|
memcpy(t1,"S ",4);
|
|||
|
|
|
|||
|
|
phiLen += FillLisDataItemT(9,4,65,t1,phiLen);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼֡<C2BC><D6A1>
|
|||
|
|
t1[0]=(Max_Phi_Len-6 -m_explain_block.Depth_Mode *sizeof(float))/ProcessBlock;
|
|||
|
|
if(t1[0]>255)
|
|||
|
|
t1[0]=255;
|
|||
|
|
if(t1[0]==0)
|
|||
|
|
t1[0]=1;
|
|||
|
|
phiLen += FillLisDataItemT(11,1,66,t1,phiLen);
|
|||
|
|
|
|||
|
|
//<2F><>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD> ȱʡΪ-9999.95
|
|||
|
|
ConvertFloatToLisData(m_explain_block.Invalid_Data,t1,68);
|
|||
|
|
phiLen += FillLisDataItemT(12,4,68,t1,phiLen);
|
|||
|
|
|
|||
|
|
if(m_explain_block.Depth_Mode==1)
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD>ȼ<EFBFBD>¼<EFBFBD><C2BC>ʽ
|
|||
|
|
t1[0]=m_explain_block.Depth_Mode;
|
|||
|
|
phiLen += FillLisDataItemT(13,1,66,t1,phiLen);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ȵ<EFBFBD>λ
|
|||
|
|
|
|||
|
|
if(LogDir !=0)
|
|||
|
|
memcpy(t1,"M ",4);
|
|||
|
|
else
|
|||
|
|
memcpy(t1,"S ",4);
|
|||
|
|
|
|||
|
|
phiLen += FillLisDataItemT(14,4,65,t1,phiLen);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD>
|
|||
|
|
t1[0]=m_explain_block.Depth_Code;
|
|||
|
|
phiLen += FillLisDataItemT(15,1,66,t1,phiLen);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
t1[0]=m_explain_block.Curve_Mode;
|
|||
|
|
phiLen += FillLisDataItemT(16,1,66,t1,phiLen);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
|||
|
|
t1[0]=0;
|
|||
|
|
m_explain_block.End_Flag= (phiLen+sizeof(struct DataItem))%2;
|
|||
|
|
phiLen += FillLisDataItemT(0,m_explain_block.End_Flag,66,t1,phiLen);
|
|||
|
|
|
|||
|
|
///////////////////////////////////////////////////////////////////////
|
|||
|
|
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD>
|
|||
|
|
struct CurveS1 curve1;
|
|||
|
|
struct CurveS0 curve0;
|
|||
|
|
|
|||
|
|
memset(&curve1,0x20,sizeof(struct CurveS1));
|
|||
|
|
memset(&curve0,0x20,sizeof(struct CurveS0));
|
|||
|
|
|
|||
|
|
BYTE ProcID=2;
|
|||
|
|
|
|||
|
|
if(LogDir<0) // Up logging
|
|||
|
|
ProcID += 128;
|
|||
|
|
|
|||
|
|
else if( LogDir>0 ) // down logging
|
|||
|
|
ProcID += 64;
|
|||
|
|
|
|||
|
|
else // time logging
|
|||
|
|
ProcID += 16; // data channel not on depth
|
|||
|
|
|
|||
|
|
//////////////////////////////// DEPT//////////////////////
|
|||
|
|
if(m_explain_block.Depth_Mode==0)
|
|||
|
|
{
|
|||
|
|
if(m_explain_block.Curve_Mode==1)
|
|||
|
|
{
|
|||
|
|
memset(&curve1,0x20,sizeof(struct CurveS1));
|
|||
|
|
strncpy(curve1.Name,"DEPT",4);
|
|||
|
|
strncpy(curve1.ServeID ,"MYYLIS",6);
|
|||
|
|
strncpy(curve1.Unit,"M ",4);
|
|||
|
|
memset(&curve1.APICode,0,4);
|
|||
|
|
curve1.DotsNum = 1;
|
|||
|
|
ConvertFloatToLisData(float( 1 *sizeof(float)),curve1.Length,79);
|
|||
|
|
curve1.DataType = 68; //PC<50><43><EFBFBD><EFBFBD>IEEE<45><45>ʽ <20><>ʾ<EFBFBD><CABE>Ϊ?
|
|||
|
|
ConvertFloatToLisData((float)1.0,curve1.FileNo,79);
|
|||
|
|
memset(&curve1.ProcID,0,5);
|
|||
|
|
curve1.ProcID[0]=ProcID;
|
|||
|
|
memcpy(tmpb+phiLen,&curve1,sizeof(struct CurveS1));
|
|||
|
|
phiLen+=sizeof(struct CurveS1);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
memset(&curve0,0x20,sizeof(struct CurveS0));
|
|||
|
|
strncpy(curve0.Name,"DEPT",4);
|
|||
|
|
strncpy(curve0.ServeID ,"MYYLIS",6);
|
|||
|
|
strncpy(curve0.Unit,"M ",4);
|
|||
|
|
memset(&curve0.APICode,0,4);
|
|||
|
|
curve0.DotsNum = 1;
|
|||
|
|
ConvertFloatToLisData(float( 1 *sizeof(float)),curve0.Length,79);
|
|||
|
|
curve0.DataType = 68; //PC<50><43><EFBFBD><EFBFBD>IEEE<45><45>ʽ <20><>ʾ<EFBFBD><CABE>Ϊ?
|
|||
|
|
ConvertFloatToLisData((float)1.0,curve0.FileNo,79);
|
|||
|
|
memset(&curve0.ProcID,0,1);
|
|||
|
|
curve0.ProcID=ProcID;
|
|||
|
|
memcpy(tmpb+phiLen,&curve0,sizeof(struct CurveS0));
|
|||
|
|
phiLen+=sizeof(struct CurveS0);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
///////////////////////////////////////////
|
|||
|
|
for(i=0;i<CurveNum;i++)
|
|||
|
|
{
|
|||
|
|
memset(&curve1,0x20,sizeof(struct CurveS1));
|
|||
|
|
if(m_explain_block.Curve_Mode==1)
|
|||
|
|
{
|
|||
|
|
strncpy(curve1.Name,Curve[i].Name,4);
|
|||
|
|
strncpy(curve1.ServeID ,"MYYLIS",6);
|
|||
|
|
strncpy(curve1.Unit,Curve[i].Unit,4);
|
|||
|
|
memset(&curve1.APICode,0,4);
|
|||
|
|
|
|||
|
|
curve1.DotsNum = Curve[i].DotCount;
|
|||
|
|
|
|||
|
|
ConvertFloatToLisData(Curve[i].BytesNum,curve1.Length,79);
|
|||
|
|
curve1.DataType = Curve[i].DataType; //PC<50><43><EFBFBD><EFBFBD>IEEE<45><45>ʽ <20><>ʾ<EFBFBD><CABE>Ϊ?
|
|||
|
|
|
|||
|
|
memset(&curve1.ProcID,0,5);
|
|||
|
|
curve1.ProcID[0]=ProcID;
|
|||
|
|
memcpy(tmpb+phiLen,&curve1,sizeof(struct CurveS1));
|
|||
|
|
phiLen+=sizeof(struct CurveS1);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
strncpy(curve0.Name,Curve[i].Name,4);
|
|||
|
|
strncpy(curve0.ServeID ,"MYYLIS",6);
|
|||
|
|
strncpy(curve0.Unit,Curve[i].Unit,4);
|
|||
|
|
memset(&curve0.APICode,0,4);
|
|||
|
|
|
|||
|
|
curve0.DotsNum = Curve[i].DotCount;
|
|||
|
|
|
|||
|
|
ConvertFloatToLisData(Curve[i].BytesNum,curve0.Length,79);
|
|||
|
|
curve0.DataType = Curve[i].DataType; //PC<50><43><EFBFBD><EFBFBD>IEEE<45><45>ʽ <20><>ʾ<EFBFBD><CABE>Ϊ?
|
|||
|
|
|
|||
|
|
memset(&curve0.ProcID,0,1);
|
|||
|
|
curve0.ProcID=ProcID;
|
|||
|
|
memcpy(tmpb+phiLen,&curve0,sizeof(struct CurveS0));
|
|||
|
|
phiLen+=sizeof(struct CurveS0);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
///////////////////////////// <20><>д<EFBFBD><D0B4><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼
|
|||
|
|
|
|||
|
|
if(phiLen > Max_Phi_Len)
|
|||
|
|
{
|
|||
|
|
tmpb[0] = Max_Phi_Len/0x100;
|
|||
|
|
tmpb[1] = Max_Phi_Len%0x100;
|
|||
|
|
tmpb[2] = 0x80;
|
|||
|
|
tmpb[3] = 0x01;
|
|||
|
|
DataFile->write((char*)&tmpb[0],Max_Phi_Len);
|
|||
|
|
int lastLen;
|
|||
|
|
|
|||
|
|
lastLen= phiLen - Max_Phi_Len + 4 ;
|
|||
|
|
|
|||
|
|
tmpb[Max_Phi_Len-4] = lastLen /0x100;
|
|||
|
|
|
|||
|
|
tmpb[Max_Phi_Len-3] = lastLen %0x100;
|
|||
|
|
|
|||
|
|
tmpb[Max_Phi_Len-2] = 0x80;
|
|||
|
|
|
|||
|
|
tmpb[Max_Phi_Len-1] = 0x02;
|
|||
|
|
|
|||
|
|
DataFile->write((char*)&tmpb[0] + Max_Phi_Len -4,lastLen);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
tmpb[0] = phiLen/0x100;
|
|||
|
|
tmpb[1] = phiLen%0x100;
|
|||
|
|
tmpb[2] = 0x80;
|
|||
|
|
tmpb[3] = 0;
|
|||
|
|
|
|||
|
|
DataFile->write((char*)&tmpb[0],phiLen);
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return phiLen;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
BYTE t1[100];
|
|||
|
|
void Data_Write(BYTE *ProjBuf)
|
|||
|
|
{
|
|||
|
|
if(m_explain_block.Depth_Mode==0)//ÿ֡<C3BF><D6A1><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
ConvertFloatToLisData((float)(curIndex+ii*realFrame_Step) ,t1,m_explain_block.Depth_Code);
|
|||
|
|
memcpy(&tmp[b_ptr],t1,4);
|
|||
|
|
b_ptr+=4;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
for(int i=0;i<CurveNum;i++)
|
|||
|
|
{
|
|||
|
|
if(Curve[i].DataType==79)
|
|||
|
|
{
|
|||
|
|
int len=Curve[i].BytesNum/2;
|
|||
|
|
for(int j=0;j<len;j++)
|
|||
|
|
{
|
|||
|
|
ConvertFloatToLisData(*(short*)(ProjBuf+DataPtr[i]+j*2),&tmp[b_ptr],Curve[i].DataType);
|
|||
|
|
b_ptr+=2;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else if(Curve[i].DataType==73)
|
|||
|
|
{
|
|||
|
|
int len=Curve[i].BytesNum/4;
|
|||
|
|
for(int j=0;j<len;j++)
|
|||
|
|
{
|
|||
|
|
ConvertFloatToLisData(*(int*)(ProjBuf+DataPtr[i]+j*4),&tmp[b_ptr],Curve[i].DataType);
|
|||
|
|
b_ptr+=4;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
int len=Curve[i].BytesNum/4;
|
|||
|
|
for(int j=0;j<len;j++)
|
|||
|
|
{
|
|||
|
|
ConvertFloatToLisData(*(float*)(ProjBuf+DataPtr[i]+j*4),&tmp[b_ptr],68);
|
|||
|
|
b_ptr+=4;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
ii++;
|
|||
|
|
int curRecordCount=projRecordCount;
|
|||
|
|
|
|||
|
|
if(ii%projRecordCount==0)//һ<><D2BB><EFBFBD><EFBFBD><DFBC><EFBFBD><EFBFBD>ݿ<EFBFBD>
|
|||
|
|
{
|
|||
|
|
b_ptr=(ProcessBlock+(1-m_explain_block.Depth_Mode)*sizeof(float))*curRecordCount;
|
|||
|
|
|
|||
|
|
int PhiN=0,LogHead;
|
|||
|
|
do//ȫ<><C8AB><EFBFBD><EFBFBD><EFBFBD>ݷֿ<DDB7><D6BF>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PhiN
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼ͷ4bytes,<2C><EFBFBD><DFBC><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>2bytes,<2C><><EFBFBD>ȳ<EFBFBD>ʼֵ
|
|||
|
|
tmpb[2]=0x80;
|
|||
|
|
tmpb[3]=0x00;
|
|||
|
|
unsigned short phiLen;
|
|||
|
|
phiLen = 4;
|
|||
|
|
if(PhiN==0)
|
|||
|
|
{
|
|||
|
|
tmpb[4] = 0; //<2F><EFBFBD><DFBC><EFBFBD>¼ͷ <20><><EFBFBD>ݼ<EFBFBD>¼
|
|||
|
|
tmpb[5] = 0;
|
|||
|
|
phiLen += 2;
|
|||
|
|
if(m_explain_block.Depth_Mode==1)//һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
|
{
|
|||
|
|
ConvertFloatToLisData((float)(curIndex+(ii-projRecordCount+1)*realFrame_Step) ,t1,m_explain_block.Depth_Code);
|
|||
|
|
memcpy(tmpb+phiLen,t1,4);
|
|||
|
|
phiLen += 4;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{//ֻ<><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>û<EFBFBD><C3BB><EFBFBD><EFBFBD><DFBC><EFBFBD>Ϣ
|
|||
|
|
}
|
|||
|
|
LogHead=phiLen;
|
|||
|
|
if(Max_Phi_Len-LogHead<b_ptr)
|
|||
|
|
{
|
|||
|
|
memcpy(tmpb+phiLen,tmp+(ProcessBlock+(1-m_explain_block.Depth_Mode)*sizeof(float))*curRecordCount-b_ptr,Max_Phi_Len-LogHead);
|
|||
|
|
phiLen+= (Max_Phi_Len-LogHead);
|
|||
|
|
b_ptr -= (Max_Phi_Len-LogHead);
|
|||
|
|
|
|||
|
|
if(PhiN==0)
|
|||
|
|
tmpb[3] = 1;
|
|||
|
|
else if(b_ptr>0)
|
|||
|
|
tmpb[3] = 3;
|
|||
|
|
else
|
|||
|
|
tmpb[3] = 2;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
memcpy(tmpb+phiLen,tmp+(ProcessBlock+(1-m_explain_block.Depth_Mode)*sizeof(float))*curRecordCount-b_ptr,b_ptr);
|
|||
|
|
phiLen+= b_ptr;
|
|||
|
|
b_ptr=0;
|
|||
|
|
if(PhiN==0)
|
|||
|
|
tmpb[3]=0;
|
|||
|
|
else
|
|||
|
|
tmpb[3] = 2;
|
|||
|
|
}
|
|||
|
|
tmpb[0] =(BYTE)(phiLen / 0x100);
|
|||
|
|
tmpb[1] =(BYTE)(phiLen % 0x100);
|
|||
|
|
DataFile->write((char*)&tmpb[0], phiLen);
|
|||
|
|
PhiN++;
|
|||
|
|
}while(b_ptr>0);
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
void End_Flush()
|
|||
|
|
{
|
|||
|
|
int curRecordCount=projRecordCount;
|
|||
|
|
|
|||
|
|
if(ii%projRecordCount>0 )
|
|||
|
|
{
|
|||
|
|
curRecordCount=ii%projRecordCount; //ʣ<><CAA3><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
b_ptr=(ProcessBlock+(1-m_explain_block.Depth_Mode)*sizeof(float))*curRecordCount;
|
|||
|
|
|
|||
|
|
int PhiN=0,LogHead;
|
|||
|
|
do
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼ͷ4bytes,<2C><EFBFBD><DFBC><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>2bytes,<2C><><EFBFBD>ȳ<EFBFBD>ʼֵ
|
|||
|
|
tmpb[2]=0x80;
|
|||
|
|
tmpb[3]=0x00;
|
|||
|
|
unsigned short phiLen;
|
|||
|
|
phiLen = 4;
|
|||
|
|
if(PhiN==0)
|
|||
|
|
{
|
|||
|
|
tmpb[4] = 0; //<2F><EFBFBD><DFBC><EFBFBD>¼ͷ <20><><EFBFBD>ݼ<EFBFBD>¼
|
|||
|
|
tmpb[5] = 0;
|
|||
|
|
phiLen += 2;
|
|||
|
|
if(m_explain_block.Depth_Mode==1)//һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
|
{
|
|||
|
|
ConvertFloatToLisData((float)(curIndex+(ii-curRecordCount+1)*realFrame_Step) ,t1,m_explain_block.Depth_Code);
|
|||
|
|
memcpy(tmpb+phiLen,t1,4);
|
|||
|
|
phiLen += 4;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{//ֻ<><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>û<EFBFBD><C3BB><EFBFBD><EFBFBD><DFBC><EFBFBD>Ϣ
|
|||
|
|
}
|
|||
|
|
LogHead=phiLen;
|
|||
|
|
if(Max_Phi_Len-LogHead<b_ptr)
|
|||
|
|
{
|
|||
|
|
memcpy(tmpb+phiLen,tmp+(ProcessBlock+(1-m_explain_block.Depth_Mode)*sizeof(float))*curRecordCount-b_ptr,Max_Phi_Len-LogHead);
|
|||
|
|
phiLen+= (Max_Phi_Len-LogHead);
|
|||
|
|
b_ptr -= (Max_Phi_Len-LogHead);
|
|||
|
|
|
|||
|
|
if(PhiN==0)
|
|||
|
|
tmpb[3] = 1;
|
|||
|
|
else if(b_ptr>0)
|
|||
|
|
tmpb[3] = 3;
|
|||
|
|
else
|
|||
|
|
tmpb[3] = 2;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
memcpy(tmpb+phiLen,tmp+(ProcessBlock+(1-m_explain_block.Depth_Mode)*sizeof(float))*curRecordCount-b_ptr,b_ptr);
|
|||
|
|
phiLen+= b_ptr;
|
|||
|
|
b_ptr=0;
|
|||
|
|
if(PhiN==0)
|
|||
|
|
tmpb[3]=0;
|
|||
|
|
else
|
|||
|
|
tmpb[3] = 2;
|
|||
|
|
}
|
|||
|
|
tmpb[0] =(BYTE)(phiLen / 0x100);
|
|||
|
|
tmpb[1] =(BYTE)(phiLen % 0x100);
|
|||
|
|
DataFile->write((char*)&tmpb[0], phiLen);
|
|||
|
|
PhiN++;
|
|||
|
|
}while(b_ptr>0);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
void Begin_Write(float StartIndex)
|
|||
|
|
{
|
|||
|
|
curIndex=StartIndex;
|
|||
|
|
ii=0;
|
|||
|
|
|
|||
|
|
realFrame_Step = m_explain_block.Frame_Step;
|
|||
|
|
|
|||
|
|
if(LogDir<0) //up logging
|
|||
|
|
realFrame_Step *= (-1);
|
|||
|
|
|
|||
|
|
if(m_explain_block.Depth_Mode) //һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
projRecordCount= (Max_Phi_Len-6-sizeof(float) )/ProcessBlock;
|
|||
|
|
else //ÿ֡<C3BF><D6A1><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
projRecordCount= (Max_Phi_Len-6)/ (ProcessBlock+sizeof(float));
|
|||
|
|
|
|||
|
|
if(projRecordCount>255) projRecordCount=255;
|
|||
|
|
if(projRecordCount==0) projRecordCount=1;
|
|||
|
|
|
|||
|
|
int recl=0;
|
|||
|
|
for(int i=0;i<CurveNum;i++)
|
|||
|
|
{
|
|||
|
|
DataPtr[i]=recl;
|
|||
|
|
recl+=Curve[i].BytesNum;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
b_ptr=0;
|
|||
|
|
memset(t1,0,100);
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|
|||
|
|
void ConvertFloatToLisData(float srcData, BYTE tmpb[], BYTE dataCode)
|
|||
|
|
{
|
|||
|
|
int i,j,sign,dd,IntData;
|
|||
|
|
double TailData;
|
|||
|
|
|
|||
|
|
if(srcData<0) sign=-1;
|
|||
|
|
else sign=1;
|
|||
|
|
|
|||
|
|
switch(dataCode)
|
|||
|
|
{
|
|||
|
|
case 65: // 'C' ASCII
|
|||
|
|
case 66: // 'B' 8λ<38><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
tmpb[0]= (BYTE)(srcData);
|
|||
|
|
break;
|
|||
|
|
case 56: // 8λ<38><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
dd= (int)fabs(srcData);
|
|||
|
|
if(srcData<0)
|
|||
|
|
{
|
|||
|
|
dd = ((~dd) &0x0ff +1)&0xff;
|
|||
|
|
dd=dd|0x80;
|
|||
|
|
}
|
|||
|
|
tmpb[0]=dd;
|
|||
|
|
break;
|
|||
|
|
case 79:// 16λ<36><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
dd= (int)(fabs(srcData)+0.5);
|
|||
|
|
if(srcData<0)
|
|||
|
|
{
|
|||
|
|
dd=( (~dd)+1)&0xffff;
|
|||
|
|
dd=dd|0x8000;
|
|||
|
|
}
|
|||
|
|
tmpb[0]=dd>>8;
|
|||
|
|
tmpb[1]=dd&0x0ff;
|
|||
|
|
break;
|
|||
|
|
case 73:// 32λ<32><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
dd= (int)(srcData);
|
|||
|
|
if(srcData<0)
|
|||
|
|
{
|
|||
|
|
dd=( (~dd)+1)&0xffffffff;
|
|||
|
|
dd=dd|0x80000000;
|
|||
|
|
}
|
|||
|
|
tmpb[0]=dd>>24;
|
|||
|
|
tmpb[1]=dd>>16;
|
|||
|
|
tmpb[2]=dd>>8;
|
|||
|
|
tmpb[3]=dd&0x0ff;
|
|||
|
|
break;
|
|||
|
|
case 70: // 32λ<32><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
dd=(int)(fabs(srcData)*10);
|
|||
|
|
dd=dd/10;
|
|||
|
|
IntData=dd;
|
|||
|
|
if(srcData<0)
|
|||
|
|
{
|
|||
|
|
dd=( (~dd)+1)&0xffff;
|
|||
|
|
dd=dd|0x8000;
|
|||
|
|
}
|
|||
|
|
tmpb[0]=dd>>8;
|
|||
|
|
tmpb[1]=dd&0x0ff;
|
|||
|
|
//С<><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
TailData = fabs(srcData) -IntData;
|
|||
|
|
for(i=0;i<2;i++)
|
|||
|
|
{ tmpb[2+i]=0;
|
|||
|
|
for(j=0;j<8;j++)
|
|||
|
|
{
|
|||
|
|
TailData *=2.0;
|
|||
|
|
if(TailData>=1)
|
|||
|
|
tmpb[2+i]+=(int)pow(2.,8-j);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
case 49: // 16λ <20>ͷֱ<CDB7><D6B1><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
break;
|
|||
|
|
case 50: // 'F' 32λ<32>ͷֱ<CDB7><D6B1>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
break;
|
|||
|
|
case 68: // 'D' 32λ<32>߷ֱ<DFB7><D6B1>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
int ExData,TailData;
|
|||
|
|
float *tmpf;
|
|||
|
|
BYTE tmpt[4];
|
|||
|
|
|
|||
|
|
tmpf=(float *)tmpt;
|
|||
|
|
*tmpf=srcData;
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ExData = (tmpt[3]&0x7f )<<1;
|
|||
|
|
ExData = ExData+(tmpt[2]>>7);
|
|||
|
|
ExData = ExData-127;
|
|||
|
|
ExData = ExData+1;
|
|||
|
|
if(srcData>0)
|
|||
|
|
{
|
|||
|
|
ExData=128 + ExData;
|
|||
|
|
tmpb[0] = ExData>>1 ;
|
|||
|
|
tmpb[1] =(ExData &0x01) *0x80;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
ExData=127 - ExData;
|
|||
|
|
tmpb[0] =( ExData>>1) +0x80;
|
|||
|
|
tmpb[1] =(ExData &0x01) *0x80;
|
|||
|
|
}
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>β<EFBFBD><CEB2>
|
|||
|
|
TailData = (tmpt[2]&0x7f) *0x10000 + tmpt[1]*0x100+ tmpt[0];
|
|||
|
|
TailData =TailData &0x7fffff;
|
|||
|
|
|
|||
|
|
double aa;
|
|||
|
|
|
|||
|
|
aa=0;
|
|||
|
|
for(i=0;i<23;i++)
|
|||
|
|
{
|
|||
|
|
if(TailData &0x01)
|
|||
|
|
aa+=pow(2.,i-23);
|
|||
|
|
|
|||
|
|
TailData=TailData>>1;
|
|||
|
|
}
|
|||
|
|
aa=aa+1;
|
|||
|
|
|
|||
|
|
aa=aa/2.0;
|
|||
|
|
|
|||
|
|
int ww;
|
|||
|
|
|
|||
|
|
ww=0;
|
|||
|
|
for(i=0;i<23;i++)
|
|||
|
|
{
|
|||
|
|
aa =aa*2;
|
|||
|
|
if(aa>=1.0)
|
|||
|
|
{
|
|||
|
|
ww+=(int)pow(2.,22-i);
|
|||
|
|
aa=aa-1.0;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(srcData<0)
|
|||
|
|
{
|
|||
|
|
ww= (~ww)+1;
|
|||
|
|
}
|
|||
|
|
ww =ww&0x7fffff;
|
|||
|
|
int aq;
|
|||
|
|
aq=ww>>16;
|
|||
|
|
aq=aq&0x7f;
|
|||
|
|
tmpb[1]+=aq;
|
|||
|
|
|
|||
|
|
aq=ww>>8;
|
|||
|
|
aq=aq&0xff;
|
|||
|
|
tmpb[2]=aq;
|
|||
|
|
|
|||
|
|
aq=ww&0xff;
|
|||
|
|
tmpb[3]=aq;
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
float ConvertLisDataToFloat(BYTE dataCode, BYTE srcData[])
|
|||
|
|
{
|
|||
|
|
int i,sign,dd;
|
|||
|
|
double rData,ExData,TailData;
|
|||
|
|
|
|||
|
|
rData=0;
|
|||
|
|
|
|||
|
|
if(srcData[0]&0x80) sign=-1;
|
|||
|
|
else sign=1;
|
|||
|
|
|
|||
|
|
switch(dataCode)
|
|||
|
|
{
|
|||
|
|
case 56: // //8 λ<>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
rData=srcData[0];
|
|||
|
|
if(sign<0)
|
|||
|
|
rData = rData -pow(2.,8);
|
|||
|
|
break;
|
|||
|
|
case 65: //'C'
|
|||
|
|
case 66: // 'B' //8 λ<><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
rData=srcData[0];
|
|||
|
|
break;
|
|||
|
|
case 73: // 'I' //32λ<32><CEBB><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
dd = ((srcData[0] &0x7f)*0x100 +srcData[1]) *0x10000
|
|||
|
|
+srcData[2]*0x100 +srcData[3];
|
|||
|
|
if(sign<0)
|
|||
|
|
{
|
|||
|
|
dd=~(dd-1);
|
|||
|
|
}
|
|||
|
|
rData =sign *dd;
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
case 79: // 'N' //16λ<36><CEBB><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
dd = (srcData[0] &0x7f)*0x100 +srcData[1];
|
|||
|
|
if(sign<0)
|
|||
|
|
{
|
|||
|
|
dd=~(dd-1);
|
|||
|
|
}
|
|||
|
|
rData =sign *dd;
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
case 49: // 16λ<36><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{ //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ExData= srcData[1] &0x0f;
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>β<EFBFBD><CEB2>
|
|||
|
|
dd=(srcData[0] &0x7f )*0x10 +(srcData[1]>>4);
|
|||
|
|
if(sign<0)
|
|||
|
|
{
|
|||
|
|
dd=~(dd-1);
|
|||
|
|
}
|
|||
|
|
TailData=0;
|
|||
|
|
for(i=0;i<11;i++)
|
|||
|
|
{
|
|||
|
|
if(dd &0x01)
|
|||
|
|
{
|
|||
|
|
TailData+=pow(2.,i-11);
|
|||
|
|
}
|
|||
|
|
dd=dd>>1;
|
|||
|
|
}
|
|||
|
|
TailData =sign *TailData;
|
|||
|
|
|
|||
|
|
rData = TailData *pow(2,ExData);
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
case 50: // 'F' 32λ<32>ͷֱ<CDB7><D6B1>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{ //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
dd= srcData[0]*0x100 + srcData[1];
|
|||
|
|
if(sign<0)
|
|||
|
|
{
|
|||
|
|
dd=~(dd-1);
|
|||
|
|
}
|
|||
|
|
dd=dd&0x7f;
|
|||
|
|
|
|||
|
|
ExData=0;
|
|||
|
|
for(i=0;i<15;i++)
|
|||
|
|
{
|
|||
|
|
if(dd&0x01)
|
|||
|
|
ExData+=pow(2.,i+1);
|
|||
|
|
dd=dd>>1;
|
|||
|
|
}
|
|||
|
|
ExData= sign *ExData;
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>β<EFBFBD><CEB2>
|
|||
|
|
if(srcData[2]&0x80) sign=-1;
|
|||
|
|
else sign=1;
|
|||
|
|
|
|||
|
|
dd= srcData[2]*0x100 + srcData[3];
|
|||
|
|
if(sign<0)
|
|||
|
|
{
|
|||
|
|
dd=~(dd-1);
|
|||
|
|
}
|
|||
|
|
dd=dd&0x7f;
|
|||
|
|
TailData=0;
|
|||
|
|
for(i=0;i<15;i++)
|
|||
|
|
{
|
|||
|
|
if(dd &0x01)
|
|||
|
|
TailData+=pow(2.,i-15);
|
|||
|
|
dd=dd>>1;
|
|||
|
|
}
|
|||
|
|
TailData = sign *TailData;
|
|||
|
|
|
|||
|
|
rData=TailData *pow(2.,ExData);
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
case 68: // 'D' //32<33><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{ //<2F><><EFBFBD>両<EFBFBD><E4B8A1><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD>
|
|||
|
|
dd=(srcData[0]&0x7f)*2 +(srcData[1]>>7);
|
|||
|
|
ExData=dd &0x0ff;
|
|||
|
|
// <20><><EFBFBD>両<EFBFBD><E4B8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β<EFBFBD><CEB2>
|
|||
|
|
dd= ((srcData[1]&0x7f)*0x100 + srcData[2])*0x100+ srcData[3];
|
|||
|
|
if(sign<0)
|
|||
|
|
{
|
|||
|
|
dd=~(dd-1);
|
|||
|
|
}
|
|||
|
|
TailData=0;
|
|||
|
|
for(i=0;i<23;i++)
|
|||
|
|
{
|
|||
|
|
if(dd&0x01)
|
|||
|
|
TailData+=pow(2.,i-23);
|
|||
|
|
dd=dd>>1;
|
|||
|
|
}
|
|||
|
|
TailData = sign *TailData;
|
|||
|
|
|
|||
|
|
if(sign>0)
|
|||
|
|
rData= TailData *pow(2.,ExData-128);
|
|||
|
|
else
|
|||
|
|
rData= TailData *pow(2.,127-ExData);
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
case 70: // 32λ<32><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{ //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
dd= (srcData[0] &0x7f)*0x100+ srcData[1];
|
|||
|
|
if(sign<0)
|
|||
|
|
{
|
|||
|
|
dd=~(dd-1);
|
|||
|
|
}
|
|||
|
|
dd=dd&0x7fff;
|
|||
|
|
ExData=dd*sign;
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>β<EFBFBD><CEB2>
|
|||
|
|
dd=srcData[2]*0x100+srcData[3];
|
|||
|
|
TailData=0;
|
|||
|
|
for(i=0;i<16;i++)
|
|||
|
|
{
|
|||
|
|
if(dd&0x01)
|
|||
|
|
TailData+=pow(2.,i-16);
|
|||
|
|
dd=dd>>1;
|
|||
|
|
}
|
|||
|
|
TailData =sign *TailData;
|
|||
|
|
|
|||
|
|
rData=ExData+TailData;
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}//switch
|
|||
|
|
return (float)rData;
|
|||
|
|
};
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
|