Files
EF3-Interface/PcDmis/Base/Interfac/Msi/Hsi/MicroVu/HAL_LASERPROBE.CPP
T
2013-05-09 20:29:54 +08:00

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;
}