Files
EF3-Interface/PcDmis/Base/Interfac/Msi/Hsi/HSI.h
T
2022-12-05 10:31:18 +08:00

503 lines
23 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#ifndef HSI_H_INCLUDED_
#define HSI_H_INCLUDED_
#include <Windows.h>
#include <tchar.h>
#pragma once
///////////////////////////////////////////////////////////////////////////////
//
// HSI.h
//
///////////////////////////////////////////////////////////////////////////////
//
// Definition for Hardware Specific Interface DLL (HSI)
//
///////////////////////////////////////////////////////////////////////////////
#ifdef HSI_EXPORTS
#define HSI_API extern "C" __declspec(dllexport)
#else
#define HSI_API extern "C" __declspec(dllimport)
#endif
const int HSI_APIVersionMajor = 1;
const int HSI_APIVersionMinor = 9;
const int HSI_MaxStringLength = 255; // Maximum string length (buffer size - 1)
///////////////////////////////////////////////////////////////////////////////
// Interface API
///////////////////////////////////////////////////////////////////////////////
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
};
enum HSI_MACHINE_TYPE
{
HSI_MACHINE_UNKNOWN = 0,
HSI_MACHINE_SO7 = 1,
HSI_MACHINE_NAVITAR_AUTOZOOM = 2,
HSI_MACHINE_EF3 = 3,
HSI_MACHINE_GOOGOL = 4,
HSI_MACHINE_TYPE_TOTAL,
};
enum HSI_EVENT_TYPE
{
HSI_EVENT_NONE = 0,
HSI_EVENT_ERROR = 1,
HSI_EVENT_FUNCTION = 2,
HSI_EVENT_NOTIFY = 3,
HSI_EVENT_SAFETY = 4,
HSI_EVENT_SAFETY_KEEP = 5
};
enum HSI_EVENT_FUNCTION_ID // EventData
{ // Send Receive
// 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/A N/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/A N/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/A N/A
HSI_EVENT_OPENFILE_DLG = 12, // N/A "FileName"
HSI_EVENT_DISPLAY_YESNO_MESSAGE = 13, // N/A N/A
HSI_EVENT_DISPLAY_OKCANCEL_MESSAGE = 14, // N/A N/A
HSI_EVENT_DISPLAY_OK_MESSAGE = 15, // N/A N/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/A N/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_MOTION_FOCUS_HOME = 502,
HSI_EVENT_MOTION_EMERGENT_STOP = 503,
HSI_EVENT_SHUTDOWN_ = 999, // N/A N/A
HSI_EVENT_MOTION_DRIVER_ALARM = 1000,
HSI_EVENT_MOTION_PROBE = 1001,
HSI_EVENT_MOTION_DISPENSER = 1002
};
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,
HSI_NOTIFY_CLEAR_ITERATIONS = 7,
HSI_NOTIFY_EMERGENCY_STATE = 9
};
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
};
const int HSI_THREAD_EXIT = -1;
const int HSI_THREAD_RUNNING = 0;
const int HSI_THREAD_PAUSED = 1;
struct sHSIEventProperties
{
UINT EventID;
UINT EventCallbackID;
HSI_EVENT_TYPE EventType;
HSI_EVENT_RESPONSE_TYPE EventResponse;
char EventData[HSI_MaxStringLength + 1];
void Init()
{
EventID = 0;
EventCallbackID = 0;
EventType = HSI_EVENT_NONE;
EventResponse = HSI_EVENT_CALLBACK;
memset(EventData, 0, (HSI_MaxStringLength + 1)*sizeof(char));
};
sHSIEventProperties()
{
Init();
}
};
// >>>> In Interfaces
typedef VOID(WINAPI *pEventCallback)(HSI_EVENT_TYPE EventType, HSI_EVENT_RESPONSE_TYPE ResponseType, UINT EventID, char EventData[HSI_MaxStringLength + 1], UINT &EventCallbackID);
HSI_API HSI_STATUS WINAPI HSI_STARTUP(HWND _hWnd, bool _bOfflineOnly);
HSI_API HSI_STATUS WINAPI HSI_GET_INTERFACE_VERSION(UINT &APIVersionMajor, UINT &APIVersionMinor);
HSI_API HSI_STATUS WINAPI HSI_GET_MACHINE_INFO(int &_NumMachineTypes);
HSI_API HSI_STATUS WINAPI HSI_SET_EVENT_CALLBACK(pEventCallback _pCallback);
HSI_API HSI_STATUS WINAPI HSI_SHUTDOWM();
// <<<< Out Interfaces
///////////////////////////////////////////////////////////////////////////////
// Motion API
///////////////////////////////////////////////////////////////////////////////
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
};
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
};
enum HSI_MOTION_IO_TYPE
{
HSI_MOTION_INPUT = 0x0001,
HSI_MOTION_INPUT_LIMIT_SWITCH,
HSI_MOTION_INPUT_CH1,//̸ߡΪˡEF1
HSI_MOTION_INPUT_CH2,
HSI_MOTION_INPUT_CH3,//ڿ
HSI_MOTION_INPUT_CH4,//Ϊ˶ƿ
HSI_MOTION_INPUT_ALARM,//
HSI_MOTION_OUTPUT = 0x0100,
HSI_MOTION_OUTPUT_LASER_PEN,
HSI_MOTION_OUTPUT_CH1,//̸ߡΪˡEF1
HSI_MOTION_OUTPUT_CH2,
HSI_MOTION_OUTPUT_CH3,//ڿ
HSI_MOTION_OUTPUT_CH4//Ϊ˶ƿ
};
const UINT HSI_MOTION_AXIS_ALL = HSI_MOTION_AXIS_X | HSI_MOTION_AXIS_Y | HSI_MOTION_AXIS_Z;
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
};
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
};
enum HSI_SCAN_MOTION_TYPE
{
HSI_SCAN_MOTION_LINEAR = 1,
HSI_SCAN_MOTION_CIRCULAR,
HSI_SCAN_MOTION_SPEC_LOCA = 100,//EF1
HSI_SCAN_MOTION_EQ_DIS,
HSI_SCAN_MOTION_EQ_DIS_II,
HSI_SCAN_MOTION_LINEAR_TEST,//ʹ
HSI_SCAN_MOTION_EQ_TEST,//ʹ
HSI_SCAN_MOTION_MANUAL_TEST//ʹ
};
enum HSI_ZOOM_TYPE
{
HSI_ZOOM_MANUAL = 0,
HSI_ZOOM_NAVITAR=3
};
typedef struct
{
double x;
double y;
double z;
}Point;
const int HSI_MAX_POSITIONS_STORED = 500;
// >>>> In Interfaces
HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_SUPPORTED(UINT &Types);
HSI_API HSI_STATUS WINAPI HSI_MOTION_STARTUP(bool bHome);
HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_HOMED(bool &bHomed);
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SPEED_XYZ(double &Speed);
HSI_API HSI_STATUS WINAPI HSI_EF3MOTION_GET_SPEED_XYZ(int axis, double &Speed);
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SPEED_XYZ(double Speed);
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ACCELERATION_XYZ(double &AccelX, double &AccelY, double &AccelZ);
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_ACCELERATION_XYZ(double AccelX, double AccelY, double AccelZ);
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SPEED_R(double &Speed);
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SPEED_R(double Speed);
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ACCELERATION_R(double &AccelR);
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_ACCELERATION_R(double AccelR);
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SCALE_RESOLUTION(double &ScaleX, double &ScaleY, double &ScaleZ);
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SCALE_RESOLUTION(double ScaleX, double ScaleY, double ScaleZ);
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_DEADBAND(double &DeadbandX, double &DeadbandY, double &DeadbandZ, double &DeadbandR);
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_REFRESH_DEADBAND(double &Deadband);
HSI_API HSI_STATUS WINAPI HSI_MOTION_JOG(UINT AxisTypes, double Speed);
HSI_API HSI_STATUS WINAPI HSI_MOTION_STOP_JOG();
HSI_API BOOL WINAPI HSI_MOTION_GET_PROBE_TOUCH();
HSI_API HSI_STATUS WINAPI HSI_MOTION_TOUCH_MOVE(double dSpeed, double dEndPosX, double dEndPosY, double dEndPosZ, double dI, double dJ, double dK);
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITION_XYZ(UINT AxisTypes, double &PositionX, double &PositionY, double &PositionZ, double &Time);
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITION_XYZA_PROBE(UINT AxisTypes, double &PositionX, double &PositionY, double &PositionZ, double &dI, double &dJ, double &dK, double &PositionA);
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITIONPROBE(UINT AxisTypes, double &PositionX, double &PositionY, double &PositionZ, double &PositionA);
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ENCODER_XYZ(long *lEncVal);
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_XYZ(UINT AxisTypes, double PositionX, double PositionY, double PositionZ, HSI_MOTION_MOVE_TYPE eType, double dSpeedGear);
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_XYZ_CACHE(UINT AxisTypes, HSI_MOTION_MOVE_TYPE eType, int DataCount, Point *CacheData);
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITION_R(UINT AxisTypes, double &PositionR, double &Time);
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_R(UINT AxisTypes, double PositionR, HSI_MOTION_AXIS_R_MOVE_TYPE DirectionType, bool bWait);
HSI_API HSI_STATUS WINAPI HSI_MOTION_ABORT_MOTION();
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_PLAN_SCAN(double *pdStartPosX, double *pdStartPosY, double *pdStartPosZ, double *pdEndPosX, double *pdEndPosY, double *pdEndPosZ, double *pdStepDis, bool *pbTrig, int iCount);
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_DIO(UINT IOChannel, UINT& _Status);
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_DIO(UINT IOChannel, UINT _Status);
HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_SET_DATA(UINT AxisTypes, HSI_SCAN_MOTION_TYPE eType, UINT lTrigNumber, double* dTrigDis);
HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_START();
HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_STOP();
HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_SUPPORTED_EX(UINT AxisTypes, UINT &Types);
HSI_API HSI_STATUS WINAPI HSI_MOTION_STARTUP_EX(UINT AxisTypes, bool bHome);
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SCALE_RESOLUTION_EX(UINT AxisTypes, double &Scale);
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SCALE_RESOLUTION_EX(UINT AxisTypes, double Scale);
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITION_EX(UINT AxisTypes, double &Position, double &Time);
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_EX(UINT AxisTypes, double Position, HSI_MOTION_MOVE_TYPE eType, double dSpeedGear);
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SPEED_EX(UINT AxisTypes, double &Speed);
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SPEED_EX(UINT AxisTypes, double Speed);
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ACCELERATION_EX(UINT AxisTypes, double &Accel);
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_ACCELERATION_EX(UINT AxisTypes, double Accel);
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_MAGNIFICATION(UINT AxisTypes, double mag, HSI_MOTION_MOVE_TYPE eType, double dSpeedGear);
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_MAGNIFICATION(UINT AxisTypes, double &mag);
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SCALE_POS(UINT AxisTypes, double ScalePos, HSI_MOTION_MOVE_TYPE eType, double dSpeedGear);
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SCALE_POS(UINT AxisTypes, double &ScalePos);
HSI_API HSI_STATUS WINAPI HSI_MOTION_SHUTDOWN();
// <<<< Out Interfaces
///////////////////////////////////////////////////////////////////////////////
// Illumination API
///////////////////////////////////////////////////////////////////////////////
enum HSI_ILLUMINATION_INFO
{
HSI_ILLUMINATION_INFO_UNKNOWN = 0,
HSI_ILLUMINATION_INFO_SO7 = 0x01,
HSI_ILLUMINATION_INFO_SO7_II = 0x02,//lvgang
HSI_ILLUMINATION_INFO_SO7_III = 0x04,//shixuyong
HSI_ILLUMINATION_INFO_TOTAL
};
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
};
enum HSI_ILLUMINATION_LAMP_TYPE
{
HSI_ILLUMINATION_LAMP_COAXIAL = 0,
HSI_ILLUMINATION_LAMP_SURFACE = 1,
HSI_ILLUMINATION_LAMP_PROFILE = 2,
HSI_ILLUMINATION_LAMP_PROFILE_OUTER = 3
};
enum HSI_ILLUMINATION_LAMP_CONTROL_TYPE
{
HSI_ILLUMINATION_LAMP_CONTROL_BY_WHOLE_LAMP = 0x0000,
HSI_ILLUMINATION_LAMP_CONTROL_BY_RINGS = 0x0001,
HSI_ILLUMINATION_LAMP_CONTROL_BY_OCTANTS = 0x0002,
HSI_ILLUMINATION_LAMP_CONTROL_BY_SEGMENTS = 0x0004,
HSI_ILLUMINATION_LAMP_CONTROL_BY_OTHER
};
enum HSI_ILLUMINATION_BULB_STATE
{
HSI_ILLUMINATION_BULB_STATE_TURN_ON = 0,
HSI_ILLUMINATION_BULB_STATE_TURN_OFF = 1,
HSI_ILLUMINATION_BULB_STATE_TOTAL
};
enum HSI_ILLUMINATION_TYPE
{
HSI_ILLUMINATION_SUPPORTS_DCC_CONTROL = 0x0001,
HSI_ILLUMINATION_SUPPORTS_MANUAL_CONTROL = 0x0002
};
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
};
const int HSI_ILLUMINATION_MAX_LAMPS = 6;
const int HSI_ILLUMINATION_MAX_BULB_COLORS = 3;
const int HSI_ILLUMINATION_MAX_RINGS = 12;
const int HSI_ILLUMINATION_MAX_SECTORS = 16;
const int HSI_ILLUMINATION_MAX_BULBS = HSI_ILLUMINATION_MAX_RINGS*HSI_ILLUMINATION_MAX_SECTORS;
const int HSI_ILLUMINATION_MAX_BULB_TYPE = 2;
const int HSI_MaxLampNameLength = 29, HSI_MaxLampDescriptionLength = 255; // Maximum string length (buffer size - 1)
// >>>> In Interfaces
HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_IS_SUPPORTED(UINT &Types);
HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_STARTUP();
HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_GET_LAMP_COUNT(int &nLamps);
HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_GET_LAMP_INFO(int& _LampInfo, int& _NumLamps, int(*_LampsType)[HSI_ILLUMINATION_MAX_BULB_TYPE],
int *NumRings, int *NumSectors, int* _Color, double *_Angle, bool &bCanBeCalibrated);
HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_GET_LAMP_STATE(int nLamp, bool *bBulbStates, double *Intensities, int &Color, double &Angle);
HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_SET_LAMP_STATE(int nLamp, bool *bBulbStates, double *Intensities, int Color, double Angle, bool bWait);
HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_GET_LAMP_STATE_ALL(int _LampInfo, int _NumLamps, int(*_LampsType)[HSI_ILLUMINATION_MAX_BULB_TYPE], int(*bBulbStates)[HSI_ILLUMINATION_MAX_BULBS], double(*Intensities)[HSI_ILLUMINATION_MAX_BULBS]);
HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_SET_LAMP_STATE_ALL(int _LampInfo, int _NumLamps, int(*_LampsType)[HSI_ILLUMINATION_MAX_BULB_TYPE], int(*bBulbStates)[HSI_ILLUMINATION_MAX_BULBS], double(*Intensities)[HSI_ILLUMINATION_MAX_BULBS], bool bWait);
HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_SHUTDOWN();
// <<<< Out Interfaces
class HSI
{
public:
HSI() : hWnd(nullptr), bOfflineOnly(false){}
virtual ~HSI(){}
virtual HSI_STATUS IsSupported(UINT &Types){ Types = 0; return HSI_STATUS_NORMAL; }
virtual HSI_STATUS Startup(HWND _hWnd, bool _bOfflineOnly){ hWnd = _hWnd; bOfflineOnly = _bOfflineOnly; return HSI_STATUS_NORMAL; }
virtual HSI_STATUS Shutdown(){ return HSI_STATUS_NORMAL; }
protected:
HWND hWnd;
bool bOfflineOnly;
sHSIEventProperties sEvenProp;
};
#endif