using System.Runtime.InteropServices; using System.Runtime.Serialization; namespace EPInterface.Data { [DataContract] public enum EPDState { [EnumMember] UnSampling, //硬件未进入采样 [EnumMember] Running, //计算中 [EnumMember] Pause, //暂停 [EnumMember] Idle, }; [DataContract] public enum EPDEventType { [EnumMember] Default = 0, //基础信息 [EnumMember] Info = 1, //基础信息 [EnumMember] Error, //基础信息 [EnumMember] Start, //步骤 开始 [EnumMember] Delay, //步骤 延迟 [EnumMember] Normalize, //步骤 [EnumMember] Check, //步骤 检查条件 [EnumMember] EndPoint, //步骤 触发 [EnumMember] Stop, //步骤 停止 }; [DataContract] [StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Ansi)] public struct HardwareInfo { [MarshalAs(UnmanagedType.U8)] public ulong Ver; [MarshalAs(UnmanagedType.U2)] public ushort Pixes; [MarshalAs(UnmanagedType.R8)] public double FirstCoefficient; [MarshalAs(UnmanagedType.R8)] public double SecondCoefficient; [MarshalAs(UnmanagedType.R8)] public double ThirdCoefficient; [MarshalAs(UnmanagedType.R8)] public double Intercept; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] public char[] Serial; [MarshalAs(UnmanagedType.U8)] public ulong IntegrationTime; [MarshalAs(UnmanagedType.U8)] public ulong SamplingTime; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)] public double[] Wave; } [DataContract] [StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Ansi)] public struct RawDataItem { public static readonly int Size = Marshal.SizeOf(typeof(RawDataItem)); [MarshalAs(UnmanagedType.I8)] public long Ticket; [MarshalAs(UnmanagedType.I4)] //累积次数 public int Counter; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)] //全光谱数据 public ushort[] RawData; [MarshalAs(UnmanagedType.I4)] //波段数据 public int RegionNum; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] public double[] RegionData; [MarshalAs(UnmanagedType.I4)] //趋势数据, 表达式 public int TrendNum; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] public double[] TrendData; } [DataContract] public class CRawDataItem { [DataMember] public long Ticket { get;set; } [DataMember] public ushort[] RawData { get; set; } [DataMember] public int RegionNum { get; set; } [DataMember] public double[] RegionData { get;set; } [DataMember] public int TrendNum { get;set; } [DataMember] public double[] TrendData { get;set; } public CRawDataItem() { Ticket = 0; RawData = new ushort[1024]; RegionNum = 32; RegionData = new double[32]; TrendNum = 32; TrendData = new double[32]; } } }