1558 lines
39 KiB
C++
1558 lines
39 KiB
C++
#include "stdafx.h"
|
|
#include "HSI.h"
|
|
#include "HSI_Motion.h"
|
|
#include "HSI_Sevenocean_EF3.h"
|
|
#include "SevenOcean/CMMIO_SERIAL.h"
|
|
//#include "HSI_Illumination.h"
|
|
//#include "HSI_Function.h"
|
|
//#include "HSI_JoyStick.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#endif
|
|
|
|
static HWND g_hWnd = nullptr;
|
|
static bool g_bOfflineOnly = false;
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// 开发说明
|
|
//初版 V0.1 2022/10/10
|
|
//---------------------------------------
|
|
//1、剥离 Metus初步所需函数(14个函数,包含是否回家,运动初始化,版本,JOG运动,运动到指定位置等)并生成dll
|
|
//
|
|
//
|
|
// V0.1.10 2024/02/26
|
|
//---------------------------------------
|
|
//1、根据实际平台 电气层面轴定义,修改代码
|
|
//
|
|
//
|
|
//轴名 电气层轴 左极限 右极限
|
|
//X 1 - 30 730
|
|
//Y 0 - 10 1000
|
|
//Z 8 - 280 5
|
|
//
|
|
//
|
|
//V0.1.10 2024/04/07
|
|
// ---------------------------------------
|
|
//1、配合专机2使用,增加了方向的传递接口 江苏高光半导体掩膜板瑕疵检测项目
|
|
//2、配合专机2使用,屏蔽了SetSpeedEx 接口,对SetPositionXyz接口 由 acsc_ToPointM 改为 acsc_ToPoint 多个单轴独立运动
|
|
//
|
|
//
|
|
//
|
|
//
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
#pragma region interface
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_GET_INTERFACE_VERSION(UINT& APIVersionMajor, UINT& APIVersionMinor)
|
|
{
|
|
APIVersionMajor = HSI_APIVersionMajor; //HSI.dll 主版本号
|
|
APIVersionMinor = HSI_APIVersionMinor; //HSI.dll 小版本号
|
|
return HSI_STATUS_NORMAL;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_STARTUP(HWND _hWnd, bool _bOfflineOnly)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (!g_pHSI_Sevenocean_EF3)
|
|
{
|
|
g_pHSI_Sevenocean_EF3 = new HSI_Sevenocean_EF3();
|
|
}
|
|
if (g_pHSI_Sevenocean_EF3)
|
|
{
|
|
g_pHSI_Sevenocean_EF3->Startup(_hWnd, _bOfflineOnly); //初始化EF3
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
g_hWnd = _hWnd;
|
|
g_bOfflineOnly = _bOfflineOnly;
|
|
return rStatus;
|
|
}
|
|
|
|
//==========================获取机器控制器信息,3代表EF3=================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_GET_MACHINE_INFO(int& _NumMachineTypes)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Sevenocean_EF3)
|
|
{
|
|
rStatus = g_pHSI_Sevenocean_EF3->GetMachineInfo(_NumMachineTypes);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_SET_EVENT_CALLBACK(pEventCallback _pCallback)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Sevenocean_EF3)
|
|
{
|
|
rStatus = g_pHSI_Sevenocean_EF3->SetEventCallback(_pCallback); //设置事件
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_SHUTDOWM()
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pLogger)
|
|
{
|
|
delete g_pLogger;
|
|
g_pLogger = nullptr;
|
|
}
|
|
if (g_pLogger2)
|
|
{
|
|
delete g_pLogger2;
|
|
g_pLogger2 = nullptr;
|
|
}
|
|
//if (g_pHSI_Illumination) //屏蔽光照
|
|
//{
|
|
// rStatus = g_pHSI_Illumination->Shutdown();
|
|
// delete g_pHSI_Illumination;
|
|
// g_pHSI_Illumination = nullptr;
|
|
//}
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->Shutdown(); //运动终止
|
|
delete g_pHSI_Motion;
|
|
g_pHSI_Motion = nullptr;
|
|
}
|
|
//if (g_pHSI_JoyStick) //屏蔽摇杆
|
|
//{
|
|
// g_pHSI_JoyStick->SuspendJoyStickThread();
|
|
// delete g_pHSI_JoyStick;
|
|
// g_pHSI_JoyStick = nullptr;
|
|
//}
|
|
if (g_pHSI_Sevenocean_EF3)
|
|
{
|
|
g_pHSI_Sevenocean_EF3->Shutdown(); //EF3对象删除
|
|
delete g_pHSI_Sevenocean_EF3;
|
|
g_pHSI_Sevenocean_EF3 = nullptr;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
#pragma endregion
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// MOTION API 运动相关API
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
#pragma region Motion API Phase 1
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_STARTUP(bool bHome)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_bOfflineOnly == 0)
|
|
{
|
|
if (!g_pHSI_Motion)
|
|
{
|
|
g_pHSI_Motion = new HSI_Motion();
|
|
}
|
|
if (g_pHSI_Motion && g_pHSI_Sevenocean_EF3)
|
|
{
|
|
rStatus = g_pHSI_Motion->Startup(g_hWnd, g_bOfflineOnly);
|
|
if (rStatus == HSI_STATUS_FAILED)
|
|
{
|
|
return HSI_STATUS_FAILED;
|
|
}
|
|
switch (g_pHSI_Motion->m_iJoyStick) //摇杆设置
|
|
{
|
|
case 0:
|
|
break;
|
|
case 1:
|
|
//if (!g_pHSI_JoyStick)
|
|
//{
|
|
// g_pHSI_JoyStick = new HSI_Joystick(g_pHSI_Motion);
|
|
// g_pHSI_JoyStick->ResumeJoyStickThread();
|
|
//}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_FIREWAREVERION(byte* verion)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->GetFirmwareVersion(verion);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_SHUTDOWN()
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->Shutdown();
|
|
delete g_pHSI_Motion;
|
|
g_pHSI_Motion = nullptr;
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_JOG(UINT AxisTypes, double Speed)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->Jog(AxisTypes, Speed);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_STOP_JOG()
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->StopJog();
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITION_XYZ(UINT AxisTypes, double& PositionX, double& PositionY,
|
|
double& PositionZ, double& Time)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->GetPositionXyz(AxisTypes, PositionX, PositionY, PositionZ, Time);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
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)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->SetPositionXyz(AxisTypes, PositionX, PositionY, PositionZ, eType, dSpeedGear);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_ABORT_MOTION()
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->AbortMotion();
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_HOMED(bool& bHomed)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->IsHomed(bHomed);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_EF3MOTION_GET_SPEED_XYZ(int axis, double& Speed)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->GetSpeedXyz(axis, Speed);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SPEED_EX(UINT AxisTypes, double Speed)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->SetSpeedEx(AxisTypes, Speed);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_DIO(UINT IOChannel, UINT& _Status)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->GetDIO(IOChannel, _Status);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_SUPPORTED(UINT& Types)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_bOfflineOnly == 0)
|
|
{
|
|
if (!g_pHSI_Motion)
|
|
{
|
|
g_pHSI_Motion = new HSI_Motion();
|
|
}
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->IsSupported(Types);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_FOCUSSPEED_XYZ(double& Speed)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->GetFocusSpeed(Speed);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_FOCUSSPEED_XYZ(double Speed)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->SetFocusSpeed(Speed);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_DIRECTION_FLAG(int CurrentDirection)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->SetMotionDirectionFlag(CurrentDirection);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_DIRECTION_FLAG(int& CurrentDirection)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->GetMotionDirectionFlag(CurrentDirection);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
#pragma endregion
|
|
|
|
#define USE_Motion_API
|
|
#ifdef USE_Motion_API
|
|
|
|
#pragma region 后续考虑
|
|
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SPEED_XYZ(double Speed)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->SetSpeedXyz(Speed);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ACCELERATION_XYZ(double& AccelX, double& AccelY, double& AccelZ)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->GetAccelerationXyz(AccelX, AccelY, AccelZ);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_ACCELERATION_XYZ(double AccelX, double AccelY, double AccelZ)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->SetAccelerationXyz(AccelX, AccelY, AccelZ);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SPEED_R(double& Speed)
|
|
{
|
|
UNREFERENCED_PARAMETER(Speed);
|
|
return HSI_STATUS_NOT_SUPPORTED;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SPEED_R(double Speed)
|
|
{
|
|
UNREFERENCED_PARAMETER(Speed);
|
|
return HSI_STATUS_NOT_SUPPORTED;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ACCELERATION_R(double& AccelR)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
UNREFERENCED_PARAMETER(AccelR);
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_ACCELERATION_R(double AccelR)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
UNREFERENCED_PARAMETER(AccelR);
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SCALE_RESOLUTION(double& ScaleX, double& ScaleY, double& ScaleZ)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->GetScaleResolution(ScaleX, ScaleY, ScaleZ);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SCALE_RESOLUTION(double ScaleX, double ScaleY, double ScaleZ)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->SetScaleResolution(ScaleX, ScaleY, ScaleZ);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_DEADBAND(double& DeadbandX, double& DeadbandY, double& DeadbandZ,
|
|
double& DeadbandR)
|
|
{
|
|
UNREFERENCED_PARAMETER(DeadbandX);
|
|
UNREFERENCED_PARAMETER(DeadbandY);
|
|
UNREFERENCED_PARAMETER(DeadbandZ);
|
|
UNREFERENCED_PARAMETER(DeadbandR);
|
|
return HSI_STATUS_NOT_SUPPORTED;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_REFRESH_DEADBAND(double& Deadband)
|
|
{
|
|
UNREFERENCED_PARAMETER(Deadband);
|
|
return HSI_STATUS_NOT_SUPPORTED;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ENCPRF_MULTI(UINT AxisTypes, double* EncPos, double* PrfPos, int Count)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->GetPositionEncPrfMulti(AxisTypes, EncPos, PrfPos, Count);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ENCODER_XYZ(long* lEncVal)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->GetEncoderXyz(lEncVal);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITIONPROBE(UINT AxisTypes, double& PositionX, double& PositionY,
|
|
double& PositionZ, double& PositionA)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->GetPositionXyzaProbe(AxisTypes, PositionX, PositionY, PositionZ, PositionA);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_JOG_PROBE(UINT AxisTypes, double speed)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->JogProbe(AxisTypes, speed);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_XYZA(UINT AxisTypes, double PositionX, double PositionY,
|
|
double PositionZ, double PositionA, HSI_MOTION_MOVE_TYPE eType,
|
|
double dSpeedGear)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->SetPositionXyza(AxisTypes, PositionX, PositionY, PositionZ, PositionA, eType,
|
|
dSpeedGear);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_XYZ_CACHE(UINT AxisTypes, HSI_MOTION_MOVE_TYPE eType, int DataCount,
|
|
Point* CacheData)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->SetPositionXyzCache(AxisTypes, eType, DataCount, CacheData);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITION_XYZ_CACHE(unsigned char* CacheData, int& DataCount)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->GetPositionXyzCache(CacheData, DataCount);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_CIRCLEINTERPOLATE(double PositionX, double PositionY, double PositionZ)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->SetCircleInterpolate(PositionX, PositionY, PositionZ);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITION_R(UINT AxisTypes, double& PositionR, double& Time)
|
|
{
|
|
UNREFERENCED_PARAMETER(AxisTypes);
|
|
UNREFERENCED_PARAMETER(PositionR);
|
|
UNREFERENCED_PARAMETER(Time);
|
|
return HSI_STATUS_NOT_SUPPORTED;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_R(UINT AxisTypes, double PositionR,
|
|
HSI_MOTION_AXIS_R_MOVE_TYPE DirectionType, bool bWait)
|
|
{
|
|
UNREFERENCED_PARAMETER(AxisTypes);
|
|
UNREFERENCED_PARAMETER(PositionR);
|
|
UNREFERENCED_PARAMETER(DirectionType);
|
|
UNREFERENCED_PARAMETER(bWait);
|
|
return HSI_STATUS_NOT_SUPPORTED;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_DIO(UINT IOChannel, UINT _Status)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->SetDIO(IOChannel, _Status);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_AXISSTATUS(int* _Status)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->GetAxisStatus(_Status);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_TRIGGERLIGHT(int triggleNum, int delayLighting, int delayLightBefor,
|
|
int triggleMode, double* Intensities)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->SetTriggerLight(triggleNum, delayLighting, delayLightBefor, triggleMode, Intensities);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_IOPROGRAM_DATA(byte* SendData, int length)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->IOprogram(SendData, length);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_PPStartPoint(double* startPoint)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->DCCPPStartPoint(startPoint);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_START()
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->DCCScanStart();
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_STOP()
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->DCCScanStop();
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_FORLIGHT_PLATE()
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->DCCForLightPlate();
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_DCC_SCAN_SET_DATA(UINT AxisTypes, HSI_SCAN_MOTION_TYPE eType, UINT lTrigNumber,
|
|
double* dTrigDis)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->DCCScanSetData(AxisTypes, eType, lTrigNumber, dTrigDis);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_IO_STEP(bool RunSts)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->IOStep(RunSts);
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_ZERO_POS(bool bZeroPos)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->ZeroPos(bZeroPos);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_GLUE_PPSPNTS(int* ppsDir, double* gluePPSPos, int* delayLightBefore,
|
|
int* lightTime, double* lightData, int num)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->GluePPSpnts(ppsDir, gluePPSPos, delayLightBefore, lightTime, lightData, num);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_GLUE_DISPENSER(int* index, int* cirdirection, double* gluePos, int num)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->GlueDispenser(index, cirdirection, gluePos, num);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_GLUE_DISPENSERSTART(double xOffset, double yOffset, double qOffset)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->GlueDispenserStart(xOffset, yOffset, qOffset);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_PTPDISTANCE(double& ptpDistance, int& spTimeCount)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->GetPntsDistance(ptpDistance, spTimeCount);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_IS_SUPPORTED_EX(UINT AxisTypes, UINT& Types)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->IsSupportedEx(AxisTypes, Types);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_STARTUP_EX(UINT AxisTypes, bool bHome)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->StartupEx(AxisTypes, bHome);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SCALE_RESOLUTION_EX(UINT AxisTypes, double& Scale)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->GetScaleResolutionEx(AxisTypes, Scale);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_SCALE_RESOLUTION_EX(UINT AxisTypes, double Scale)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->SetScaleResolutionEx(AxisTypes, Scale);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_POSITION_EX(UINT AxisTypes, double& Position, double& Time)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->GetPositionEx(AxisTypes, Position, Time);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_POSITION_EX(UINT AxisTypes, double Position, HSI_MOTION_MOVE_TYPE eType,
|
|
double dSpeedGear)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->SetPositionEx(AxisTypes, Position, eType, dSpeedGear);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_SPEED_EX(UINT AxisTypes, double& Speed)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->GetSpeedEx(AxisTypes, Speed);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_GET_ACCELERATION_EX(UINT AxisTypes, double& Accel)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->GetAccelerationEx(AxisTypes, Accel);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_SET_ACCELERATION_EX(UINT AxisTypes, double Accel)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->SetAccelerationEx(AxisTypes, Accel);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_STARTPLCJOB(int* CamerasDis, int* BinsDis, int SubArea, int filterTime1,
|
|
int filterTime2, int pulseSum)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->StartPlcJob(CamerasDis, BinsDis, SubArea, filterTime1, filterTime2, pulseSum);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_SENDBINRESULT(int* BinResult)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->SendBinResult(BinResult);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_TRIGGLECOUNT(int* nCount, int& nArea)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->GetTriggleCount(nCount, nArea);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_FINDORIGINTEST(bool type)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->FindOriginTest(type);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
HSI_API HSI_STATUS WINAPI HSI_MOTION_COLLECTPOS(bool isEnable, MOTOR_AXISCHOOES_CMD axis, short cycle)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
rStatus = g_pHSI_Motion->CollectPos(isEnable, axis, cycle);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
|
|
HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_SHUTDOWN()
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
//if (g_pHSI_Illumination)
|
|
//{
|
|
// rStatus = g_pHSI_Illumination->Shutdown();
|
|
// delete g_pHSI_Illumination;
|
|
// g_pHSI_Illumination = nullptr;
|
|
//}
|
|
//else
|
|
//{
|
|
// rStatus = HSI_STATUS_FAILED;
|
|
//}
|
|
return rStatus;
|
|
}
|
|
|
|
#pragma endregion
|
|
#endif // DEBUG
|
|
|
|
#pragma endregion
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
// ILLUMINATION API 补光灯
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifdef USE_ILLUMINATION_API
|
|
|
|
#pragma region // ILLUMINATION API
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_IS_SUPPORTED(UINT &Types)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (!g_pHSI_Illumination)
|
|
{
|
|
g_pHSI_Illumination = new HSI_Illumination();
|
|
}
|
|
if (g_pHSI_Illumination)
|
|
{
|
|
g_pHSI_Illumination->IsSupported(Types);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_STARTUP()
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (!g_pHSI_Illumination)
|
|
{
|
|
g_pHSI_Illumination = new HSI_Illumination();
|
|
}
|
|
if (g_pHSI_Illumination)
|
|
{
|
|
rStatus = g_pHSI_Illumination->Startup(g_hWnd, g_bOfflineOnly);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_GET_LAMP_COUNT(int &nLamps)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Illumination)
|
|
{
|
|
g_pHSI_Illumination->GetLampCount(nLamps);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
//===========================================================================
|
|
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)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Illumination)
|
|
{
|
|
g_pHSI_Illumination->GetLampInfo(_LampInfo, _NumLamps, _LampsType, NumRings, NumSectors, _Color, _Angle, bCanBeCalibrated);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_GET_LAMP_STATE(int nLamp, bool *bBulbStates, double *Intensities, int &Color, double &Angle)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Illumination)
|
|
{
|
|
g_pHSI_Illumination->GetLampState(nLamp, bBulbStates, Intensities, Color, Angle);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_SET_LAMP_STATE(int nLamp, bool *bBulbStates, double *Intensities, int Color, double Angle, bool bWait)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Illumination)
|
|
{
|
|
g_pHSI_Illumination->SetLampState(nLamp, bBulbStates, Intensities, Color, Angle, bWait);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_SET_SELECTEDINDEX(int index)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Illumination)
|
|
{
|
|
rStatus = g_pHSI_Illumination->SetSelectedIndex(index);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
//===========================================================================
|
|
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])
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Illumination)
|
|
{
|
|
g_pHSI_Illumination->GetLampStateAll(_LampInfo, _NumLamps, _LampsType, bBulbStates, Intensities);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
//===========================================================================
|
|
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)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Illumination)
|
|
{
|
|
g_pHSI_Illumination->SetLampStateAll(_LampInfo, _NumLamps, _LampsType, bBulbStates, Intensities, bWait);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_SHUTDOWN()
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Illumination)
|
|
{
|
|
rStatus = g_pHSI_Illumination->Shutdown();
|
|
delete g_pHSI_Illumination;
|
|
g_pHSI_Illumination = nullptr;
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_ILLUMINATION_TESTLIGHT(bool flag)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Illumination)
|
|
{
|
|
g_pHSI_Illumination->TestSELight(flag);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
//===========================================================================
|
|
#pragma endregion
|
|
|
|
#endif // USE_ILLUMINATION_API
|
|
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// Probe API 探针
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
#ifdef USE_Probe_API
|
|
#pragma region probe
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_TP_STARTUP()
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (!g_pHSI_Function)
|
|
{
|
|
g_pHSI_Function = new HSI_Function();
|
|
}
|
|
if (g_pHSI_Function)
|
|
{
|
|
rStatus = g_pHSI_Function->HSI_TP_Startup();
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_TP_ENABLE(bool bProbeEnable)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Function)
|
|
{
|
|
rStatus = g_pHSI_Function->HSI_TP_Enable(bProbeEnable);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_TP_GETACTIVEPROBE(int &nProbe)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Function)
|
|
{
|
|
rStatus = g_pHSI_Function->HSI_TP_GetActiveProbe(nProbe);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_TP_SETACTIVEPROBE(int nProbe)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Function)
|
|
{
|
|
rStatus = g_pHSI_Function->HSI_TP_SetActiveProbe(nProbe);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_TP_SETMANUALTOUCHDATA(double dRetract)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Function)
|
|
{
|
|
rStatus = g_pHSI_Function->HSI_TP_SetManualTouchData(dRetract);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_TP_SETTIPOFFSET(double OffsetX, double OffsetY, double OffsetZ)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Function)
|
|
{
|
|
rStatus = g_pHSI_Function->HSI_TP_SetTipOffset(OffsetX, OffsetY, OffsetZ);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_TP_GETTIPOFFSET(double &OffsetX, double &OffsetY, double &OffsetZ)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Function)
|
|
{
|
|
rStatus = g_pHSI_Function->HSI_TP_GetTipOffset(OffsetX, OffsetY, OffsetZ);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_TP_SETUPMEASUREPOINT(double dBeginX, double dBeginY, double dBeginZ, double dEndX, double dEndY, double dEndZ, double dTraveSpeed, double dTouchSpeed, double dRetrackDis)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Function)
|
|
{
|
|
rStatus = g_pHSI_Function->HSI_TP_SetupMeasurePoint(dBeginX, dBeginY, dBeginZ, dEndX, dEndY, dEndZ, dTraveSpeed, dTouchSpeed, dRetrackDis);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_TP_DOMEASURE(bool bWait)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Function)
|
|
{
|
|
rStatus = g_pHSI_Function->HSI_TP_DoMeasure(bWait);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_TP_ISMEASURING(bool &bMeasuring)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Function)
|
|
{
|
|
rStatus = g_pHSI_Function->HSI_TP_IsMeasuring(bMeasuring);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_TP_GETMEASUREDATA(double &dBeginX, double &dBeginY, double &dBeginZ, double &dEndX, double &dEndY, double &dEndZ)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Function)
|
|
{
|
|
rStatus = g_pHSI_Function->HSI_TP_GetMeasureData(dBeginX, dBeginY, dBeginZ, dEndX, dEndY, dEndZ);
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
//===========================================================================
|
|
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)
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Motion)
|
|
{
|
|
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
//===========================================================================
|
|
HSI_API HSI_STATUS WINAPI HSI_TP_SHUTDOWN()
|
|
{
|
|
auto rStatus = HSI_STATUS_NORMAL;
|
|
if (g_pHSI_Function)
|
|
{
|
|
rStatus = g_pHSI_Function->HSI_TP_Shutdown();
|
|
}
|
|
else
|
|
{
|
|
rStatus = HSI_STATUS_FAILED;
|
|
}
|
|
return rStatus;
|
|
}
|
|
//===========================================================================
|
|
#pragma endregion
|
|
|
|
#endif // USE_Probe_API
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// 测试功能
|
|
///////////////////////////////////////////////////////////////////////////////
|