using System; using System.Runtime.InteropServices; using System.Windows.Forms; namespace HSI_SEVENOCEAN_EF1_CsTest.HSI { internal class Interface { // >>>> In Interfaces public delegate void PEventCallback( Def.HSI_EVENT_TYPE eventType, Def.HSI_EVENT_RESPONSE_TYPE responseType, uint eventId, string eventData, ref uint eventCallbackId); public static PEventCallback HsiCallback; [DllImport("HSI.dll", EntryPoint = "HSI_GET_INTERFACE_VERSION", CharSet = CharSet.Unicode)] public static extern Def.HSI_STATUS GetInterfaceVersion(ref uint apiVersionMajor, ref uint apiVersionMinor); [DllImport("HSI.dll", EntryPoint = "HSI_STARTUP", CharSet = CharSet.Unicode)] public static extern Def.HSI_STATUS Startup(IntPtr hWnd, bool bOfflineOnly); [DllImport("HSI.dll", EntryPoint = "HSI_GET_INTERFACE_VERSION", CharSet = CharSet.Unicode)] public static extern Def.HSI_STATUS GetInterfaceVersion(); [DllImport("HSI.dll", EntryPoint = "HSI_GET_MACHINE_INFO", CharSet = CharSet.Unicode)] public static extern Def.HSI_STATUS GetMachineInfo(ref int numMachineTypes); [DllImport("HSI.dll", EntryPoint = "HSI_SET_EVENT_CALLBACK", CharSet = CharSet.Unicode)] public static extern Def.HSI_STATUS SetEventCallback(PEventCallback pCallback); [DllImport("HSI.dll", EntryPoint = "HSI_SHUTDOWM", CharSet = CharSet.Unicode)] public static extern Def.HSI_STATUS Shutdown(); // <<<< Out Interfacess public static void EventCallback(Def.HSI_EVENT_TYPE eventType, Def.HSI_EVENT_RESPONSE_TYPE responseType, uint eventId, string eventData, ref uint eventCallbackId) { var msgBtn = MessageBoxButtons.OK; switch (responseType) { case Def.HSI_EVENT_RESPONSE_TYPE.HSI_EVENT_RESPONSE_OK: msgBtn = MessageBoxButtons.OK; break; case Def.HSI_EVENT_RESPONSE_TYPE.HSI_EVENT_RESPONSE_RETRY: msgBtn = MessageBoxButtons.RetryCancel; break; case Def.HSI_EVENT_RESPONSE_TYPE.HSI_EVENT_RESPONSE_CANCEL: msgBtn = MessageBoxButtons.OKCancel; break; case Def.HSI_EVENT_RESPONSE_TYPE.HSI_EVENT_RESPONSE_YES: msgBtn = MessageBoxButtons.YesNo; break; } switch (eventType) { case Def.HSI_EVENT_TYPE.HSI_EVENT_NONE: break; case Def.HSI_EVENT_TYPE.HSI_EVENT_ERROR: break; case Def.HSI_EVENT_TYPE.HSI_EVENT_FUNCTION: var eventFunctionId = (Def.HSI_EVENT_FUNCTION_ID) eventId; switch (eventFunctionId) { case Def.HSI_EVENT_FUNCTION_ID.HSI_EVENT_MOTION_DCC_HOME: { System.Windows.Forms.MessageBox.Show(Resources.Interface_Tips_Home_Machine, Resources.Interface_Tips, msgBtn, MessageBoxIcon.Information); break; } case Def.HSI_EVENT_FUNCTION_ID.HSI_EVENT_DEBUG_LOG: { System.Windows.Forms.MessageBox.Show(eventData, Resources.Interface_Tips, msgBtn, MessageBoxIcon.Information); break; } case Def.HSI_EVENT_FUNCTION_ID.HSI_EVENT_MOVE_POINT: { System.Windows.Forms.MessageBox.Show(Resources.Interface_Tips_Motion_Finished, Resources.Interface_Tips, msgBtn, MessageBoxIcon.Information); ; //Motion completed break; } } break; } } } internal class Motion { // >>>> In Interfaces //[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_IS_SUPPORTED", CharSet = CharSet.Unicode)] //public static extern Def.HSI_STATUS IsSupported(ref uint types); [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_STARTUP", CharSet = CharSet.Unicode)] public static extern Def.HSI_STATUS Startup(bool bHome); [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_IS_HOMED", CharSet = CharSet.Unicode)] public static extern Def.HSI_STATUS IsHomed(ref bool bHomed); [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_GET_SPEED_XYZ", CharSet = CharSet.Unicode)] public static extern Def.HSI_STATUS GetSpeedXyz(ref double speed); [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_SET_SPEED_XYZ", CharSet = CharSet.Unicode)] public static extern Def.HSI_STATUS SetSpeedXyz(double speed); //[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_GET_SPEED_R", CharSet = CharSet.Unicode)] //public static extern Def.HSI_STATUS GetSpeedR(ref double speed); //[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_SET_SPEED_R", CharSet = CharSet.Unicode)] //public static extern Def.HSI_STATUS SetSpeedR(double speed); //[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_GET_SCALE_RESOLUTION", CharSet = CharSet.Unicode)] //public static extern Def.HSI_STATUS GetScaleResolution( // ref double scaleX, ref double scaleY, ref double scaleZ); //[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_SET_SCALE_RESOLUTION", CharSet = CharSet.Unicode)] //public static extern Def.HSI_STATUS SetScaleResolution(double scaleX, double scaleY, double scaleZ); //[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_GET_DEADBAND", CharSet = CharSet.Unicode)] //public static extern Def.HSI_STATUS GetDeadBand( // ref double deadbandX, ref double deadbandY, ref double deadbandZ, ref double deadbandR); //[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_GET_REFRESH_DEADBAND", CharSet = CharSet.Unicode)] //public static extern Def.HSI_STATUS GetRefreshDeadBand(ref double deadband); [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_JOG", CharSet = CharSet.Unicode)] public static extern Def.HSI_STATUS Jog(uint axisTypes, double speed); [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_STOP_JOG", CharSet = CharSet.Unicode)] public static extern Def.HSI_STATUS StopJog(); [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_GET_POSITION_XYZ", CharSet = CharSet.Unicode)] public static extern Def.HSI_STATUS GetPositionXyz( uint axisTypes, ref double positionX, ref double positionY, ref double positionZ, ref double time); [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_SET_POSITION_XYZ", CharSet = CharSet.Unicode)] public static extern Def.HSI_STATUS SetPositionXyz( uint axisTypes, double positionX, double positionY, double positionZ, Def.HSI_MOTION_MOVE_TYPE eType, double dFlyRadius); //[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_GET_POSITION_R", CharSet = CharSet.Unicode)] //public static extern Def.HSI_STATUS GetPositionR(uint axisTypes, ref double positionR, ref double time); //[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_SET_POSITION_R", CharSet = CharSet.Unicode)] //public static extern Def.HSI_STATUS SetPositionR( // uint axisTypes, double positionR, Def.HSI_MOTION_AXIS_R_MOVE_TYPE directionType, bool bWait); [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_ABORT_MOTION", CharSet = CharSet.Unicode)] public static extern Def.HSI_STATUS AbortMotion(); //[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_GET_DIO", CharSet = CharSet.Unicode)] //public static extern Def.HSI_STATUS GetDIO(uint ioChannel, ref uint status); //[DllImport("HSI.dll", EntryPoint = "HSI_MOTION_SET_DIO", CharSet = CharSet.Unicode)] //public static extern Def.HSI_STATUS SetDIO(uint ioChannel, uint status); [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_SHUTDOWN", CharSet = CharSet.Unicode)] public static extern Def.HSI_STATUS Shutdown(); // <<<< Out Interfaces public Motion() { _supported = 0; _bFirst = true; } //public static bool IsActive(bool bForce = false) //{ // if (_bFirst || bForce) // { // IsSupported(ref _supported); // _bFirst = false; // } // return (_supported != 0); //} private static bool _bFirst; private static uint _supported; } //internal class Illumination // { // // >>>> In Interfaces // [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_IS_SUPPORTED", CharSet = CharSet.Unicode)] // public static extern Def.HSI_STATUS IsSupported(ref uint types); // [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_IS_SUPPORTED", CharSet = CharSet.Unicode)] // public static extern Def.HSI_STATUS HSI_ILLUMINATION_STARTUP(); // [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_IS_SUPPORTED", CharSet = CharSet.Unicode)] // public static extern Def.HSI_STATUS HSI_ILLUMINATION_GET_LAMP_COUNT(ref int nLamps); // [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_IS_SUPPORTED", CharSet = CharSet.Unicode)] // public static extern Def.HSI_STATUS HSI_ILLUMINATION_GET_LAMP_INFO(ref int lampInfo, ref int numLamps, // int[] lampsType, // int[] numRings, int[] numSectors, int[] color, double[] angle, ref bool bCanBeCalibrated); // [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_IS_SUPPORTED", CharSet = CharSet.Unicode)] // public static extern Def.HSI_STATUS HSI_ILLUMINATION_GET_LAMP_STATE( // int nLamp, bool[] bBulbStates, double[] intensities, ref int color, ref double angle); // [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_IS_SUPPORTED", CharSet = CharSet.Unicode)] // public static extern Def.HSI_STATUS HSI_ILLUMINATION_SET_LAMP_STATE( // int nLamp, bool[] bBulbStates, double[] intensities, int color, double angle, bool bWait); // [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_IS_SUPPORTED", CharSet = CharSet.Unicode)] // public static extern Def.HSI_STATUS HSI_ILLUMINATION_GET_LAMP_STATE_ALL( // int lampInfo, int numLamps, int[] lampsType, int[,] bBulbStates, double[,] intensities); // [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_IS_SUPPORTED", CharSet = CharSet.Unicode)] // public static extern Def.HSI_STATUS HSI_ILLUMINATION_SET_LAMP_STATE_ALL( // int lampInfo, int numLamps, int[] lampsType, int[,] bBulbStates, double[,] intensities, bool bWait); // [DllImport("HSI.dll", EntryPoint = "HSI_MOTION_IS_SUPPORTED", CharSet = CharSet.Unicode)] // public static extern Def.HSI_STATUS HSI_ILLUMINATION_SHUTDOWN(); // // <<<< Out Interfaces // public Illumination() // { // _supported = 0; // _bFirst = true; // } // public static bool IsActive(bool bForce = false) // { // if (_bFirst || bForce) // { // IsSupported(ref _supported); // _bFirst = false; // } // return (_supported != 0); // } // private static bool _bFirst; // private static uint _supported; // } internal class Def { public const int HSI_APIVersionMajor = 1; public const int HSI_APIVersionMinor = 3; public const int HSI_MaxStringLength = 255; // Maximum string length (buffer size - 1) /////////////////////////////////////////////////////////////////////////////// // Interface API /////////////////////////////////////////////////////////////////////////////// public enum HSI_STATUS { HSI_STATUS_NOT_SUPPORTED = -1, HSI_STATUS_NORMAL = 0, HSI_STATUS_FAILED, HSI_FAILED_DLL_LOAD, HSI_STATUS_PORTLOCK_HSI_MISMATCH, HSI_STATUS_FILE_NOT_FOUND, HSI_STATUS_HARDWARE_NOT_FOUND, HSI_STATUS_INVALID_PARAMETERS, HSI_STATUS_INVALID_POINTS, HSI_STATUS_PART_NOT_DETECTED, HSI_STATUS_MEASURE_ERROR, HSI_STATUS_TEMPERATURE_ERROR, HSI_STATUS_ILLUMINATION_COMM = 50, HSI_STATUS_OPTICS_COMM = 100, HSI_STATUS_OPTICS_HOMING, HSI_STATUS_OPTICS_TIMEOUT, HSI_STATUS_OPTICS_CALIBRATIONDATA, HSI_STATUS_OPTICS_CALIBRATIONDATADEFAULT, HSI_STATUS_OPTICS_CALFILEDATACOUNTMISMATCH, HSI_STATUS_MOTION_COMM = 150, HSI_STATUS_MOTION_HOMING, HSI_STATUS_MOTION_TIMEOUT, HSI_STATUS_MOTION_EMERGENCY_STOP, HSI_STATUS_MOTION_EXCEED_LIMIT, HSI_STATUS_MOTION_UNKNOWN_ERROR, HSI_STATUS_MOTION_EXCEED_SW_LIMIT, HSI_STATUS_MOTION_POSITION_ERROR, HSI_STATUS_MOTION_MOVING, HSI_STATUS_TP_UNEXPECTED_HIT = 200, HSI_STATUS_TP_TIMEOUT = 201, HSI_STATUS_TP_APPROACH_TIMEOUT = 202, HSI_STATUS_TP_WRIST_ERROR, HSI_STATUS_FG_COMM = 250, HSI_STATUS_FG_TIMEOUT, HSI_STATUS_FG_DIRECTX, HSI_STATUS_FG_COLORDEPTH, HSI_STATUS_LP_TIMEOUT = 300, HSI_STATUS_LP_EXCEED_LIMIT = 301, HSI_STATUS_VP_TIMEOUT = 350, HSI_STATUS_VP_IMAGEPROCESS_FAIL }; public enum HSI_MACHINE_TYPE { HSI_MACHINE_UNKNOWN = 0, HSI_MACHINE_SO7 = 1, HSI_MACHINE_TYPE_TOTAL, }; public enum HSI_EVENT_TYPE { HSI_EVENT_NONE = 0, HSI_EVENT_ERROR = 1, HSI_EVENT_FUNCTION = 2 }; public enum HSI_EVENT_FUNCTION_ID //EventData { //SendReceive // V4.2 & V4.3 + HSI_EVENT_DONE = 0, //N/A N/A HSI_EVENT_TAKE_HIT = 1, //N/A N/A HSI_EVENT_ERASE_HIT = 2, //N/AN/A HSI_EVENT_TIME_CRITICAL = 3, //"ON", or "OFF" N/A HSI_EVENT_ZOOM_IN = 4, //"MAX", "COARSE", or "FINE" N/A HSI_EVENT_ZOOM_OUT = 5, //"MAX", "COARSE", or "FINE" N/A HSI_EVENT_REFRESH_LIVE_VIEW = 6, //N/AN/A HSI_EVENT_UPDATE_READOUTS = 7, //"AxisFlags,%lf{x},%lf{y},%lf{z},%lf{r}"N/A HSI_EVENT_READ_MC_POSITION = 8, //"AxisFlags""AxisFlags,%lf{x},%lf{y},%lf{z},%lf{r}" HSI_EVENT_MOVE_MC_POSITION = 9, //"AxisFlags,%lf{x},%lf{y},%lf{z},%lf{r},%lf{speed},%1d{bWait}"N/A HSI_EVENT_CONVERT_MC_TO_GLOBAL = 10, //"%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}" HSI_EVENT_UPDATE_STATUS_MESSAGE = 11, //N/AN/A HSI_EVENT_OPENFILE_DLG = 12, //N/A"FileName" HSI_EVENT_DISPLAY_YESNO_MESSAGE = 13, //N/AN/A HSI_EVENT_DISPLAY_OKCANCEL_MESSAGE = 14, //N/AN/A HSI_EVENT_DISPLAY_OK_MESSAGE = 15, //N/AN/A // V4.3 + Only HSI_EVENT_DEBUG_LOG = 20, //"%s" N/A HSI_EVENT_MOVE_MC_POSITION_AND_SETTLE = 21, //"AxisFlags,%lf{x},%lf{y},%lf{z},%lf{r},%lf{speed}" N/A HSI_EVENT_CONVERT_GLOBAL_TO_MM = 22, //"%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}" HSI_EVENT_CONVERT_ROT_TO_TABLE_POINT = 23, //"%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}" HSI_EVENT_CONVERT_ROT_OUT_TABLE_POINT = 24, //"%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}" HSI_EVENT_CONVERT_ROT_TO_TABLE_VECTOR = 25, //"%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}" HSI_EVENT_CONVERT_ROT_OUT_TABLE_VECTOR = 26, //"%lf{x},%lf{y},%lf{z}" "%lf{x},%lf{y},%lf{z}" HSI_EVENT_ILLUMINATION_REFRESH = 27, HSI_EVENT_ILLUMINATION_LOCK = 28, HSI_EVENT_ILLUMINATION_STORE_SET = 29, HSI_EVENT_ILLUMINATION_RESTORE_SET = 30, HSI_EVENT_ILLUMINATION_DECREASE_ACTIVE = 31, // "%d" HSI_EVENT_ILLUMINATION_INCREASE_ACTIVE = 32, // "%d" HSI_EVENT_ILLUMINATION_DECREASE_ALL = 33, // "%d" HSI_EVENT_ILLUMINATION_INCREASE_ALL = 34, // "%d" HSI_EVENT_ILLUMINATION_SELECT_LAMP = 35, // "%d" HSI_EVENT_ILLUMINATION_SET_LAMP_INTENSITY = 36, // "%d" HSI_EVENT_ILLUMINATION_GET_LAMP_INTENSITY = 37, // "%d" HSI_EVENT_ILLUMINATION_SET_LAMP_CALIBRATION_OVERRIDE = 38, // "%d" HSI_EVENT_ILLUMINATION_NEXT_RING = 39, HSI_EVENT_ILLUMINATION_PREV_RING = 40, HSI_EVENT_ILLUMINATION_NEXT_SECTOR = 41, HSI_EVENT_ILLUMINATION_PREV_SECTOR = 42, HSI_EVENT_ILLUMINATION_NUM_LAMPS_INSTALLED = 43, HSI_EVENT_ILLUMINATION_IS_LAMP_INSTALLED = 44, HSI_EVENT_ILLUMINATION_APPLY = 45, HSI_EVENT_ILLUMINATION_ALLOFF = 46, HSI_EVENT_ILLUMINATION_ALLON = 47, HSI_EVENT_ILLUMINATION_UNLOCK = 48, HSI_EVENT_IS_PROGRAMMING_MODE = 49, //1/0 HSI_EVENT_IS_PORTLOCK_DCC = 50, //1/0 HSI_EVENT_IS_ROTAB_ENABLED = 51, //1/0 HSI_EVENT_IS_TIME_CRITICAL = 52, // 1/0 HSI_EVENT_CONVERT_MM_TO_GLOBAL = 53, HSI_EVENT_CONVERT_GLOBAL_TO_MC = 54, HSI_EVENT_LASER_FOCUS_ENABLE = 55, // "%d" 0 = not available, 1 = available HSI_EVENT_MOVE_POINT = 56, //N/AN/A HSI_EVENT_MAG_CHANGED = 57, HSI_EVENT_ILLUMINATION_SET_LAMP_INTENSITY_IN_MACHINE_LEVELx100 = 58, // "%d" //PR251359-- Instructed to "Please focus on slide" but it's rather unhelpfully turned the lights off for us. HSI_EVENT_DCC_SCAN_POINTS_AVAILABLE = 59, //"%d"= more to come, 1 = last set N/A HSI_EVENT_ILLUMINATION_IS_ALL_OFF = 60, //1/0//PR253777-- Sensilight does not work if the target has 'ALL OFF' for illum setting--4/16/2008 HSI_EVENT_ILLUMINATION_DECREASE_ALL_NONZERO = 61, // Sensilight command that wont change a lamp currently set to zero HSI_EVENT_ILLUMINATION_INCREASE_ALL_NONZERO = 62, // Sensilight command that wont change a lamp currently set to zero22 HSI_EVENT_LP_QUALITY = 63, //"%d" 0-100% HSI_EVENT_TP_QUALITY = 64, //"%d" 0-100% HSI_EVENT_VP_QUALITY = 65, //"%d" 0-100% HSI_EVENT_FLYMODE_MOVE_COMPLETE = 66, // A queued flymode move has completed HSI_EVENT_PENDANT_SPEED_PERCENT = 67, // 108336 HMV : Add calls to HSI.H for Speed HSI_EVENT_PENDANT_AXES_SELECTED = 68, // 108335 HMV : Need to add calls to the HSI.H for Stacked Rotary HSI_EVENT_MOTION = 500, HSI_EVENT_MOTION_DCC_HOME = 501, HSI_EVENT_SHUTDOWN_ = 999 //N/AN/A }; public enum HSI_NOTIFY_TYPE { HSI_NOTIFY_PROGRAM_EXECUTION_START = 0, HSI_NOTIFY_PROGRAM_EXECUTION_STOP = 1, HSI_NOTIFY_TIME_CRITICAL_EVENT_START = 2, HSI_NOTIFY_TIME_CRITICAL_EVENT_STOP = 3, HSI_NOTIFY_PROGRAM_OPEN = 4, HSI_NOTIFY_PROGRAM_CLOSE = 5, HSI_NOTIFY_PCDMIS_SHUTDOWN = 6 }; public enum HSI_EVENT_RESPONSE_TYPE { HSI_EVENT_CALLBACK = 0, HSI_EVENT_RESPONSE_OK = 1, HSI_EVENT_RESPONSE_RETRY = 2, HSI_EVENT_RESPONSE_CANCEL = 3, HSI_EVENT_RESPONSE_YES = 4, HSI_EVENT_RESPONSE_NO = 5, HSI_EVENT_FUNCTION_OK = 6, HSI_EVENT_FUNCTION_FAILED = 7 }; public struct SHsiEventProperties { public uint EventId; public uint EventCallbackId; public HSI_EVENT_TYPE EventType; public HSI_EVENT_RESPONSE_TYPE EventResponse; public char[] EventData; public void Init() { EventId = (uint) HSI_EVENT_FUNCTION_ID.HSI_EVENT_DONE; EventCallbackId = 0; EventType = HSI_EVENT_TYPE.HSI_EVENT_NONE; EventResponse = HSI_EVENT_RESPONSE_TYPE.HSI_EVENT_CALLBACK; EventData = new char[HSI_MaxStringLength + 1]; } }; /////////////////////////////////////////////////////////////////////////////// // Motion API /////////////////////////////////////////////////////////////////////////////// public enum HSI_MOTION_TYPE { HSI_MOTION_SUPPORTS_DCC_CONTROL = 0x0001, HSI_MOTION_SUPPORTS_MANUAL_CONTROL = 0x0002, HSI_MOTION_SUPPORTS_HOMING = 0x0004, HSI_MOTION_SUPPORTS_CIRCULAR_MOVES = 0x0008, HSI_MOTION_SUPPORTS_CMM_WRIST = 0x0010, HSI_MOTION_SUPPORTS_BUFFERED_MOVES = 0x0020, HSI_MOTION_SUPPORTS_FLY_MOVES = 0x0040, HSI_MOTION_SUPPORTS_SCAN = 0x0080, HSI_MOTION_SUPPORTS_ALL_AXIS_MOVE = 0x0100, HSI_MOTION_SUPPORTS_MEASPOINT_VW = 0x0200 }; public enum HSI_MOTION_AXIS_TYPE { HSI_MOTION_AXIS_X = 0x0001, // This is the default "Sensor level" X Axis - use on single X axis machines HSI_MOTION_AXIS_Y = 0x0002, // This is the default "Sensor level" Y Axis - use on single Y axis machines HSI_MOTION_AXIS_Z = 0x0004, // This is the default "Sensor level" Z Axis - use on single Z axis machines HSI_MOTION_AXIS_R = 0x0008, // This is the default "Sensor level" R Axis - use on single R axis machines HSI_MOTION_AXIS_X1 = 0x0010, // This is the 1st X Axis - use on multiple axis machines when specific axis needed HSI_MOTION_AXIS_Y1 = 0x0020, // This is the 1st Y Axis - use on multiple axis machines when specific axis needed HSI_MOTION_AXIS_Z1 = 0x0040, // This is the 1st Z Axis - use on multiple axis machines when specific axis needed HSI_MOTION_AXIS_R1 = 0x0080, // This is the 1st R Axis - use on multiple axis machines when specific axis needed HSI_MOTION_AXIS_X2 = 0x0100, // This is the 2nd X Axis - use on multiple axis machines when specific axis needed HSI_MOTION_AXIS_Y2 = 0x0200, // This is the 2nd Y Axis - use on multiple axis machines when specific axis needed HSI_MOTION_AXIS_Z2 = 0x0400, // This is the 2nd Z Axis - use on multiple axis machines when specific axis needed HSI_MOTION_AXIS_R2 = 0x0800, // This is the 2nd R Axis - use on multiple axis machines when specific axis needed HSI_MOTION_AXIS_X3 = 0x1000, // This is the 3rd X Axis - use on multiple axis machines when specific axis needed HSI_MOTION_AXIS_Y3 = 0x2000, // This is the 3rd Y Axis - use on multiple axis machines when specific axis needed HSI_MOTION_AXIS_Z3 = 0x4000, // This is the 3rd Z Axis - use on multiple axis machines when specific axis needed HSI_MOTION_AXIS_R3 = 0x8000 // This is the 3rd R Axis - use on multiple axis machines when specific axis needed }; public enum HSI_MOTION_IO_TYPE { HSI_MOTION_INPUT1 = 0x0001, HSI_MOTION_INPUT2, HSI_MOTION_OUTPUT1 = 0x0100, HSI_MOTION_OUTPUT2 }; public const uint HSI_MOTION_AXIS_ALL = (uint) (HSI_MOTION_AXIS_TYPE.HSI_MOTION_AXIS_X | HSI_MOTION_AXIS_TYPE.HSI_MOTION_AXIS_Y | HSI_MOTION_AXIS_TYPE.HSI_MOTION_AXIS_Z); public enum HSI_MOTION_MOVE_TYPE { HSI_MOTION_MOVE_WAIT = 1, HSI_MOTION_MOVE_NOWAIT = 2, HSI_MOTION_MOVE_INTERMEDIATE_POSITION = 3, HSI_MOTION_MOVE_FINAL_POSITION = 4, HSI_MOTION_IN_POSITION_EVENT = 5, HSI_MOTION_MOVE_FLYMODE = 6, HSI_MOTION_MOVE_START_POSITION = 7, HSI_MOTION_MOVE_START_FINAL_POSITION = 8 }; public enum HSI_MOTION_AXIS_R_MOVE_TYPE { HSI_MOTION_AXIS_R_CLOCKWISE = 1, HSI_MOTION_AXIS_R_ANTICLOCKWISE = 2, HSI_MOTION_AXIS_R_FASTEST = 3 }; public const int HSI_MAX_POSITIONS_STORED = 500; /////////////////////////////////////////////////////////////////////////////// //Illumination API /////////////////////////////////////////////////////////////////////////////// public enum HSI_ILLUMINATION_INFO { HSI_ILLUMINATION_INFO_UNKNOWN = 0, HSI_ILLUMINATION_INFO_HSI = 0x01, HSI_ILLUMINATION_INFO_HSI_II = 0x02, //lvgang HSI_ILLUMINATION_INFO_HSI_III = 0x04, //shixuyong HSI_ILLUMINATION_INFO_TOTAL }; public enum HSI_ILLUMINATION_BULB_TYPE { HSI_ILLUMINATION_BULB_ROUND = 1, HSI_ILLUMINATION_BULB_SQUARE = 2, HSI_ILLUMINATION_BULB_RING = 3, HSI_ILLUMINATION_BULB_GRID = 4 }; public enum HSI_ILLUMINATION_LAMP_TYPE { HSI_ILLUMINATION_LAMP_NONE = 0, HSI_ILLUMINATION_LAMP_COAXIAL = 1, HSI_ILLUMINATION_LAMP_SURFACE = 2, HSI_ILLUMINATION_LAMP_PROFILE = 3, HSI_ILLUMINATION_LAMP_PROFILE_OUTER = 4 }; public enum HSI_ILLUMINATION_LAMP_CONTROL_TYPE { HSI_ILLUMINATION_LAMP_CONTROL_NONE = 0x0000, HSI_ILLUMINATION_LAMP_CONTROL_BY_WHOLE_LAMP = 0x0001, HSI_ILLUMINATION_LAMP_CONTROL_BY_RINGS = 0x0002, HSI_ILLUMINATION_LAMP_CONTROL_BY_OCTANTS = 0x0004, HSI_ILLUMINATION_LAMP_CONTROL_BY_SEGMENTS = 0x0008, HSI_ILLUMINATION_LAMP_CONTROL_BY_OTHER }; public enum HSI_ILLUMINATION_BULB_STATE { HSI_ILLUMINATION_BULB_STATE_TURN_ON = 0, HSI_ILLUMINATION_BULB_STATE_TURN_OFF = 1, HSI_ILLUMINATION_BULB_STATE_TOTAL }; public enum HSI_ILLUMINATION_TYPE { HSI_ILLUMINATION_SUPPORTS_DCC_CONTROL = 0x0001, HSI_ILLUMINATION_SUPPORTS_MANUAL_CONTROL = 0x0002 }; public enum HSI_ILLUMINATION_LAMP_LOCATION_TYPE { HSI_ILLUMINATION_LAMP_LOCATION_NONE = 0, HSI_ILLUMINATION_LAMP_LOCATION_TOP_ON_AXIS = 1, HSI_ILLUMINATION_LAMP_LOCATION_TOP_ANGLED = 2, HSI_ILLUMINATION_LAMP_LOCATION_BOTTOM = 3, HSI_ILLUMINATION_LAMP_LOCATION_MOVABLE = 4 }; public const int HSI_ILLUMINATION_MAX_LAMPS = 6; public const int HSI_ILLUMINATION_MAX_BULB_COLORS = 3; public const int HSI_ILLUMINATION_MAX_RINGS = 12; public const int HSI_ILLUMINATION_MAX_SECTORS = 16; public const int HSI_ILLUMINATION_MAX_BULBS = HSI_ILLUMINATION_MAX_RINGS*HSI_ILLUMINATION_MAX_SECTORS; public const int HSI_MaxLampNameLength = 29, HSI_MaxLampDescriptionLength = 255; // Maximum string length (buffer size - 1) } }