196 lines
4.8 KiB
C++
196 lines
4.8 KiB
C++
//////////////////////////////////////////////////////////////////////
|
|
//
|
|
// HAL_LaserProbe.cpp : interface for the Laser Probe related functions
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
#include "StdAfx.h"
|
|
|
|
#include "HAL.h"
|
|
#include "HSI.h"
|
|
#include "HAL_Motion.h"
|
|
#include "HAL_Pendant.h"
|
|
#include "HAL_LaserProbe.h"
|
|
|
|
extern CHAL *g_pHSI;
|
|
extern CHALMicroVuExt g_HSIExt;
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
HAL_STATUS HAL_LP_IsSupported(UINT &Type)
|
|
{
|
|
switch(g_HSIExt.m_ActiveMachineType)
|
|
{
|
|
case HAL_MACHINE_TYPE_EXCEL:
|
|
case HAL_MACHINE_TYPE_VECTRA:
|
|
default:
|
|
Type = HAL_LP_SUPPORTS_NONE;
|
|
break;
|
|
}
|
|
|
|
HAL_SendDebug(_T("HAL_LP_IsSupported %X\n"), Type);
|
|
return HAL_STATUS_NORMAL;
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
HAL_STATUS HAL_LP_Startup()
|
|
{
|
|
HAL_STATUS Status = HAL_STATUS_NORMAL;
|
|
|
|
UINT Supports = 0;
|
|
HAL_LP_IsSupported(Supports);
|
|
return Status;
|
|
}
|
|
|
|
HAL_STATUS HAL_LP_Enable(bool bEnable)
|
|
{
|
|
UNREFERENCED_PARAMETER(bEnable);
|
|
HAL_STATUS Status = HAL_STATUS_NORMAL;
|
|
return Status;
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
HAL_STATUS HAL_LP_IsEnabled(bool &bEnabled)
|
|
{
|
|
UNREFERENCED_PARAMETER(bEnabled);
|
|
HAL_STATUS Status = HAL_STATUS_NORMAL;
|
|
return Status;
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
void HAL_LP_SendQualityFeedback(int SignalQuality)
|
|
{
|
|
UINT eventCallbackID=0;
|
|
TCHAR EventData[HAL_MaxStringLength+1];
|
|
CString Quality;
|
|
Quality.Format(_T("%d"), SignalQuality);
|
|
wcsncpy_s(EventData, _countof(EventData), Quality, HAL_MaxStringLength);
|
|
|
|
g_pHSI->Event(HAL_EVENT_FUNCTION, HAL_EVENT_LP_QUALITY, EventData, eventCallbackID);
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
HAL_STATUS HAL_LP_GetActiveProbe(int & /*nProbe*/)
|
|
{
|
|
HAL_STATUS Status = HAL_STATUS_NORMAL;
|
|
|
|
return Status;
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
HAL_STATUS HAL_LP_SetActiveProbe(int nProbe)
|
|
{
|
|
HAL_STATUS Status = HAL_STATUS_NORMAL;
|
|
|
|
switch(nProbe)
|
|
{
|
|
case -1:
|
|
Status = HAL_LP_Enable(false);
|
|
break;
|
|
|
|
default:
|
|
if(g_HSIExt.m_OptimetInit)
|
|
{
|
|
g_HSIExt.m_ActiveProbe = APT_LASER;
|
|
SetupPendantSpeeds();
|
|
|
|
HAL_LP_LoadLens();
|
|
}
|
|
break;
|
|
}
|
|
|
|
return Status;
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
void HAL_LP_LoadLens()
|
|
{
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
HAL_STATUS HAL_LP_SetupMeasurePoint(CHALLPMeasurePoint *pParams)
|
|
{
|
|
HAL_STATUS Status = HAL_STATUS_NORMAL;
|
|
|
|
if(IsBoardPresent())
|
|
{
|
|
if(pParams)
|
|
{
|
|
// Probe position
|
|
g_HSIExt.m_ProbeMeasPointStart[0] = pParams->m_MeasPoint.m_X;
|
|
g_HSIExt.m_ProbeMeasPointStart[1] = pParams->m_MeasPoint.m_Y;
|
|
g_HSIExt.m_ProbeMeasPointStart[2] = pParams->m_MeasPoint.m_Z;
|
|
|
|
g_HSIExt.m_OptimetGain = pParams->m_Gain;
|
|
g_HSIExt.m_OptimetFreq = pParams->m_Frequency;
|
|
g_HSIExt.m_OptimetQualityThreshold = pParams->m_QualityThreshold;
|
|
|
|
if(g_HSIExt.m_OptimetMag != pParams->m_AuxLens)
|
|
{
|
|
g_HSIExt.m_OptimetMag = pParams->m_AuxLens;
|
|
HAL_LP_LoadLens();
|
|
}
|
|
}
|
|
}
|
|
else
|
|
Status = HAL_STATUS_NOT_SUPPORTED;
|
|
|
|
return Status;
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
HAL_STATUS HAL_LP_DoMeasure(bool /*bWait*/)
|
|
{
|
|
HAL_STATUS Status = HAL_STATUS_NORMAL;
|
|
|
|
// Move to probe position
|
|
Status = HAL_Motion_SetPositionXYZ(HAL_MOTION_AXIS_X|HAL_MOTION_AXIS_Y|HAL_MOTION_AXIS_Z,
|
|
g_HSIExt.m_ProbeMeasPointStart[0],
|
|
g_HSIExt.m_ProbeMeasPointStart[1],
|
|
g_HSIExt.m_ProbeMeasPointStart[2],
|
|
HAL_MOTION_MOVE_WAIT, 0.0);
|
|
|
|
if(g_HSIExt.m_OptimetInit && Status == HAL_STATUS_NORMAL)
|
|
{
|
|
// Make sure laser is enabled
|
|
bool LaserEnabled;
|
|
Status = HAL_LP_IsEnabled(LaserEnabled);
|
|
if(!LaserEnabled)
|
|
Status = HAL_LP_Enable(true);
|
|
}
|
|
// Measure single point
|
|
// /*BOOL result = */FifoReadMeasurement(&g_HSIExt.m_OptimetMeasPt);
|
|
|
|
return Status;
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
HAL_STATUS HAL_LP_GetMeasureData(CHALMeasPoint &LPData)
|
|
{
|
|
HAL_STATUS Status = HAL_STATUS_NORMAL;
|
|
|
|
// Return probed point
|
|
// LPData.m_X = g_HSIExt.m_LaserMeasPoint.m_data[HAL_AXIS_X];
|
|
// LPData.m_Y = g_HSIExt.m_LaserMeasPoint.m_data[HAL_AXIS_Y];
|
|
// LPData.m_Z = g_HSIExt.m_LaserMeasPoint.m_data[HAL_AXIS_Z];
|
|
LPData.m_I = 0;
|
|
LPData.m_J = 0;
|
|
LPData.m_K = 1;
|
|
|
|
return Status;
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
HAL_STATUS HAL_LP_Shutdown()
|
|
{
|
|
HAL_STATUS Status = HAL_STATUS_NORMAL;
|
|
|
|
if(g_HSIExt.m_OptimetInit)
|
|
{
|
|
if(IsBoardPresent() && *g_pHSI->Ctrl[Ctrl_LaserProbe])
|
|
HAL_LP_Enable(false);
|
|
|
|
// FifoTerminate();
|
|
}
|
|
return Status;
|
|
}
|