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#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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 ;
}
}