You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

277 lines
11 KiB
C#

using System;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.IO;
namespace Dat2Bin
{
public struct MTEMFreqFile
{
public byte No;//0-29
public ushort CycleLen;//
public ushort CycleNum;//
public int WaveStyle;//
public float SampleRate;//
public sbyte pro;//
public byte OutCurrent;//
public float Time;//
public float Freq;//。
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct MTEM_TInfo
{
public short day; // 日
public short month; // 月
public short year; // 年 2001-2999
public short hour; // 时
public short minute; // 分
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
public string geo; // 工作地区 - 地名
public byte sec; // 秒
public byte met; // 记录方法代码:
//0-31
public short end_year; // 年 2001-2999
public short end_month; // 月
public short end_day; // 日
public short end_hour; // 时
public short end_minute; // 分
public byte end_sec; // 秒
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)]
public string standby1; // 备用
public sbyte pro; // ADC量化代码:
public byte kan; // number of channels 通道数
public byte valid; // 该记录是否有效
public short ab1; // 发射源AB的第一个电极的位置
public short ab2; //发射源AB的第二个电极的位置
public short ab3; // 发射机的位置
public short res; // 接地电阻
public float Tok; // 发射电流 I(A)
public float Voltage; // 发射电压 V(V)
//32-71
public byte Tgu; // 发射波形: 1-doubling
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 17)]
public string standby5; // 备用
public int Nom; // record of number 记录号与文件名相对应
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 6)]
public string standby6; // 备用
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
public string Fam; // surname of the operator 操作员
// 72-119
public int Lps; // number of points in record 记录的数据点数
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 18)]
public string standby7; // 备用
public short Nst; // MeterNum 仪器号
/// <summary>
/// 通道号
/// </summary>
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
public string standby8; // 备用,临时改为通道号ch01-ch03
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]
public string Com;
// string of the comment 注释行
//120-199
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 90)]
public short[] Isw;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 132)]
public string standby9;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 24)]
public ChInfo[] channel;
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
public struct HEADInfo
{
public short day; // 日
public short month; // 月
public short year; // 年 2001-2999
public short hour; // 时
public short minute; // 分
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
public string geo; // 工作地区 - 地名
public byte sec; // 秒
public byte met; // 记录方法代码:
//0-31
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 21)]
public string standby1; // 备用
public sbyte pro; // ADC量化代码:
public byte kan; // number of channels 通道数
public byte standby2; // 备用
public short ab1; // Lab(meters) length of ab1, 发射源AB的长度 发射极距
public short ab2; // number AB 发射点号
public short ab3; //
public short standby3; // 备用
public float Tok; // 发射电流 I(A)
public uint standby4; // 备用
//32-71
public byte Tgu; // 发射波形: 1-doubling
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 17)]
public string standby5; // 备用
public int Nom; // record of number 记录号与文件名相对应
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 6)]
public string standby6; // 备用
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
public string Fam; // surname of the operator 操作员
// 72-119
public int Lps; // number of points in record 记录的数据点数
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 18)]
public string standby7; // 备用
public short Nst; // MeterNum 仪器号
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
public string standby8; // 备用
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]
public string Com;
// string of the comment 注释行
//120-199
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 90)]
public short[] Isw;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 132)]
public string standby9;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 24)]
public ChInfo[] channel;
}
// 406-511
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]//按一个字节对齐
public struct ChInfo
{
public byte Idk; //
public byte standby0;
public sbyte Uko; //
public byte Ufl; // 测站号
public short Pkt; // 测点号
public short Prf; // 测线号
public short ab; // 电极距
public short datatype; // 数据类型
//1数据类型
// 1- Hall
// 2- 电极
// 4- 接收
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
public string standby1;
public float X; //coordinate 'x' (not use)
public float Y; //coordinate 'y' (not use)
public float Z; //coordinate 'z' (not use)
public float Ecs; // LSB
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 28)]
public string standby2;
} // 64*24=1536
public struct FreqFileHead
{
public MTEMFreqFile[] MTEMfreqfile;
public int totalpoint ; //用于总采样点数label_totsize
public float totaltime ; //采集总时间
public string SafeFileName;
public string FileName;
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]//按一个字节对齐
public struct SEGYFileHead
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3200)]
public byte[] ASCIIByte;
public secPartSEGYFileHead secPartSEGYFileHead;///
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]//按一个字节对齐
public struct secPartSEGYFileHead
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]
public byte[] standby;//Not use
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] channelNumber;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] standby2;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] sampleGap;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] standby3;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] samplePointerNumber;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] standby5;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] codeStyle;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 28)]
public byte[] standby4;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] measureFormat;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 344)]
public byte[] standby6;
}
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]//按一个字节对齐
public struct SEGYChannelHead
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
public byte[] fileNumber;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
public byte[] channelNumber;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
public byte[] origNumber;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
public byte[] standby;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] channelObject;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 50)]
public byte[] standby1;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
public byte[] xScale;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
public byte[] yScale;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] scaleObject;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 24)]
public byte[] standby2 ;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] channelSamplePointer;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] channelSampleGap;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 38)]
public byte[] standby3;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] year;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] day;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] hour;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] mins;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] second;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
public byte[] UTC;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 72)]
public byte[] standby4 ;
}
}