using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; namespace Venus_Core { [StructLayout(LayoutKind.Sequential)] public class TwincatRecipe { [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = 100)] public RecipeEachStep[] Recipe = new RecipeEachStep[100]; //[MarshalAs(UnmanagedType.I1)] //public bool DataReceivedFlag; } //public class ProcessRecipeFeedBack //{ // public bool ProcessStart { get; set; } // public bool ProcessFinished { get; set; } // public short ProcessError { get; set; } // public short CurrentStepNo { get; set; } // public bool CurrentStepStart { get; set; } // public bool CurrentStepFinished { get; set; } //} [StructLayout(LayoutKind.Sequential)] public class ProcessRecipeFeedBack { [MarshalAs(UnmanagedType.I1)] public bool ProcessStart; [MarshalAs(UnmanagedType.I1)] public bool ProcessFinished; [MarshalAs(UnmanagedType.I2)] public short ProcessError; //[MarshalAs(UnmanagedType.I2)] //public short ProcessStartTime; //[MarshalAs(UnmanagedType.I2)] //public short ProcessFinishedTime; [MarshalAs(UnmanagedType.I2)] public short CurrentStepNo; [MarshalAs(UnmanagedType.I1)] public bool CurrentStepStart; [MarshalAs(UnmanagedType.I1)] public bool CurrentStepFinished; //[MarshalAs(UnmanagedType.I2)] //public short CurrentStepStartTime; //[MarshalAs(UnmanagedType.I2)] //public short CurrentStepFinishedTime; } [StructLayout(LayoutKind.Sequential)] public class ProcessRecipe { //总字节数44603 [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = 100)] public RecipeEachStep[] Recipe = new RecipeEachStep[100]; } [StructLayout(LayoutKind.Sequential)] public struct RecipeEachStep { //总字节数446 [MarshalAs(UnmanagedType.I2)] public short StepNo; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 81)] public string Completion;//'Stable', 'Time' or 'End' [MarshalAs(UnmanagedType.I2)] public short StepTime; [MarshalAs(UnmanagedType.I2)] public short AddTime; [MarshalAs(UnmanagedType.I1)] public bool CycleStart; [MarshalAs(UnmanagedType.I1)] public bool CycleEnd; [MarshalAs(UnmanagedType.I2)] public short CycleNumber; [MarshalAs(UnmanagedType.I1)] public bool Lifter; [MarshalAs(UnmanagedType.I2)] public short AdjustTargetStepNo; [MarshalAs(UnmanagedType.I1)] public bool Data; [MarshalAs(UnmanagedType.Struct)] public Lst LstUnit; } [StructLayout(LayoutKind.Sequential)] public struct Lst { [MarshalAs(UnmanagedType.Struct)] public LstPressure Pressure; [MarshalAs(UnmanagedType.Struct)] public LstGas LstGas; [MarshalAs(UnmanagedType.Struct)] public LstHeater LstHeater; } [StructLayout(LayoutKind.Sequential)] public struct LstPressure { [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 81)] public string ToleranceMode;//'Value' or 'Percent' [MarshalAs(UnmanagedType.I2)] public short ToleranceDelayTime; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 81)] public string PressureUnitMode;//'Pressure' or 'Position' [MarshalAs(UnmanagedType.I2)] public short StartValue; [MarshalAs(UnmanagedType.I2)] public short StartValueWarningRange; [MarshalAs(UnmanagedType.I2)] public short StartValueAlarmRange; [MarshalAs(UnmanagedType.I2)] public short ValvePositionPreset; [MarshalAs(UnmanagedType.I1)] public bool EnableRamp; [MarshalAs(UnmanagedType.I2)] public short HoldTime; [MarshalAs(UnmanagedType.I2)] public short RampTime; [MarshalAs(UnmanagedType.I2)] public short TargetValue; } [StructLayout(LayoutKind.Sequential)] public struct LstGas { [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 81)] public string ToleranceMode;//'Value' or 'Percent' [MarshalAs(UnmanagedType.I2)] public short ToleranceDelayTime; [MarshalAs(UnmanagedType.I2)] public short Gas1; [MarshalAs(UnmanagedType.I2)] public short Gas1WarningRange; [MarshalAs(UnmanagedType.I2)] public short Gas1AlarmRange; [MarshalAs(UnmanagedType.I2)] public short Gas2; [MarshalAs(UnmanagedType.I2)] public short Gas2WarningRange; [MarshalAs(UnmanagedType.I2)] public short Gas2AlarmRange; [MarshalAs(UnmanagedType.I2)] public short Gas3; [MarshalAs(UnmanagedType.I2)] public short Gas3WarningRange; [MarshalAs(UnmanagedType.I2)] public short Gas3AlarmRange; [MarshalAs(UnmanagedType.I2)] public short Gas4; [MarshalAs(UnmanagedType.I2)] public short Gas4WarningRange; [MarshalAs(UnmanagedType.I2)] public short Gas4AlarmRange; [MarshalAs(UnmanagedType.I2)] public short Gas5; [MarshalAs(UnmanagedType.I2)] public short Gas5WarningRange; [MarshalAs(UnmanagedType.I2)] public short Gas5AlarmRange; [MarshalAs(UnmanagedType.I2)] public short Gas6; [MarshalAs(UnmanagedType.I2)] public short Gas6WarningRange; [MarshalAs(UnmanagedType.I2)] public short Gas6AlarmRange; [MarshalAs(UnmanagedType.I2)] public short Gas7; [MarshalAs(UnmanagedType.I2)] public short Gas7WarningRange; [MarshalAs(UnmanagedType.I2)] public short Gas7AlarmRange; //[MarshalAs(UnmanagedType.I2)] //public short Gas8; //[MarshalAs(UnmanagedType.I2)] //public short Gas8WarningRange; //[MarshalAs(UnmanagedType.I2)] //public short Gas8AlarmRange; //[MarshalAs(UnmanagedType.I2)] //public short Gas9; //[MarshalAs(UnmanagedType.I2)] //public short Gas9WarningRange; //[MarshalAs(UnmanagedType.I2)] //public short Gas9AlarmRange; } [StructLayout(LayoutKind.Sequential)] public struct LstHeater { [MarshalAs(UnmanagedType.I2)] public short WallTemp; [MarshalAs(UnmanagedType.I2)] public short WallTempWaningRange; [MarshalAs(UnmanagedType.I2)] public short WallTempAlarmRange; [MarshalAs(UnmanagedType.I2)] public short LidTemp; [MarshalAs(UnmanagedType.I2)] public short LidTempWaningRange; [MarshalAs(UnmanagedType.I2)] public short LidTempAlarmRange; [MarshalAs(UnmanagedType.I2)] public short StageEdgeTemp; [MarshalAs(UnmanagedType.I2)] public short StageEdgeTempWaningRange; [MarshalAs(UnmanagedType.I2)] public short StageEdgeTempAlarmRange; [MarshalAs(UnmanagedType.I2)] public short StageCenterTemp; [MarshalAs(UnmanagedType.I2)] public short StageCenterTempWaningRange; [MarshalAs(UnmanagedType.I2)] public short StageCenterTempAlarmRange; //[MarshalAs(UnmanagedType.I1)] //public bool TCP_EnableRamp; //[MarshalAs(UnmanagedType.I2)] //public short TCP_RFPower; //[MarshalAs(UnmanagedType.I2)] //public short TCP_TuneCapPreset; //[MarshalAs(UnmanagedType.I2)] //public short TCP_LoadCapPreset; //[MarshalAs(UnmanagedType.I2)] //public short TCP_AutoTuneCapPreset; //[MarshalAs(UnmanagedType.I2)] //public short TCP_AutoLoadCapPreset; //[MarshalAs(UnmanagedType.I2)] //public short TCP_MaxReflectedPower; //[MarshalAs(UnmanagedType.I2)] //public short TCP_TargetRFPower; //[MarshalAs(UnmanagedType.LPStr)] //public string TCP_UnitName; //[MarshalAs(UnmanagedType.R4)] //public float AI_Chamber_Pressure_10t; } }