using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; namespace EPD.Data { public class EPDDefine { public static Dictionary ErrorMap = new Dictionary() { {0x0000, "OK"}, {0x1000, "Format error"}, {0x1001, "Parameter invalid"}, {0x1002, "EPD not online"}, {0x1003, "EPD is initializing"}, {0x1004, "EPD config file has invalid setting"}, {0x1005, "EPD calculation failed"}, {0x1006, "EPD not remote"}, { 0x1100, "Device has other error" }, { 0x1101, "Device nvalid" }, { 0x1102, "No Device" }, { 0x1103, "Device close failed" }, { 0x1104, "Device: order not implemented" }, { 0x1105, "Device: a features not found" }, { 0x1106, "Device: transfer Error" }, { 0x1107, "Device: bad user buffer" }, { 0x1108, "Device: out of bounds" }, { 0x1109, "Device Saturated" }, {0x2000, "EPD device error"}, }; public static Dictionary StateMap = new Dictionary() { {0, "Device not ready"}, {1, "Running"}, {2, "Paused"}, {3, "Idle"}, }; public static Dictionary RunStatusMap = new Dictionary() { {1, "Monitor"}, {2, "Monitor Save"}, {3, "Capture"}, {4, "Process"}, }; public static Dictionary ModeMap = new Dictionary() { {1, "Local"}, {2, "Remote"}, }; } public enum EPDEvent { Event_Message = 0x01, Event_SystemError = 0x02, Event_StepStart = 0x03, Event_StepDelay = 0x04, Event_StepNormalize = 0x05, Event_StepSatisfied = 0x06, Event_StepTrigger = 0x07, Event_StepStop = 0x08, Event_TrendData = 0x10, } public enum EPDCommand { Reset = 0x00, RecipeStart = 0x01, RecipeStop = 0x02, Complete = 0x03, Start = 0x04, Stop = 0x05, SetWaferInfo = 0x06, QueryCfgList = 0x07, QueryState = 0x08, QueryVer = 0x09, Event = 0x0A, Connect = 0x10, Disconnect = 0x11, QueryChannelCount = 0x12, HeartBeat = 0x20, QueryData = 0x30, QueryRunStatus = 0x31, SetRunStatus = 0x32, QueryOperateMode = 0x33, SetOperateMode = 0x34, QueryCurrentConfig = 0x40, SetCurrentConfig = 0x41, GetSensorStatus = 0x101, StartMeasurement = 0x102, GetRecipesList = 0x103, StopMeasurement = 0x104, AsciiEvent = 0x105, QueryChannalNames = 0x110 } [StructLayout(LayoutKind.Sequential, Pack = 1, Size = 10, CharSet = CharSet.Ansi)] public struct PacketHeader { public static readonly int Size = Marshal.SizeOf(typeof(PacketHeader)); [MarshalAs(UnmanagedType.U4, SizeConst = 4)] public int token; [MarshalAs(UnmanagedType.U1, SizeConst = 1)] public byte channel; [MarshalAs(UnmanagedType.U1, SizeConst = 1)] public byte command; [MarshalAs(UnmanagedType.U4, SizeConst = 4)] public int length; } [StructLayout(LayoutKind.Sequential, Pack = 1, Size = 14, CharSet = CharSet.Ansi)] public struct ResponseHeader { public static readonly int Size = Marshal.SizeOf(typeof(ResponseHeader)); [MarshalAs(UnmanagedType.U4, SizeConst = 4)] public int token; [MarshalAs(UnmanagedType.U1, SizeConst = 1)] public byte channel; [MarshalAs(UnmanagedType.U1, SizeConst = 1)] public byte command; [MarshalAs(UnmanagedType.U4, SizeConst = 4)] public int errorcode; [MarshalAs(UnmanagedType.U4, SizeConst = 4)] public int length; } [StructLayout(LayoutKind.Sequential, Pack = 1, Size = 1792, CharSet = CharSet.Ansi)] public struct WaferData { public static readonly int Size = Marshal.SizeOf(typeof(WaferData)); [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)] public char[] WaferID; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)] public char[] Recipe; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)] public char[] LotName; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)] public char[] Cassette; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)] public char[] Slot; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)] public char[] ToolID; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)] public char[] WorkFlow; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)] public char[] Custom1; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)] public char[] Custom2; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)] public char[] Custom3; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)] public char[] Custom4; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)] public char[] Custom5; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)] public char[] Date; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)] public char[] Time; public WaferData(int _) { WaferID = new char[128]; Recipe = new char[128]; LotName = new char[128]; Cassette = new char[128]; Slot = new char[128]; ToolID = new char[128]; WorkFlow = new char[128]; Custom1 = new char[128]; Custom2 = new char[128]; Custom3 = new char[128]; Custom4 = new char[128]; Custom5 = new char[128]; Date = new char[128]; Time = new char[128]; } } }