627 lines
23 KiB
C++
627 lines
23 KiB
C++
#ifndef HSI_H_INCLUDED_
|
|
#define HSI_H_INCLUDED_
|
|
|
|
#include <Windows.h>
|
|
#include <tchar.h>
|
|
#include "ACS/ACSC.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,
|
|
|
|
HSI_ACS_OK=400,// ACS命令成功
|
|
HSI_ACS_ERROR
|
|
};
|
|
|
|
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
|
|
using pEventCallback = VOID(WINAPI *)(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;
|
|
const UINT HSI_MOTION_AXIS_ALL = ACSC_AXIS_1 | ACSC_AXIS_0 | ACSC_AXIS_8;
|
|
|
|
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
|
|
};
|
|
|
|
using Point = struct
|
|
{
|
|
double x;
|
|
double y;
|
|
double z;
|
|
};
|
|
const int HSI_MAX_POSITIONS_STORED = 500;
|
|
|
|
// >>>> In Interfaces
|
|
// 第一阶段需要重写的API 函数
|
|
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_STARTUP(bool bHome);
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_FIREWAREVERION(byte* verion);
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_SHUTDOWN();
|
|
HSI_API HSI_STATUS WINAPI HSI_EF3MOTION_GET_SPEED_XYZ(int axis, double& Speed);
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SPEED_EX(UINT AxisTypes, double Speed);
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_JOG(UINT AxisTypes, double Speed);
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_STOP_JOG();
|
|
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_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_ABORT_MOTION();
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_HOMED(bool& bHomed);
|
|
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_GET_POSITION_XYZ_CACHE(unsigned char* CacheData, int& DataCount);
|
|
// 第一阶段结束
|
|
|
|
|
|
// 第二阶段需要重写的API 函数
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_SUPPORTED(UINT& Types);
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SPEED_XYZ(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_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_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_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_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_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 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_XYZA_PROBE(UINT AxisTypes, double &PositionX, double &PositionY, double &PositionZ, double &dI, double &dJ, double &dK, double &PositionA);
|
|
|
|
|
|
// <<<< Out Interfaces
|
|
|
|
|
|
#ifdef USE_Illumination_API
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// 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
|
|
|
|
#endif // !USE_Illumination_API
|
|
|
|
|
|
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
|