Files
EF3-Interface/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp
T
2013-05-09 20:29:54 +08:00

4213 lines
150 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.
#include "stdafx.h"
#include "SO7_Proto.h"
#include "math.h"
#define MY_CONFIG 1
#define MAX_DEVPATH_LENGTH 256
#define ENDPOINT_TIMEOUT 500
#define MAX_IN_BUFF_SIZE 1024
//***** Static Data *****
static char *outBuff = NULL;
struct_so7_ep_buff CSO7_Proto::ep_buff[lEPSIZE];
//================================================================
int CSO7_Proto::g_hEP8x_Thread_State=THREAD_PAUSED;
HANDLE CSO7_Proto::g_hEP8x_Thread_Id=NULL;
//================================================================
int CSO7_Proto::g_hEP02_Thread_State=THREAD_PAUSED;
HANDLE CSO7_Proto::g_hEP02_Thread_Id=NULL;
HANDLE CSO7_Proto::g_hEP02_Serial_Mutex;
//================================================================
struct_so7_machine CSO7_Proto::g_machine;
usb_dev_handle *CSO7_Proto::g_dev=NULL;
CLogger *CSO7_Proto::g_pLogger;
HANDLE CSO7_Proto::g_hHomedEvent = NULL;
CLogger* g_pLog=NULL;
//===========================================================================
// Worker Thread to serialize EP_S07_02 commands.
//===========================================================================
unsigned __stdcall CSO7_Proto::g_EP02_Thread(LPVOID pThis)
{
CSO7_Proto* _This = (CSO7_Proto*)pThis;
for (;;)
{
TRACE0("g_hEP02_Thread in loop set.\n");
if (g_hEP02_Thread_State == THREAD_EXIT)
ExitThread(0);
WaitForSingleObject(ep_buff[EP_02_CMD_IDX]._event,INFINITE);
TRACE0("g_hEP02_Thread obtained event.\n");
switch (g_hEP02_Thread_State)
{
case THREAD_EXIT:
{
ExitThread(0);
}
case THREAD_PAUSED:
break;
case THREAD_RUNNING_STATE1:
{
TRACE0("g_hEP02_Thread calling _send_usb_cmd. EP_S07_02; \n");
_This->_send_usb_cmd(EP_02_CMD_IDX);
TRACE0("g_hEP02_Thread return _send_usb_cmd. EP_S07_02; \n");
break;
}
case THREAD_RUNNING_STATE2:
{
TRACE0("g_hSerialUsbThread processing _write_usb_data_only();\n");
_This->_write_usb_data_only(EP_02_CMD_IDX);
TRACE0("g_hSerialUsbThread return from _write_usb_data_only();\n");
break;
}
default:
ExitThread(0);
}
};
g_hEP02_Thread_State = THREAD_EXIT;
ExitThread(0);
};
//******************************************************************************
// This is the worker thread to process USBD_TRANSFER_DIRECTION_IN
//******************************************************************************
unsigned __stdcall CSO7_Proto::g_EP8x_Thread(LPVOID pThis)
{
CSO7_Proto* _This = (CSO7_Proto*)pThis;
for (;;)
{
TRACE0("g_hEP8x_Thread_State in loop set.\n");
if (g_hEP8x_Thread_State == THREAD_EXIT)
ExitThread(0);
WaitForSingleObject(ep_buff[EP_82_DATA_IDX]._event, INFINITE);
TRACE0("g_hEP8x_Thread_State obtained event.\n");
switch (g_hEP8x_Thread_State)
{
case THREAD_EXIT:
{
ExitThread(0);
}
case THREAD_PAUSED:
break;
case THREAD_RUNNING_STATE1:
{
_This->_read_data_8x(EP_81_DATA_IDX);
break;
}
case THREAD_RUNNING_STATE2:
{
_This->_read_data_8x(EP_82_DATA_IDX);
break;
}
default:
ExitThread(0);
}
}
}
//******************************************************************************
// Parse the data received based on the index (which EP are we processing).
// The CCmdObj should only have one CMD_STATUS_PROCESSING.
// Update CCmdObj _ep_01_status and _ep_81_status.
// Update _status to CMD_STATUS_COMPLETE when both _ep_01_status and _ep_81_status
// are CMD_STATUS_COMPLETE.
//
//******************************************************************************
void CSO7_Proto::_process_rcv_transfer_data(int iEP)
{
switch (iEP)
{
case EP_01_CMD_IDX :
TRACE0("_process_rcv_transfer_data() : Update EP_01_CMD_IDX.\r\n");
break;
case EP_82_DATA_IDX : //
if (ep_buff[EP_02_CMD_IDX]._save_send_cmd == CT_MOTOR)
{
switch (ep_buff[EP_02_CMD_IDX]._save_send_cmd0)
{
case CT_MOVEX:
_process_SO7_CMD_MOVE_X();
break;
case CT_MOVEY:
_process_SO7_CMD_MOVE_Y();
break;
case CT_MOVEZ:
_process_SO7_CMD_MOVE_Z();
break;
case CT_MOVEV:
_process_SO7_CMD_MOVE_ZM();
break;
case CT_RESET:
_process_SO7_CMD_MOVE_RESET_XYZ();
break;
case CT_MOVETOX:
_process_SO7_CMD_MOVE_TO_POS_X();
break;
case CT_MOVETOY:
_process_SO7_CMD_MOVE_TO_POS_Y();
break;
case CT_MOVETOZ:
_process_SO7_CMD_MOVE_TO_POS_Z();
break;
case CT_MOVETOV:
_process_SO7_CMD_MOVE_TO_POS_ZM();
break;
case CT_MOVETOXYZ:
_process_SO7_CMD_MOVE_TO_POS_XYZ();
break;
case CT_SET_SPEEDX:
case CT_SET_SPEEDY:
case CT_SET_SPEEDZ:
_process_SO7_CMD_SET_SPEED_PARAMETER();
break;
case CT_READ_SPEEDX:
_process_SO7_CMD_READ_SPEED_PARAMETERX();
break;
case CT_READ_SPEEDY:
_process_SO7_CMD_READ_SPEED_PARAMETERY();
break;
case CT_READ_SPEEDZ:
_process_SO7_CMD_READ_SPEED_PARAMETERZ();
break;
case CT_SET_PRECISIONX:
case CT_SET_PRECISIONY:
case CT_SET_PRECISIONZ:
_process_SO7_CMD_SET_SPEED_PRECISION();
break;
case CT_READ_PRECISIONX:
_process_SO7_CMD_READ_SPEED_PRECISIONX();
break;
case CT_READ_PRECISIONY:
_process_SO7_CMD_READ_SPEED_PRECISIONY();
break;
case CT_READ_PRECISIONZ:
_process_SO7_CMD_READ_SPEED_PRECISIONZ();
break;
case CT_SET_MOTOR_CAL:
_process_SO7_CMD_SET_SPEED_MOTOR_WHEELBASE_PARAMETER();
break;
case CT_READ_MOTOR_CAL:
_process_SO7_CMD_READ_MOTOR_SPEED_WHEELBASE_PARAMETER();
break;
break;
case CT_TEST_STOP:
_process_SO7_CMD_READ_ZOOM_MOTION_STATUS();
break;
default:
TRACE1("_process_rcv_transfer_data() : Unknown ep_buff[EP_02_CMD_IDX]._save_send_cmd : %X \r\n", ep_buff[EP_02_CMD_IDX]._save_send_cmd);
TRACE1("_process_rcv_transfer_data() : Unknown ep_buff[EP_81_DATA_IDX]._buffer[0] : %X \r\n", ep_buff[EP_81_DATA_IDX]._buffer[0]);
break;
};
}
else if(ep_buff[EP_02_CMD_IDX]._save_send_cmd == CT_DATA)
{
switch (ep_buff[EP_02_CMD_IDX]._save_send_cmd0)
{
case CT_READ_AXISXYZ:
_process_SO7_CMD_READ_AXIS_XYZ();
break;
case CT_READ_PROBEXYZ:
_process_SO7_CMD_READ_PROBE_XYZ();
break;
case CT_READ_AXISV:
_process_SO7_CMD_READ_V_DATA();
break;
default:
TRACE1("_process_rcv_transfer_data() : Unknown ep_buff[EP_02_CMD_IDX]._save_send_cmd : %X \r\n", ep_buff[EP_02_CMD_IDX]._save_send_cmd);
TRACE1("_process_rcv_transfer_data() : Unknown ep_buff[EP_81_DATA_IDX]._buffer[0] : %X \r\n", ep_buff[EP_81_DATA_IDX]._buffer[0]);
break;
};
}
else if(ep_buff[EP_02_CMD_IDX]._save_send_cmd == CT_SCALE)
{
switch (ep_buff[EP_02_CMD_IDX]._save_send_cmd0)
{
case CT_GET_RESET_FLAG:
_process_SO7_CMD_GET_GET_RESET_FLAG();
break;
default:
TRACE1("_process_rcv_transfer_data() : Unknown ep_buff[EP_02_CMD_IDX]._save_send_cmd : %X \r\n", ep_buff[EP_02_CMD_IDX]._save_send_cmd);
TRACE1("_process_rcv_transfer_data() : Unknown ep_buff[EP_81_DATA_IDX]._buffer[0] : %X \r\n", ep_buff[EP_81_DATA_IDX]._buffer[0]);
break;
};
}
else if(ep_buff[EP_02_CMD_IDX]._save_send_cmd == CT_LIGHT)
{
switch (ep_buff[EP_02_CMD_IDX]._save_send_cmd0)
{
case CT_LIGHT1_SWITCH:
case CT_LIGHT2_SWITCH:
case CT_LIGHT3_SWITCH:
case CT_LIGHT4_SWITCH:
case CT_LIGHT1_SIZE:
case CT_LIGHT2_SIZE:
case CT_LIGHT3_SIZE:
case CT_LIGHT4_SIZE:
case CT_LIGHT_CMD:
_process_SO7_CMD_SET_LIGHT();
break;
default:
TRACE1("_process_rcv_transfer_data() : Unknown ep_buff[EP_02_CMD_IDX]._save_send_cmd : %X \r\n", ep_buff[EP_02_CMD_IDX]._save_send_cmd);
TRACE1("_process_rcv_transfer_data() : Unknown ep_buff[EP_81_DATA_IDX]._buffer[0] : %X \r\n", ep_buff[EP_81_DATA_IDX]._buffer[0]);
break;
};
}
TRACE0("_process_rcv_transfer_data() : Update EP_82_DATA_IDX status.\r\n");
break;
case EP_02_CMD_IDX :
TRACE0("_process_rcv_transfer_data() : Update EP_02_CMD_IDX.\r\n");
break;
case EP_81_DATA_IDX :
_process_SO7_CMD_READ_INTERRUPT_MESSAGE();
TRACE0("_process_rcv_transfer_data() : Update EP_81_DATA_IDX.\r\n");
break;
default:
break;
};
};
//===========================================================================
double CSO7_Proto::ScaleToMM(long lCount, double dResolution)
{
double dMM = 0.0;
dMM = (lCount* dResolution) /1000 ;
return dMM;
}
//===========================================================================
long CSO7_Proto::MMtoScale(double lDistanceMM, double dResolution)
{
long lCounts(0);
if (dResolution)
lCounts = static_cast<long> (lDistanceMM *1000 / dResolution);
else
ASSERT(0);
return lCounts;
}
//===========================================================================
void CSO7_Proto::Trace_EP_Buff(long lIndex)
{
UCHAR tmp[256];
CString csTmp;
memcpy(tmp, ep_buff[lIndex]._buffer, ep_buff[lIndex]._size);
csTmp = _T("Trace_EP_Buff _59 ");
for (int ii= 0 ; ii < ep_buff[lIndex]._size ; ++ii)
{
CString csTmpHex;
csTmpHex.Format(_T("%2X"), tmp[ii] );
csTmp += csTmpHex;
}
TRACE1("_process_SO7_CMD_GET_INDEX_4E() Trace_EP_Buff %s \n", csTmp);
}
//=====================================================================================
long CSO7_Proto::_4char2long(unsigned char *cBuff)
{
union
{
long l_value;
char c_array[5];
};
memset (c_array, 0, 5);
c_array[0] = cBuff[3];
c_array[1] = cBuff[2];
c_array[2] = cBuff[1];
c_array[3] = cBuff[0];
return(l_value);
}
//=====================================================================================
long CSO7_Proto::_3char2long(unsigned char *cBuff)
{
union
{
long l_value;
char c_array[5];
};
memset (c_array, 0, 5);
c_array[0] = cBuff[2];
c_array[1] = cBuff[1];
c_array[2] = cBuff[0];
return(l_value);
}
//========================================================================
void CSO7_Proto::_reverse_dword(DWORD *dWord)
{
BYTE cBuff[4];
BYTE *dwBuff = (BYTE *)dWord;
for ( int ii = 0 ; ii < 4 ; ++ii )
cBuff[ii]= dwBuff[ii];
dwBuff[0] = cBuff[3];
dwBuff[1] = cBuff[2];
dwBuff[2] = cBuff[1];
dwBuff[3] = cBuff[0];
}
//******************************************************************************
void CSO7_Proto::_scale2inch(unsigned long scale, double &inch)
{
UNREFERENCED_PARAMETER(scale);
UNREFERENCED_PARAMETER(inch);
}
//******************************************************************************
void CSO7_Proto::_inch2scale(unsigned long &scale, double inch)
{
UNREFERENCED_PARAMETER(scale);
UNREFERENCED_PARAMETER(inch);
}
//******************************************************************************
// convert a string of characters into its binary form
void CSO7_Proto::_char2bin(unsigned char *cBuff, BYTE *cBytes, int iLen)
{
memset(cBytes, 0, MAX_BUFF_SIZE);
for (int i=0;i<iLen;i++)
{
sscanf_s((const char *)(cBuff+i*2), "%2x", (cBytes+i));
};
return;
}
//******************************************************************************
void CSO7_Proto::_swap_byte(unsigned short &Val)
{
unsigned short MSB = Val<<8;
BYTE LSB = Val>>8;
Val = MSB|LSB;
}
//******************************************************************************
double CSO7_Proto::TimeInSecs(void)
{
double Secs;
LARGE_INTEGER HPCounterTicksPerSecond;
BOOL HasHPCounter = QueryPerformanceFrequency(&HPCounterTicksPerSecond);
if (HasHPCounter == TRUE)
{
// Use high resolution clock.
double HPCounterTicksPersec = (DWORD)((double) HPCounterTicksPerSecond.QuadPart);
LARGE_INTEGER HPTicks;
QueryPerformanceCounter(&HPTicks);
Secs = ((double)HPTicks.QuadPart / HPCounterTicksPersec);
}
else
{
// Use clock with less resolution.
Secs = GetTickCount();
Secs /= 1000.0;
}
return Secs;
}
//******************************************************************************
CSO7_Proto::CSO7_Proto()
{
ep_buff[EP_01_CMD_IDX]._ep = EP_S07_01;
ep_buff[EP_81_DATA_IDX]._ep = EP_S07_81;
ep_buff[EP_02_CMD_IDX]._ep = EP_S07_02;
ep_buff[EP_82_DATA_IDX]._ep = EP_S07_82;
for (int i=0;i<lEPSIZE;i++)
{
ep_buff[i]._size = 0;
ep_buff[i]._save_send_cmd = 99;
ep_buff[i]._async_context = NULL;
ep_buff[i]._buffer = (char *)malloc(MAX_BUFF_SIZE);
ep_buff[i]._hProtoPending = false;
ep_buff[i]._event = NULL;
};
g_machine.x._Move_Speed_Gear =3;
g_machine.y._Move_Speed_Gear =3;
g_machine.z._Move_Speed_Gear =3;
g_machine.zm._Move_Speed_Gear =2;
g_machine.x._pos_fixed._long_ =0;
g_machine.y._pos_fixed._long_ =0;
g_machine.z._pos_fixed._long_ =0;
g_machine.zm._pos_fixed._long_ =0;
g_machine.x._d_cur_pos_ = 0;
g_machine.y._d_cur_pos_ = 0;
g_machine.z._d_cur_pos_ = 0;
g_machine.zm._d_cur_pos_ = 0;
g_machine.ADC_Number=0;
g_machine.ADC_Value =0;
g_machine.Sys_Reset_Flag=0;
g_machine.cFixtureFlag=0;
g_machine.cVerNumber=3;
g_machine.s_lights_value._top_light=1;
g_machine.s_lights_value._bottom_light=1;
g_machine.s_lights_value._ring_light=1;
g_machine.s_lights_value._coaxial_light=1;
g_machine.s_lights_value._spare_light1=1;
g_machine.s_lights_value.segment[0]=0;
g_machine.s_lights_value.segment[1]=0;
g_machine.Light_Size=0;
g_machine.Light_Switch=0;
g_machine.s_machine_config.x_axis._scale_resolution=0.5;
g_machine.s_machine_config.y_axis._scale_resolution=0.5;
g_machine.s_machine_config.z_axis._scale_resolution=0.5;
g_machine.s_machine_config.x_axis._neg_working_limit=0;
g_machine.s_machine_config.x_axis._pos_working_limit=400;
g_machine.s_machine_config.y_axis._neg_working_limit=0;
g_machine.s_machine_config.y_axis._pos_working_limit=300;
g_machine.s_machine_config.z_axis._neg_working_limit=0;
g_machine.s_machine_config.z_axis._pos_working_limit=200;
g_machine.s_machine_config.zm_axis._ComPort=1;
g_machine.s_machine_config.zm_axis._StartDegree=0.0;
g_machine.s_machine_config.zm_axis._EndDegree=0.0;
g_machine.s_machine_config.zm_axis._RelativeZeroDegree=0.0;
g_machine.s_machine_config.zm_axis._Deadband=0.1;
g_machine.s_machine_config.zm_axis._ReadingInterval=60;
g_machine.s_machine_config.zm_axis._PulseScale=25.13473606496862;
g_machine.s_machine_config.zm_axis._SpeedFast=2000;
g_machine.s_machine_config.zm_axis._SpeedSlow=800;
g_machine.s_machine_config.zm_axis._speed._short_=0;
g_machine.s_machine_config.motion._EnCloseLoop=FALSE;
g_machine.s_machine_config.motion._RetryTimes=5;
g_machine.s_machine_config.motion._ShiftPositionX=0.0;
g_machine.s_machine_config.motion._ShiftPositionY=0.0;
g_machine.s_machine_config.motion._ShiftPositionZ=0.0;
g_machine.s_status._bIsZMMotionFinished=0;
g_machine.x._scale_pos._long_ = 0;
g_machine.y._scale_pos._long_ = 0;
g_machine.z._scale_pos._long_ = 0;
g_machine.zm._scale_pos._long_ = 0;
g_machine.x._d_cur_pos_ = 0;
g_machine.y._d_cur_pos_ = 0;
g_machine.z._d_cur_pos_ = 0;
g_machine.zm._d_cur_pos_= 0;
g_machine.x._dSet_Zero_Pos = 0.0;
g_machine.y._dSet_Zero_Pos = 0.0;
g_machine.z._dSet_Zero_Pos = 0.0;
g_machine.zm._dSet_Zero_Pos = 0.0;
g_machine.x._lSet_Zero_Pos = 0;
g_machine.y._lSet_Zero_Pos = 0;
g_machine.z._lSet_Zero_Pos = 0;
g_machine.zm._lSet_Zero_Pos = 0;
g_machine.s_machine_config._dXYZSpeed=50;
g_machine.InterruptFlag[0]=0;
g_machine.InterruptFlag[1]=0;
so7_motion_reset_controller_parameter();
m_bHomingActive = false;
g_pLogger = new CLogger(_T("\\UtilityDebug.Log"));
g_pLogger->Send(_T("Construct Cso7_Proto.\r\n"));
};
//******************************************************************************
CSO7_Proto::~CSO7_Proto()
{
for (int i=0;i<lEPSIZE;i++)
{
free(ep_buff[i]._buffer);
};
if (g_pLogger)
g_pLogger->Send(_T("Destruct Cso7_Proto.\r\n"));
delete g_pLogger;
g_pLogger = NULL;
}
#pragma warning(disable:4996)
//==============================================================================
//******************************************************************************
SSI_STATUS_MOTION CSO7_Proto::so7_motion_reset_controller_parameter()
{
for(int i=0;i<5;i++)
{
g_machine.s_machine_config.x_axis._speed_base[i]=0;
g_machine.s_machine_config.x_axis._speed_max[i]=0;
g_machine.s_machine_config.x_axis._speed_start[i]=0;
g_machine.s_machine_config.x_axis._speed_fresh[i]=0;
g_machine.s_machine_config.x_axis._speed_slow_dis[i]=0;
g_machine.s_machine_config.y_axis._speed_base[i]=0;
g_machine.s_machine_config.y_axis._speed_max[i]=0;
g_machine.s_machine_config.y_axis._speed_start[i]=0;
g_machine.s_machine_config.y_axis._speed_fresh[i]=0;
g_machine.s_machine_config.y_axis._speed_slow_dis[i]=0;
g_machine.s_machine_config.z_axis._speed_base[i]=0;
g_machine.s_machine_config.z_axis._speed_max[i]=0;
g_machine.s_machine_config.z_axis._speed_start[i]=0;
g_machine.s_machine_config.z_axis._speed_fresh[i]=0;
g_machine.s_machine_config.z_axis._speed_slow_dis[i]=0;
}
g_machine.s_machine_config.x_axis._motor_wheelbase=0;
g_machine.s_machine_config.y_axis._motor_wheelbase=0;
g_machine.s_machine_config.z_axis._motor_wheelbase=0;
g_machine._motor_pulse_num=10000;
g_machine.s_machine_config.x_axis._motor_precision=0;
g_machine.s_machine_config.y_axis._motor_precision=0;
g_machine.s_machine_config.z_axis._motor_precision=0;
return SSI_STATUS_MOTION_NORMAL;
}
//=========================================================================================
SSI_STATUS_MOTION CSO7_Proto::Save_SevenOcean_Inifile(CString path_and_fileName)
{
FILE* m_pOutFile;
char *outBuff = NULL;
char tmp;
_wfopen_s(&m_pOutFile, path_and_fileName, _T("wt"));
if (!m_pOutFile)
{
free(outBuff);
}
else
{
outBuff="[HARDWARE]";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_BASE_X1=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.x_axis._speed_base[0]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_MAX_X1=";
fprintf(m_pOutFile,"%s", outBuff);
tmp= g_machine.s_machine_config.x_axis._speed_max[0];
fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.x_axis._speed_max[0]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_START_X1=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.x_axis._speed_start[0]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_FRESH_X1=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.x_axis._speed_fresh[0]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_SLOW_X1=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.x_axis._speed_slow_dis[0]);
fprintf(m_pOutFile, "\n");
fprintf(m_pOutFile,"%s", ";\n");
outBuff="SPEED_BASE_X2=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.x_axis._speed_base[1]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_MAX_X2=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", g_machine.s_machine_config.x_axis._speed_max[1]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_START_X2=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.x_axis._speed_start[1]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_FRESH_X2=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.x_axis._speed_fresh[1]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_SLOW_X2=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.x_axis._speed_slow_dis[1]);
fprintf(m_pOutFile, "\n");
fprintf(m_pOutFile,"%s", ";\n");
outBuff="SPEED_BASE_X3=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d",(byte) g_machine.s_machine_config.x_axis._speed_base[2]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_MAX_X3=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.x_axis._speed_max[2]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_START_X3=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.x_axis._speed_start[2]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_FRESH_X3=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.x_axis._speed_fresh[2]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_SLOW_X3=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.x_axis._speed_slow_dis[2]);
fprintf(m_pOutFile, "\n");
fprintf(m_pOutFile,"%s", ";\n");
outBuff="SPEED_BASE_X4=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.x_axis._speed_base[3]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_MAX_X4=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.x_axis._speed_max[3]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_START_X4=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.x_axis._speed_start[3]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_FRESH_X4=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.x_axis._speed_fresh[3]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_SLOW_X4=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.x_axis._speed_slow_dis[3]);
fprintf(m_pOutFile, "\n");
fprintf(m_pOutFile,"%s", ";\n");
outBuff="SPEED_BASE_X5=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.x_axis._speed_base[4]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_MAX_X5=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.x_axis._speed_max[4]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_START_X5=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.x_axis._speed_start[4]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_FRESH_X5=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.x_axis._speed_fresh[4]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_SLOW_X5=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.x_axis._speed_slow_dis[4]);
fprintf(m_pOutFile, "\n");
fprintf(m_pOutFile,"%s", ";\n");
outBuff="SPEED_BASE_Y1=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.y_axis._speed_base[0]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_MAX_Y1=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.y_axis._speed_max[0]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_START_Y1=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.y_axis._speed_start[0]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_FRESH_Y1=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.y_axis._speed_fresh[0]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_SLOW_Y1=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.y_axis._speed_slow_dis[0]);
fprintf(m_pOutFile, "\n");
fprintf(m_pOutFile,"%s", ";\n");
outBuff="SPEED_BASE_Y2=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.y_axis._speed_base[1]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_MAX_Y2=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.y_axis._speed_max[1]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_START_Y2=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.y_axis._speed_start[1]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_FRESH_Y2=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.y_axis._speed_fresh[1]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_SLOW_Y2=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.y_axis._speed_slow_dis[1]);
fprintf(m_pOutFile, "\n");
fprintf(m_pOutFile,"%s", ";\n");
outBuff="SPEED_BASE_Y3=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.y_axis._speed_base[2]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_MAX_Y3=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.y_axis._speed_max[2]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_START_Y3=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.y_axis._speed_start[2]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_FRESH_Y3=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.y_axis._speed_fresh[2]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_SLOW_Y3=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.y_axis._speed_slow_dis[2]);
fprintf(m_pOutFile, "\n");
fprintf(m_pOutFile,"%s", ";\n");
outBuff="SPEED_BASE_Y4=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.y_axis._speed_base[3]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_MAX_Y4=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.y_axis._speed_max[3]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_START_Y4=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.y_axis._speed_start[3]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_FRESH_Y4=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.y_axis._speed_fresh[3]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_SLOW_Y4=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.y_axis._speed_slow_dis[3]);
fprintf(m_pOutFile, "\n");
fprintf(m_pOutFile,"%s", ";\n");
outBuff="SPEED_BASE_Y5=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.y_axis._speed_base[4]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_MAX_Y5=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", g_machine.s_machine_config.y_axis._speed_max[4]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_START_Y5=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.y_axis._speed_start[4]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_FRESH_Y5=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.y_axis._speed_fresh[4]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_SLOW_Y5=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.y_axis._speed_slow_dis[4]);
fprintf(m_pOutFile, "\n");
fprintf(m_pOutFile,"%s", ";\n");
outBuff="SPEED_BASE_Z1=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.z_axis._speed_base[0]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_MAX_Z1=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.z_axis._speed_max[0]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_START_Z1=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.z_axis._speed_start[0]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_FRESH_Z1=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.z_axis._speed_fresh[0]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_SLOW_Z1=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.z_axis._speed_slow_dis[0]);
fprintf(m_pOutFile, "\n");
fprintf(m_pOutFile,"%s", ";\n");
outBuff="SPEED_BASE_Z2=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.z_axis._speed_base[1]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_MAX_Z2=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.z_axis._speed_max[1]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_START_Z2=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.z_axis._speed_start[1]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_FRESH_Z2=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.z_axis._speed_fresh[1]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_SLOW_Z2=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.z_axis._speed_slow_dis[1]);
fprintf(m_pOutFile, "\n");
fprintf(m_pOutFile,"%s", ";\n");
outBuff="SPEED_BASE_Z3=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.z_axis._speed_base[2]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_MAX_Z3=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.z_axis._speed_max[2]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_START_Z3=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.z_axis._speed_start[2]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_FRESH_Z3=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.z_axis._speed_fresh[2]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_SLOW_Z3=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.z_axis._speed_slow_dis[2]);
fprintf(m_pOutFile, "\n");
fprintf(m_pOutFile,"%s", ";\n");
outBuff="SPEED_BASE_Z4=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.z_axis._speed_base[3]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_MAX_Z4=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.z_axis._speed_max[3]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_START_Z4=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.z_axis._speed_start[3]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_FRESH_Z4=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.z_axis._speed_fresh[3]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_SLOW_Z4=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.z_axis._speed_slow_dis[3]);
fprintf(m_pOutFile, "\n");
fprintf(m_pOutFile,"%s", ";\n");
outBuff="SPEED_BASE_Z5=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.z_axis._speed_base[4]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_MAX_Z5=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.z_axis._speed_max[4]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_START_Z5=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.z_axis._speed_start[4]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_FRESH_Z5=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.z_axis._speed_fresh[4]);
fprintf(m_pOutFile, "\n");
outBuff="SPEED_SLOW_Z5=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.z_axis._speed_slow_dis[4]);
fprintf(m_pOutFile, "\n");
fprintf(m_pOutFile,"%s", ";\n");
outBuff="X_MOTOR_PRECISION=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.x_axis._motor_precision);
fprintf(m_pOutFile, "\n");
outBuff="Y_MOTOR_PRECISION=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.y_axis._motor_precision);
fprintf(m_pOutFile, "\n");
outBuff="Z_MOTOR_PRECISION=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.z_axis._motor_precision);
fprintf(m_pOutFile, "\n");
fprintf(m_pOutFile,"%s", ";\n");
outBuff="X_MOTOR_WHEELBASE=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.x_axis._motor_wheelbase);
fprintf(m_pOutFile, "\n");
outBuff="Y_MOTOR_WHEELBASE=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.y_axis._motor_wheelbase);
fprintf(m_pOutFile, "\n");
outBuff="Z_MOTOR_WHEELBASE=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.z_axis._motor_wheelbase);
fprintf(m_pOutFile, "\n");
fprintf(m_pOutFile,"%s", ";\n");
outBuff="MOTOR_PULSE_NUM=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d",g_machine._motor_pulse_num);
fprintf(m_pOutFile, "\n");
fprintf(m_pOutFile,"%s", ";\n");
//===========worktable=====================
outBuff="[WORKTABLE]";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile, "\n");
outBuff="X_SCALE_RESOLUTION=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%.3f", g_machine.s_machine_config.x_axis._scale_resolution);
fprintf(m_pOutFile, "\n");
outBuff="Y_SCALE_RESOLUTION=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%.3f", g_machine.s_machine_config.y_axis._scale_resolution);
fprintf(m_pOutFile, "\n");
outBuff="Z_SCALE_RESOLUTION=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%.3f", g_machine.s_machine_config.z_axis._scale_resolution);
fprintf(m_pOutFile, "\n");
fprintf(m_pOutFile,"%s", ";\n");
outBuff="X_NEG_WORKING_LIMIT=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%.3f", g_machine.s_machine_config.x_axis._neg_working_limit);
fprintf(m_pOutFile, "\n");
outBuff="Y_NEG_WORKING_LIMIT=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%.3f", g_machine.s_machine_config.y_axis._neg_working_limit);
fprintf(m_pOutFile, "\n");
outBuff="Z_NEG_WORKING_LIMIT=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%.3f", g_machine.s_machine_config.z_axis._neg_working_limit);
fprintf(m_pOutFile, "\n");
fprintf(m_pOutFile,"%s", ";\n");
outBuff="X_POS_WORKING_LIMIT=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%.3f", g_machine.s_machine_config.x_axis._pos_working_limit);
fprintf(m_pOutFile, "\n");
outBuff="Y_POS_WORKING_LIMIT=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%.3f", g_machine.s_machine_config.y_axis._pos_working_limit);
fprintf(m_pOutFile, "\n");
outBuff="Z_POS_WORKING_LIMIT=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%.3f", g_machine.s_machine_config.z_axis._pos_working_limit);
fprintf(m_pOutFile, "\n");
fprintf(m_pOutFile,"%s", ";\n");
fclose(m_pOutFile);
}
return SSI_STATUS_MOTION_NORMAL;
}
//******************************************************************************
//log file shows the machine speed data
SSI_STATUS_MOTION CSO7_Proto::Load_SevenOcean_Inifile(CString cso7IniFile)
{
FILE *hConfigFile = NULL;
char szLine[MAX_BUFF_SIZE];
char *token = NULL;
char seps[] = " =,\t\n";
char cTemp[20]={0};
CString csSO7ConfigFile =cso7IniFile;//csAppPath+_T("\\so7_config.ini");
_wfopen_s(&hConfigFile,csSO7ConfigFile,_T("rt"));
if(hConfigFile)
{
while (!feof(hConfigFile))
{
fgets(szLine,MAX_BUFF_SIZE,hConfigFile);//read a line
if((szLine[0]!=';')&&(strlen(szLine)>2))
{
token = strtok(szLine,seps);
// X1
if(!_stricmp(token,"SPEED_BASE_X1"))//SPEED_BASE_X1
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.x_axis._speed_base[0]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_FRESH_X1"))//SPEED_FRESH_X1
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.x_axis._speed_fresh[0]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_START_X1"))//SPEED_START_X1
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.x_axis._speed_start[0]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_MAX_X1"))//SPEED_MAX_X1
{
token = strtok( NULL, seps);
// temp=token;
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.x_axis._speed_max[0]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_SLOW_X1"))//SPEED_SLOW_X1
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.x_axis._speed_slow_dis[0]=atof(cTemp);
}
}
// X2
else if(!_stricmp(token,"SPEED_BASE_X2"))//SPEED_BASE_X2
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.x_axis._speed_base[1]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_FRESH_X2"))//SPEED_FRESH_X2
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.x_axis._speed_fresh[1]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_START_X2"))//SPEED_START_X2
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.x_axis._speed_start[1]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_MAX_X2"))//SPEED_MAX_X2
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.x_axis._speed_max[1]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_SLOW_X2"))//SPEED_SLOW_X2
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.x_axis._speed_slow_dis[1]=atof(cTemp);
}
}
//X3
else if(!_stricmp(token,"SPEED_BASE_X3"))//SPEED_BASE_X3
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.x_axis._speed_base[2]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_FRESH_X3"))//SPEED_FRESH_X3
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.x_axis._speed_fresh[2]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_START_X3"))//SPEED_START_X3
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.x_axis._speed_start[2]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_MAX_X3"))//SPEED_MAX_X3
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.x_axis._speed_max[2]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_SLOW_X3"))//SPEED_SLOW_X3
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.x_axis._speed_slow_dis[2]=atof(cTemp);
}
}
// X4
else if(!_stricmp(token,"SPEED_BASE_X4"))//SPEED_BASE_X4
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.x_axis._speed_base[3]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_FRESH_X4"))//SPEED_FRESH_X4
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.x_axis._speed_fresh[3]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_START_X4"))//SPEED_START_X4
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.x_axis._speed_start[3]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_MAX_X4"))//SPEED_MAX_X4
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.x_axis._speed_max[3]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_SLOW_X4"))//SPEED_SLOW_X4
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.x_axis._speed_slow_dis[3]=atof(cTemp);
}
}
//X5
else if(!_stricmp(token,"SPEED_BASE_X5"))//SPEED_BASE_X5
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.x_axis._speed_base[4]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_FRESH_X5"))//SPEED_FRESH_X5
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.x_axis._speed_fresh[4]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_START_X5"))//SPEED_START_X5
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.x_axis._speed_start[4]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_MAX_X5"))//SPEED_MAX_X5
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.x_axis._speed_max[4]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_SLOW_X5"))//SPEED_SLOW_X5
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.x_axis._speed_slow_dis[4]=atof(cTemp);
}
}
// Y_axis
else if(!_stricmp(token,"SPEED_BASE_Y1"))//SPEED_BASE_Y1
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.y_axis._speed_base[0]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_FRESH_Y1"))//SPEED_FRESH_Y1
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.y_axis._speed_fresh[0]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_START_Y1"))//SPEED_START_Y1
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.y_axis._speed_start[0]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_MAX_Y1"))//SPEED_MAX_Y1
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.y_axis._speed_max[0]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_SLOW_Y1"))//SPEED_SLOW_Y1
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.y_axis._speed_slow_dis[0]=atof(cTemp);
}
}
//Y2
else if(!_stricmp(token,"SPEED_BASE_Y2"))//SPEED_BASE_Y2
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.y_axis._speed_base[1]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_FRESH_Y2"))//SPEED_FRESH_Y2
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.y_axis._speed_fresh[1]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_START_Y2"))//SPEED_START_Y2
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.y_axis._speed_start[1]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_MAX_Y2"))//SPEED_MAX_Y2
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.y_axis._speed_max[1]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_SLOW_Y2"))//SPEED_SLOW_Y2
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.y_axis._speed_slow_dis[1]=atof(cTemp);
}
}
//Y3
else if(!_stricmp(token,"SPEED_BASE_Y3"))//SPEED_BASE_Y3
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.y_axis._speed_base[2]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_FRESH_Y3"))//SPEED_FRESH_Y3
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.y_axis._speed_fresh[2]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_START_Y3"))//SPEED_START_Y3
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.y_axis._speed_start[2]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_MAX_Y3"))//SPEED_MAX_Y3
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.y_axis._speed_max[2]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_SLOW_Y3"))//SPEED_SLOW_Y3
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.y_axis._speed_slow_dis[2]=atof(cTemp);
}
}
// Y4
else if(!_stricmp(token,"SPEED_BASE_Y4"))//SPEED_BASE_Y4
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.y_axis._speed_base[3]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_FRESH_Y4"))//SPEED_FRESH_Y4
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.y_axis._speed_fresh[3]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_START_Y4"))//SPEED_START_Y4
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.y_axis._speed_start[3]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_MAX_Y4"))//SPEED_MAX_Y4
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.y_axis._speed_max[3]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_SLOW_Y4"))//SPEED_SLOW_Y4
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.y_axis._speed_slow_dis[3]=atof(cTemp);
}
}
//Y5
else if(!_stricmp(token,"SPEED_BASE_Y5"))//SPEED_BASE_Y5
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.y_axis._speed_base[4]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_FRESH_Y5"))//SPEED_FRESH_Y5
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.y_axis._speed_fresh[4]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_START_Y5"))//SPEED_START_Y5
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.y_axis._speed_start[4]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_MAX_Y5"))//SPEED_MAX_Y5
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.y_axis._speed_max[4]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_SLOW_Y5"))//SPEED_SLOW_Y5
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.y_axis._speed_slow_dis[4]=atof(cTemp);
}
}
// Z_axis
else if(!_stricmp(token,"SPEED_BASE_Z1"))//SPEED_BASE_Z1
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.z_axis._speed_base[0]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_FRESH_Z1"))//SPEED_FRESH_Z1
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.z_axis._speed_fresh[0]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_START_Z1"))//SPEED_START_Z1
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.z_axis._speed_start[0]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_MAX_Z1"))//SPEED_MAX_Z1
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.z_axis._speed_max[0]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_SLOW_Z1"))//SPEED_SLOW_Z1
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.z_axis._speed_slow_dis[0]=atof(cTemp);
}
}
//Z2
else if(!_stricmp(token,"SPEED_BASE_Z2"))//SPEED_BASE_Z2
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.z_axis._speed_base[1]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_FRESH_Z2"))//SPEED_FRESH_Z2
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.z_axis._speed_fresh[1]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_START_Z2"))//SPEED_START_Z2
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.z_axis._speed_start[1]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_MAX_Z2"))//SPEED_MAX_Z2
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.z_axis._speed_max[1]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_SLOW_Z2"))//SPEED_SLOW_Z2
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.z_axis._speed_slow_dis[1]=atof(cTemp);
}
}
//Z3
else if(!_stricmp(token,"SPEED_BASE_Z3"))//SPEED_BASE_Z3
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.z_axis._speed_base[2]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_FRESH_Z3"))//SPEED_FRESH_Z3
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.z_axis._speed_fresh[2]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_START_Z3"))//SPEED_START_Z3
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.z_axis._speed_start[2]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_MAX_Z3"))//SPEED_MAX_Z3
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.z_axis._speed_max[2]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_SLOW_Z3"))//SPEED_SLOW_Z3
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.z_axis._speed_slow_dis[2]=atof(cTemp);
}
}
// Z4
else if(!_stricmp(token,"SPEED_BASE_Z4"))//SPEED_BASE_Z4
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.z_axis._speed_base[3]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_FRESH_Z4"))//SPEED_FRESH_Z4
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.z_axis._speed_fresh[3]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_START_Z4"))//SPEED_START_Z4
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.z_axis._speed_start[3]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_MAX_Z4"))//SPEED_MAX_Z4
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.z_axis._speed_max[3]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_SLOW_Z4"))//SPEED_SLOW_Z4
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.z_axis._speed_slow_dis[3]=atof(cTemp);
}
}
//Z5
else if(!_stricmp(token,"SPEED_BASE_Z5"))//SPEED_BASE_Z5
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.z_axis._speed_base[4]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_FRESH_Z5"))//SPEED_FRESH_Z5
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.z_axis._speed_fresh[4]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_START_Z5"))//SPEED_START_Z5
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.z_axis._speed_start[4]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_MAX_Z5"))//SPEED_MAX_Z5
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.z_axis._speed_max[4]=static_cast<char>(atoi(cTemp));
}
}
else if(!_stricmp(token, "SPEED_SLOW_Z5"))//SPEED_SLOW_Z5
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.z_axis._speed_slow_dis[4]=atof(cTemp);
}
}
//XZY_MOTOR_PRECISION
else if(!_stricmp(token, "X_MOTOR_PRECISION"))//SET MOTOR PRECISION
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.x_axis._motor_precision=atof(cTemp);
}
}
else if(!_stricmp(token, "Y_MOTOR_PRECISION"))
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.y_axis._motor_precision=atof(cTemp);
}
}
else if(!_stricmp(token, "Z_MOTOR_PRECISION"))
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.z_axis._motor_precision=atof(cTemp);
}
}
else if(!_stricmp(token, "X_MOTOR_WHEELBASE"))//SET MOTOR WHEELBASE
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.x_axis._motor_wheelbase=atof(cTemp);
}
}
else if(!_stricmp(token, "Y_MOTOR_WHEELBASE"))
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.y_axis._motor_wheelbase=atof(cTemp);
}
}
else if(!_stricmp(token, "Z_MOTOR_WHEELBASE"))
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.z_axis._motor_wheelbase=atof(cTemp);
}
}
else if(!_stricmp(token, "MOTOR_PULSE_NUM"))
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine._motor_pulse_num=atoi(cTemp);
}
}
//=====================[WORKTABLE]========================
else if(!_stricmp(token, "X_SCALE_RESOLUTION"))
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.x_axis._scale_resolution=atof(cTemp);
}
}
else if(!_stricmp(token, "Y_SCALE_RESOLUTION"))
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.y_axis._scale_resolution=atof(cTemp);
}
}
else if(!_stricmp(token, "Z_SCALE_RESOLUTION"))
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.z_axis._scale_resolution=atof(cTemp);
}
}
else if(!_stricmp(token, "X_NEG_WORKING_LIMIT"))
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.x_axis._neg_working_limit=atof(cTemp);
}
}
else if(!_stricmp(token, "Y_NEG_WORKING_LIMIT"))
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.y_axis._neg_working_limit=atof(cTemp);
}
}
else if(!_stricmp(token, "Z_NEG_WORKING_LIMIT"))
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.z_axis._neg_working_limit=atof(cTemp);
}
}
else if(!_stricmp(token, "X_POS_WORKING_LIMIT"))
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.x_axis._pos_working_limit=atof(cTemp);
}
}
else if(!_stricmp(token, "Y_POS_WORKING_LIMIT"))
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.y_axis._pos_working_limit=atof(cTemp);
}
}
else if(!_stricmp(token, "Z_POS_WORKING_LIMIT"))
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.z_axis._pos_working_limit=atof(cTemp);
}
}
}
}
fclose(hConfigFile);
}
return SSI_STATUS_MOTION_NORMAL;
}
//=========================================================================================
SSI_STATUS_MOTION CSO7_Proto::Save_So7_Config()
{
FILE* m_pOutFile;
char *outBuff = NULL;
CString csAppPath;
GetAppPath(csAppPath);
CString cFileName=csAppPath+_T("\\so7_config.ini");
_wfopen_s(&m_pOutFile, cFileName, _T("wt"));
if (!m_pOutFile)
{
free(outBuff);
}
else
{
outBuff="[7OCEANAUTOZOOM]";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile, "\n");
outBuff="ZOOM_PRODUCT_ID=";
fprintf(m_pOutFile,"%s", outBuff);
USES_CONVERSION;
outBuff=T2A(g_machine.s_machine_config.zm_axis._ProductID);
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile, "\n");
outBuff="ZOOM_COM_PORT=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", g_machine.s_machine_config.zm_axis._ComPort);
fprintf(m_pOutFile, "\n");
outBuff="ZOOM_START_DEG=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%.6f", g_machine.s_machine_config.zm_axis._StartDegree);
fprintf(m_pOutFile, "\n");
outBuff="ZOOM_END_DEG=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%.6f", g_machine.s_machine_config.zm_axis._EndDegree);
fprintf(m_pOutFile, "\n");
outBuff="ZOOM_ORG_DEG=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%.6f", g_machine.s_machine_config.zm_axis._RelativeZeroDegree);
fprintf(m_pOutFile, "\n");
outBuff="ZOOM_DEADBAND_DEG=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%.6f", g_machine.s_machine_config.zm_axis._Deadband);
fprintf(m_pOutFile, "\n");
outBuff="ZOOM_PULSE_PER_DEG=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%.15f", g_machine.s_machine_config.zm_axis._PulseScale);
fprintf(m_pOutFile, "\n");
outBuff="ZOOM_READING_INTERVAL_TIME=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", g_machine.s_machine_config.zm_axis._ReadingInterval);
fprintf(m_pOutFile, "\n");
outBuff="ZOOM_MOTOR_SPEED_FAST=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", g_machine.s_machine_config.zm_axis._SpeedFast);
fprintf(m_pOutFile, "\n");
outBuff="ZOOM_MOTOR_SPEED_SLOW=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", g_machine.s_machine_config.zm_axis._SpeedSlow);
fprintf(m_pOutFile, "\n;\n");
outBuff="[HARDWARE]";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile, "\n");
outBuff="CLOSE_LOOP_ENABLED=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", g_machine.s_machine_config.motion._EnCloseLoop);
fprintf(m_pOutFile, "\n");
outBuff="RETRY_TIMES=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", g_machine.s_machine_config.motion._RetryTimes);
fprintf(m_pOutFile, "\n");
outBuff="SHIFT_POSITION_X=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", g_machine.s_machine_config.motion._ShiftPositionX);
fprintf(m_pOutFile, "\n");
outBuff="SHIFT_POSITION_Y=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", g_machine.s_machine_config.motion._ShiftPositionY);
fprintf(m_pOutFile, "\n");
outBuff="SHIFT_POSITION_Z=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", g_machine.s_machine_config.motion._ShiftPositionZ);
fprintf(m_pOutFile, "\n");
fclose(m_pOutFile);
}
return SSI_STATUS_MOTION_NORMAL;
}
//******************************************************************************
SSI_STATUS_MOTION CSO7_Proto::Load_So7_Config()
{
FILE *hConfigFile = NULL;
char szLine[MAX_BUFF_SIZE];
char *token = NULL;
char seps[] = " =,\t\n";
char cTemp[30]={0};
CString csAppPath;
GetAppPath(csAppPath);
CString csSO7ConfigFile =csAppPath+_T("\\so7_config.ini");
_wfopen_s(&hConfigFile,csSO7ConfigFile,_T("rt"));
if(hConfigFile)
{
while (!feof(hConfigFile))
{
fgets(szLine,MAX_BUFF_SIZE,hConfigFile);//read a line
if((szLine[0]!=';')&&(strlen(szLine)>2))
{
token = strtok(szLine,seps);
//==============7OceanAutozoom==============================
if(!_stricmp(token,"ZOOM_PRODUCT_ID"))
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.zm_axis._ProductID=cTemp;
}
}
else if(!_stricmp(token,"ZOOM_COM_PORT"))
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.zm_axis._ComPort=atoi(cTemp);
}
}
else if(!_stricmp(token,"ZOOM_START_DEG"))
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.zm_axis._StartDegree=atof(cTemp);
}
}
else if (!_stricmp(token,"ZOOM_END_DEG"))
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.zm_axis._EndDegree=atof(cTemp);
}
}
else if (!_stricmp(token,"ZOOM_ORG_DEG"))
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.zm_axis._RelativeZeroDegree=atof(cTemp);
}
}
else if (!_stricmp(token,"ZOOM_DEADBAND_DEG"))
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.zm_axis._Deadband=atof(cTemp);
}
}
else if (!_stricmp(token,"ZOOM_PULSE_PER_DEG"))
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.zm_axis._PulseScale=atof(cTemp);
}
}
else if (!_stricmp(token,"ZOOM_READING_INTERVAL_TIME"))
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.zm_axis._ReadingInterval=atoi(cTemp);
}
}
else if (!_stricmp(token,"ZOOM_MOTOR_SPEED_FAST"))
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.zm_axis._SpeedFast=static_cast<short>(atoi(cTemp));
}
}
else if (!_stricmp(token,"ZOOM_MOTOR_SPEED_SLOW"))
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.zm_axis._SpeedSlow=static_cast<short>(atoi(cTemp));
}
}
//==============Motion=====================
else if(!_stricmp(token,"CLOSE_LOOP_ENABLED"))
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.motion._EnCloseLoop=atoi(cTemp);
}
}
else if (!_stricmp(token,"RETRY_TIMES"))
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.motion._RetryTimes=atoi(cTemp);
}
}
else if (!_stricmp(token,"SHIFT_POSITION_X"))
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.motion._ShiftPositionX=atof(cTemp);
}
}
else if (!_stricmp(token,"SHIFT_POSITION_Y"))
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.motion._ShiftPositionY=atof(cTemp);
}
}
else if (!_stricmp(token,"SHIFT_POSITION_Z"))
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.motion._ShiftPositionZ=atof(cTemp);
}
}
}
}
fclose(hConfigFile);
}
return SSI_STATUS_MOTION_NORMAL;
}
//******************************************************************************
SSI_STATUS_MOTION CSO7_Proto::GetAppPath(CString &Path)
{
Path=_T(""); // Speed optimization - noticed slow in GlowCode
if (Path.IsEmpty())
{
CString tmpPath;
GetModuleFileName(NULL,tmpPath.GetBuffer(255),255);
tmpPath.ReleaseBuffer();
tmpPath.TrimRight();
int nLastSlash = tmpPath.ReverseFind('\\');
if (nLastSlash >= 0)
tmpPath = tmpPath.Left(nLastSlash);
else
tmpPath.Empty();
Path=tmpPath;
}
return SSI_STATUS_MOTION_NORMAL;
};
//******************************************************************************
SSI_STATUS_MOTION CSO7_Proto::ExtractAppPath(CString &Path)
{
CString tmpPath = Path;
tmpPath.TrimRight();
tmpPath.TrimLeft();
int nLastSlash = tmpPath.ReverseFind('\\');
if (nLastSlash > -1)
{ // complete path
tmpPath = Path.Left(nLastSlash);
Path = tmpPath;
}
else
{ // not a complete path
Path="";
};
return SSI_STATUS_MOTION_NORMAL;
};
//******************************************************************************
// Replay the capture file.
//******************************************************************************
SSI_STATUS_MOTION CSO7_Proto::_replay_capture(CString s_replay_file)
{
char *_0x4e00_cmd = "4e00";
FILE* pInFile;
_wfopen_s(&pInFile, s_replay_file, _T("r"));
if (pInFile == NULL)
return SSI_STATUS_MOTION_REPLAY_FILE_ERROR;
char *cData = (char *)malloc(MAX_BUFF_SIZE);
char *inBuff = (char *)malloc(MAX_BUFF_SIZE);
fgets((char *)inBuff, MAX_BUFF_SIZE, pInFile ); // pick up the first line
while (!feof(pInFile))
{
if (*inBuff == '>')
{
if (strstr(inBuff, "0x00000001"))
{
if (!(_strnicmp(inBuff+35, _0x4e00_cmd, 4))) break;
_process_replay_capture_commands(inBuff, pInFile);
}
};
fgets((char *)inBuff, MAX_BUFF_SIZE, pInFile ); // pick up the first line
};
fclose(pInFile);
free(cData);
free(inBuff);
return SSI_STATUS_MOTION_NORMAL;
}
//******************************************************************************
// Do not send out DCC Home. We can send everything else.
//******************************************************************************
SSI_STATUS_MOTION CSO7_Proto::_process_replay_capture_commands(char *inBuff, FILE* pInFile)
{
char x[3];
char cSize[9];
int iSendSize;
int iRcvSize;
if ( ((*(inBuff+35) == '4')) && (*(inBuff+36) == 'f'))
{
fgets((char *)inBuff, MAX_BUFF_SIZE, pInFile ); // pick up the first line
return SSI_STATUS_MOTION_NORMAL;
};
memset(cSize, 0 , 9);
memcpy(cSize, inBuff+24, 8);
sscanf_s(cSize, "%8x", &iSendSize); // get the length of the transmission
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0, MAX_BUFF_SIZE);
for (int j=0;j<iSendSize;j++)
{
memset(x, 0, 3);
memcpy(x, inBuff+35+(j*2), 2);
sscanf_s(x, "%2x", ep_buff[EP_02_CMD_IDX]._buffer+j);
};
ep_buff[EP_02_CMD_IDX]._size = iSendSize;
fgets((char *)inBuff, MAX_BUFF_SIZE, pInFile ); // pick up the first line
if (feof(pInFile)) SSI_STATUS_MOTION_NORMAL; // if error, exit
memset(cSize, 0 , 9);
memcpy(cSize, inBuff+24, 8);
sscanf_s(cSize, "%8x", &iRcvSize); // get the length of the transmission
ep_buff[EP_81_DATA_IDX]._size = iRcvSize;
#pragma message("no usb comm??")
// _do_single_threaded_usb_comm(EP_01_CMD_IDX);
return SSI_STATUS_MOTION_NORMAL;
};
//******************************************************************************
usb_dev_handle* CSO7_Proto::_open_usb_dev(void)
{
struct usb_bus *bus = NULL;
struct usb_device *dev = NULL;
for (bus = usb_get_busses(); bus; bus = bus->next)
{
for (dev = bus->devices; dev; dev = dev->next)
{
if (dev->descriptor.idVendor == SEVENOCEAN_VID && dev->descriptor.idProduct == SEVENOCEAN_PID)
{
return usb_open(dev);
}
}
}
return NULL;
}
//******************************************************************************
// Send is direct and async.
// The receive thread will receive data and interpret it.
//******************************************************************************
SSI_STATUS_MOTION CSO7_Proto::Init_SO7Usb()
{
//Set initial state of the machine
g_machine.s_status._machine_running = false;
SSI_STATUS_MOTION Status=SSI_STATUS_MOTION_NORMAL;
UNREFERENCED_PARAMETER(Status);
int usb_status = NULL;
usb_init(); // initialize the library
usb_status = usb_find_busses(); // find all busses
usb_status = usb_find_devices(); // find all connected devices
g_dev = _open_usb_dev();
if (!g_dev)
{
MessageBox(NULL, _T("Unable to open device"), _T("Message"), MB_OK);
g_pLogger->SendAndFlushPerMode(_T("Unable to open device %s \r\n"), usb_strerror());
return SSI_STATUS_MOTION_DATALINK_ERROR;
}
if (usb_set_configuration(g_dev, MY_CONFIG) < 0)
{
MessageBox(NULL, _T("Unable to SET CONFIGURATION"), _T("Message"), MB_OK);
return SSI_STATUS_MOTION_DATALINK_ERROR;
}
if (usb_claim_interface(g_dev, 0) < 0)
{
usb_close(g_dev);
MessageBox(NULL, _T("Unable to CLAIM DEVICE"), _T("Message"), MB_OK);
return SSI_STATUS_MOTION_DATALINK_ERROR;
}
g_pLogger->SendAndFlushPerMode(_T("Init:Open device succeed .\r\n"));
// ********************************************************************
// This event is used to kick the Serial Usb Command process. This threading model
// is important because the underlying library is not thread-safe.
//
ep_buff[EP_02_CMD_IDX]._event = CreateEvent(NULL, // default security attributes
FALSE, // manual reset event object
NULL, // signaled
NULL); // unamed object
g_hEP02_Thread_Id = CreateThread( (LPSECURITY_ATTRIBUTES) NULL,
0,
(LPTHREAD_START_ROUTINE) g_EP02_Thread,
(LPVOID) this,
0,
NULL);
g_hEP02_Thread_State = THREAD_RUNNING_STATE1;
// ********************************************************************
// Prepare and start EP_S07_81 Thread - Use async commit.
//
ep_buff[EP_82_DATA_IDX]._event = CreateEvent(NULL, // default security attributes
FALSE, // manual reset event object
NULL, // signaled
NULL); // unamed object
g_hEP8x_Thread_State = THREAD_PAUSED;
g_hEP8x_Thread_Id = CreateThread( (LPSECURITY_ATTRIBUTES) NULL,
0,
(LPTHREAD_START_ROUTINE) g_EP8x_Thread,
(LPVOID) this,
0,
NULL);
g_hEP02_Serial_Mutex = CreateMutex(NULL, // default security attributes
FALSE, // initial owner
NULL); // name
// *********************************************************************
g_hHomedEvent = CreateEvent(NULL, // default security attributes
TRUE, // manual reset event object
FALSE, // initial state is signaled
NULL); // unamed object
return SSI_STATUS_MOTION_NORMAL;
}
//******************************************************************************
SSI_STATUS_MOTION CSO7_Proto::Exit_SO7Usb()
{
SSI_STATUS_MOTION Status=SSI_STATUS_MOTION_NORMAL;
g_hEP8x_Thread_State = THREAD_EXIT;
g_hEP02_Thread_State = THREAD_EXIT;
SetEvent(ep_buff[EP_82_DATA_IDX]._event);
if (g_hEP8x_Thread_Id)
{
DWORD dwCode = STILL_ACTIVE;
while (dwCode == STILL_ACTIVE)
{
GetExitCodeThread(g_hEP8x_Thread_Id,&dwCode);
Sleep(1);
}
}
SetEvent(ep_buff[EP_02_CMD_IDX]._event);
if (g_hEP02_Thread_Id)
{
DWORD dwCode = STILL_ACTIVE;
while (dwCode == STILL_ACTIVE)
{
GetExitCodeThread(g_hEP02_Thread_Id,&dwCode);
Sleep(1);
}
}
if (g_dev)
{
usb_release_interface(g_dev,0);
usb_close(g_dev);
g_dev = NULL;
}
SetEvent(ep_buff[EP_82_DATA_IDX]._event);
CloseHandle(ep_buff[EP_82_DATA_IDX]._event);
SetEvent(ep_buff[EP_02_CMD_IDX]._event);
CloseHandle(ep_buff[EP_02_CMD_IDX]._event);
g_hEP02_Thread_State = THREAD_EXIT;
ReleaseMutex(g_hEP02_Serial_Mutex);
CloseHandle(g_hEP02_Serial_Mutex);
g_pLogger->SendAndFlushPerMode(_T("Exit: Exit_SO7Usb \r\n"));
return Status;
}
//******************************************************************************
// Kick the g_hEP01_Thread_Event to get the g_EP01_Thread going.
// iEP = EP_S07_01 or EP_S07_02 = 0x01 or 0x02
//******************************************************************************
SSI_STATUS_MOTION CSO7_Proto::_do_single_threaded_usb_comm(int iEP_Base)
{
TRACE1("=====_do_single_threaded_usb_comm(iEP) g_hEP01_Thread_Event. %x\n", iEP_Base);
while ((ep_buff[iEP_Base]._hProtoPending == TRUE) || (ep_buff[iEP_Base+1]._hProtoPending == TRUE))
{
ASSERT(0);
Sleep(3);
}
ep_buff[iEP_Base]._hProtoPending = ep_buff[iEP_Base+1]._hProtoPending = TRUE;
TRACE1("=====_do_single_threaded_usb_comm(iEP_Base) SetEvent(g_hEP01_Thread_Event): %X \r\n", ep_buff[iEP_Base]._save_send_cmd);
if (iEP_Base == EP_01_CMD_IDX)
SetEvent(ep_buff[EP_82_DATA_IDX]._event);
else
SetEvent(ep_buff[iEP_Base]._event);
while ((ep_buff[iEP_Base]._hProtoPending == TRUE) || (ep_buff[iEP_Base+1]._hProtoPending == TRUE))
{
Sleep(3);
}
TRACE1("=====_do_single_threaded_usb_comm(iEP) g_hProtoDoneEvents. %x\n", iEP_Base);
return SSI_STATUS_MOTION_NORMAL;
}
//******************************************************************************
// This startup just kicks off the EP_S07_81 worker thread.
//******************************************************************************
SSI_STATUS_MOTION CSO7_Proto::_start_machine()
{
g_hEP8x_Thread_State = THREAD_RUNNING_STATE2;
g_machine.s_status._machine_running = true;
g_pLogger->SendAndFlushPerMode(_T("_start_machine\n"));
//so7_motion_probe_on_off_(false);
//so7_motion_fixture_on_off(true);
//so7_motion_fixture_up_down(true);
return SSI_STATUS_MOTION_NORMAL;
};
//===============================================================================
SSI_STATUS_MOTION CSO7_Proto::_shutdown_machine()
{
g_machine.s_status._machine_running = false;
return SSI_STATUS_MOTION_NORMAL;
};
//===============================================================================
// iEP_Base : EP_81_DATA_IDX/EP_82_DATA_IDX
//
//===============================================================================
SSI_STATUS_MOTION CSO7_Proto::_read_data_8x(int iEP_Base)
{
if (iEP_Base == EP_82_DATA_IDX)
{
TRACE2("_read_data_81() iEP : %X - ep_buff[iEP]._size : %X \r\n", iEP_Base, ep_buff[iEP_Base]._size);
int _ret;
_ret = usb_bulk_read(g_dev, ep_buff[iEP_Base]._ep, (char *)ep_buff[iEP_Base]._buffer,(int) ep_buff[iEP_Base]._size, 5000);
if (_ret > 0)
{
_process_rcv_transfer_data(iEP_Base);
ep_buff[EP_82_DATA_IDX]._hProtoPending = false;
}
else
{
TRACE1("Read Timeout %xx\n", *((char *)ep_buff[iEP_Base]._buffer));
ASSERT(0);
return SSI_STATUS_MOTION_TIMEOUT;
}
return SSI_STATUS_MOTION_NORMAL;
}
else
{
TRACE2("_read_data_81() iEP : %X - ep_buff[iEP]._size : %X \r\n", iEP_Base, ep_buff[iEP_Base]._size);
int _ret;
_ret = usb_interrupt_read(g_dev, ep_buff[iEP_Base]._ep, (char *)ep_buff[iEP_Base]._buffer,(int) ep_buff[iEP_Base]._size, 20);
if (_ret > 0)
{
_process_rcv_transfer_data(iEP_Base);
}
else
{
g_machine.InterruptFlag[0] = 0;
TRACE1("There is no data interrupt read from controller. %xx\n", *((char *)ep_buff[iEP_Base]._buffer));
}
ep_buff[EP_01_CMD_IDX]._hProtoPending = false;
ep_buff[EP_81_DATA_IDX]._hProtoPending = false;
return SSI_STATUS_MOTION_NORMAL;
}
}
//===============================================================================
// _send_usb_cmd(iEP) sends data to the corresponding iEP channel.
// iEP = EP_S07_01 / EP_S07_02 EP_S07_01 = 0x01; EP_S07_02 = 0x02;
//===============================================================================
SSI_STATUS_MOTION CSO7_Proto::_send_usb_cmd(int iEP_Base)
{
int _ret;
ep_buff[iEP_Base]._save_send_cmd = ep_buff[iEP_Base]._buffer[0];
ep_buff[iEP_Base]._save_send_cmd0 = ep_buff[iEP_Base]._buffer[1];
ep_buff[iEP_Base]._save_send_cmd1 = ep_buff[iEP_Base]._buffer[2];
TRACE3("_send_usb_cmd() iEP : %X - ep_buff[iEP]._save_send_cmd : %X ._buffer[0] : %X\r\n", iEP_Base, ep_buff[iEP_Base]._save_send_cmd, ep_buff[iEP_Base]._buffer[0]);
_ret = usb_bulk_write(g_dev, ep_buff[iEP_Base]._ep, (char *)ep_buff[iEP_Base]._buffer,(int) ep_buff[iEP_Base]._size, 50);
if (_ret < 0)
{
TRACE("Write Timeout \n");
ASSERT(0);
return SSI_STATUS_MOTION_TIMEOUT;
}
SetEvent(ep_buff[iEP_Base+1]._event);
ep_buff[iEP_Base]._hProtoPending = false;
return SSI_STATUS_MOTION_NORMAL;
}
//===============================================================================
// _write_usb_data_only(iEP) sends data to the corresponding iEP channel.No need to
//process the reap async
// iEP = EP_S07_01 / EP_S07_02 EP_S07_01 = 0x01; EP_S07_02 = 0x02;
//===============================================================================
SSI_STATUS_MOTION CSO7_Proto::_write_usb_data_only(int iEP_Base)
{
int _ret;
ep_buff[iEP_Base]._save_send_cmd = ep_buff[iEP_Base]._buffer[0];
ep_buff[iEP_Base]._save_send_cmd0 = ep_buff[iEP_Base]._buffer[1];
ep_buff[iEP_Base]._save_send_cmd1 = ep_buff[iEP_Base]._buffer[2];
TRACE3("_send_usb_cmd() iEP : %X - ep_buff[iEP]._save_send_cmd : %X ._buffer[0] : %X\r\n", iEP_Base, ep_buff[iEP_Base]._save_send_cmd, ep_buff[iEP_Base]._buffer[0]);
_ret = usb_bulk_write(g_dev, ep_buff[iEP_Base]._ep, (char *)ep_buff[iEP_Base]._buffer,(int) ep_buff[iEP_Base]._size, 50);
if (_ret < 0)
{
TRACE("Write Timeout \n");
ASSERT(0);
return SSI_STATUS_MOTION_TIMEOUT;
}
ep_buff[iEP_Base]._hProtoPending = false;
ep_buff[iEP_Base+1]._hProtoPending = false;
return SSI_STATUS_MOTION_NORMAL;
}
//=================================================================
// false: probe off ǰ̽ͷΪ⣻true: probe onǰ̽ͷΪӴʽ.//
//=================================================================
SSI_STATUS_MOTION CSO7_Proto::so7_motion_probe_on_off_(bool _bOnOff)
{
if (_bOnOff)
_send_cmd_SO7_CMD_COMMON_COMMAND(CT_MOTOR,CT_M_PROBE_ON,0);
else
_send_cmd_SO7_CMD_COMMON_COMMAND(CT_MOTOR,CT_M_PROBE_OFF,1);
return SSI_STATUS_MOTION_NORMAL;
};
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::so7_motion_reset_worktable_lower_left()
{
_send_cmd_SO7_CMD_COMMON_COMMAND(CT_MOTOR,CT_M_RESET_LEFT,1);
return SSI_STATUS_MOTION_NORMAL;
};
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::so7_motion_reset_worktable_top_right()
{
_send_cmd_SO7_CMD_COMMON_COMMAND(CT_MOTOR,CT_M_RESET_RIGHT,1);
return SSI_STATUS_MOTION_NORMAL;
};
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::so7_motion_stop_motor_to_get_laser_data()
{
_send_cmd_SO7_CMD_COMMON_COMMAND(CT_MOTOR,CT_GET_LASE,1);
return SSI_STATUS_MOTION_NORMAL;
};
//=================================================================
// false: رռо true: о. //
//=================================================================
SSI_STATUS_MOTION CSO7_Proto::so7_motion_fixture_on_off(bool _bOnOff)
{
if (_bOnOff)
_send_cmd_SO7_CMD_COMMON_COMMAND(CT_MOTOR,CT_M_SWITCH_START,1);
else
_send_cmd_SO7_CMD_COMMON_COMMAND(CT_MOTOR,CT_M_SWITCH_CLOSE,1);
return SSI_STATUS_MOTION_NORMAL;
};
//=================================================================
// false: о true: о. //
//=================================================================
SSI_STATUS_MOTION CSO7_Proto::so7_motion_fixture_up_down(bool _bOnOff)
{
if (_bOnOff)
_send_cmd_SO7_CMD_COMMON_COMMAND(CT_MOTOR,CT_M_SWITCH_BOM,1);
else
_send_cmd_SO7_CMD_COMMON_COMMAND(CT_MOTOR,CT_M_SWITCH_TOP,1);
return SSI_STATUS_MOTION_NORMAL;
};
//==================================================================
//false: CT_LASE_TIMMER_ON  true: CT_LASE_TIMMER_OFF //
//==================================================================
SSI_STATUS_MOTION CSO7_Proto::so7_motion_laser_on_off(bool _bOnOff)
{
if (_bOnOff)
_send_cmd_SO7_CMD_COMMON_COMMAND(CT_MOTOR,CT_LASE_TIMMER_OFF,1);
else
_send_cmd_SO7_CMD_COMMON_COMMAND(CT_MOTOR,CT_LASE_TIMMER_ON,1);
return SSI_STATUS_MOTION_NORMAL;
};
//**********************************************************************//
//**********************************************************************//
//==================================================================
bool CSO7_Proto::so7_motion_is_homed()
{
_send_cmd_SO7_CMD_GET_RESET_FLAG();
if (g_machine.Sys_Reset_Flag == 1)
{
SetEvent(g_hHomedEvent);
return true;
}
else
return false;
};
//========================================================================
// Move the stage left/right until the index location is non-zero
//========================================================================
SSI_STATUS_MOTION CSO7_Proto::so7_motion_Dcc_Home()
{
//ѯǷλ
_send_cmd_SO7_CMD_GET_RESET_FLAG();
g_machine.cVerNumber=3;
if (g_machine.Sys_Reset_Flag == 1)
{
_send_cmd_SO7_CMD_SET_VER_NUMBER();
SetEvent(g_hHomedEvent);
return SSI_STATUS_MOTION_NORMAL;
}
m_bHomingActive = true; // Tell the world we need to home the stage
// Home
so7_motion_reset_worktable_lower_left();
g_pLogger->SendAndFlushPerMode(_T("so7_motion_reset_worktable_lower_left.\n"));
TRACE0(" - waiting for X,Y,Zm to stop moving\n");
//========================================
// Wait until X-Y-Zm stopped moving
INT iRetry(0);
while (g_machine.Sys_Reset_Flag != 1)
{
Sleep(50);
_send_cmd_SO7_CMD_GET_RESET_FLAG();
iRetry++;
}
g_pLogger->SendAndFlushPerMode(_T("[%d]waiting for X,Y,Zm to stop moving\n"),iRetry);
g_pLogger->SendAndFlushPerMode(_T("Home succeed.\n"));
//_get_xyz_index(g_machine.s_machine_config.x_axis._neg_working_limit,g_machine.s_machine_config.y_axis._neg_working_limit,g_machine.s_machine_config.z_axis._neg_working_limit);
_send_cmd_SO7_CMD_SET_VER_NUMBER();
m_bHomingActive = false;
SetEvent(g_hHomedEvent);
return SSI_STATUS_MOTION_NORMAL;
}
//==================================================================
SSI_STATUS_MOTION CSO7_Proto::so7_motion_startup(double dScaleResolutionX, double dScaleResolutionY, double dScaleResolutionZ)
{
g_machine.s_machine_config.x_axis._scale_resolution = dScaleResolutionX;
g_machine.s_machine_config.y_axis._scale_resolution = dScaleResolutionY;
g_machine.s_machine_config.z_axis._scale_resolution = dScaleResolutionZ;
_start_machine();
so7_motion_Dcc_Home();
_replay_capture(_T("Replay_Capture"));
return SSI_STATUS_MOTION_NORMAL;
};
//========================================================================
// read the configuration from the controller and populate the g_machine
// data structure
//========================================================================
SSI_STATUS_MOTION CSO7_Proto::_get_xyz_index(long & lX, long & lY, long & lZ)
{
_send_cmd_SO7_CMD_READ_AXIS_XYZ();
lX = g_machine.x._scale_pos._long_;
lY = g_machine.y._scale_pos._long_;
lZ = g_machine.z._scale_pos._long_;
return SSI_STATUS_MOTION_NORMAL;
};
//==================================================================
SSI_STATUS_MOTION CSO7_Proto::so7_motion_get_position_xyz(double & dX, double & dY, double & dZ)
{
WaitForSingleObject(g_hHomedEvent, INFINITE); // machine start and homing is done
long lX=0, lY=0, lZ=0;
_send_cmd_SO7_CMD_READ_AXIS_XYZ();
lX = g_machine.x._scale_pos._long_;
lY = g_machine.y._scale_pos._long_;
lZ = g_machine.z._scale_pos._long_;
dX = ScaleToMM(lX, g_machine.s_machine_config.x_axis._scale_resolution);
dY = ScaleToMM(lY, g_machine.s_machine_config.y_axis._scale_resolution);
dZ = ScaleToMM(lZ, g_machine.s_machine_config.z_axis._scale_resolution);
dX -= g_machine.s_machine_config.x_axis._neg_working_limit;
dY -= g_machine.s_machine_config.y_axis._neg_working_limit;
dZ -= g_machine.s_machine_config.z_axis._neg_working_limit;
return SSI_STATUS_MOTION_NORMAL;
};
//==================================================================
SSI_STATUS_MOTION CSO7_Proto::so7_motion_set_position_xyz(double dX, double dY, double dZ, bool bWait)
{
WaitForSingleObject(g_hHomedEvent, INFINITE); // machine start and homing is done
// get the current position
double dXStart, dYStart, dZStart;
so7_motion_get_position_xyz(dXStart, dYStart, dZStart);
SO7AXISMOVE X;
SO7AXISMOVE Y;
SO7AXISMOVE Z;
X.dFromMM = dXStart;
X.dToMM = dX;
Y.dFromMM = dYStart;
Y.dToMM = dY;
Z.dFromMM = dZStart;
Z.dToMM = dZ;
X.from = MMtoScale(dXStart, g_machine.s_machine_config.x_axis._scale_resolution);
X.to = MMtoScale(dX, g_machine.s_machine_config.x_axis._scale_resolution);
Y.from = MMtoScale(dYStart, g_machine.s_machine_config.y_axis._scale_resolution);
Y.to = MMtoScale(dY, g_machine.s_machine_config.y_axis._scale_resolution);
Z.from = MMtoScale(dZStart, g_machine.s_machine_config.z_axis._scale_resolution);
Z.to = MMtoScale(dZ, g_machine.s_machine_config.z_axis._scale_resolution);
// move the position to make the -X, -Y, -Z position 0,0,0
//X.to += g_machine.s_machine_config.x_axis._neg_working_limit;
//Y.to += g_machine.s_machine_config.y_axis._neg_working_limit;
//Z.to += g_machine.s_machine_config.z_axis._neg_working_limit;
//X.from += g_machine.s_machine_config.x_axis._neg_working_limit;
//Y.from += g_machine.s_machine_config.y_axis._neg_working_limit;
//Z.from += g_machine.s_machine_config.z_axis._neg_working_limit;
g_machine.x._pos_fixed._long_=X.to-X.from;
g_machine.y._pos_fixed._long_=Y.to-Y.from;
g_machine.z._pos_fixed._long_=Z.to-Z.from;
// _calculate_straightline_motion(g_machine.s_machine_config._dXYZSpeed);
_send_cmd_SO7_CMD_MOVE_TO_POS_XYZ(CT_MOVETOXYZ);
#pragma message("Test settle wait comparing the status bit to the scale monitor")
if (bWait)
{
const long lSleep = 20;
const long lMaxLoopCnt = 5000/lSleep; // use max homing time of 20 seconds
long lLoopCnt = 0;
Sleep(lSleep);
while (g_machine.InterruptFlag[0]!=CT_STOPXYZ && lLoopCnt < lMaxLoopCnt)
{
Sleep(lSleep);
_send_cmd_SO7_CMD_READ_INTERRUPT_MESSAGE();
++lLoopCnt;
}
g_machine.InterruptFlag[0]=0;
TRACE1("Presettle Time: %lf\n", TimeInSecs());
//WaitForSettleXYZZM();
TRACE1("Postsettle Time: %lf\n", TimeInSecs());
}
return SSI_STATUS_MOTION_NORMAL;
};
//========================================================================
// This speed setting will be carried out in the next DCC move
// Full Speed -> dPercentSpeed = 100%
// Slow Speed -> dPercentSpeed = 20%
//========================================================================
SSI_STATUS_MOTION CSO7_Proto::so7_motion_set_speed_xyz(double dPercentSpeed)
{
g_machine.s_machine_config._dXYZSpeed = dPercentSpeed;
return SSI_STATUS_MOTION_NORMAL;
}
//========================================================================
SSI_STATUS_MOTION CSO7_Proto::so7_motion_get_speed_xyz(double &dPercentSpeed)
{
dPercentSpeed = g_machine.s_machine_config._dXYZSpeed;
return SSI_STATUS_MOTION_NORMAL;
}
//========================================================================
SSI_STATUS_MOTION CSO7_Proto::so7_motion_get_3D_max_speed(double &dMaxSpeed)
{
double dMaxSpeedX = g_machine.s_machine_config.x_axis._speed_max[0];
double dMaxSpeedY = g_machine.s_machine_config.y_axis._speed_max[0];
double dMaxSpeedZ = g_machine.s_machine_config.z_axis._speed_max[0];
dMaxSpeed = sqrt(dMaxSpeedX*dMaxSpeedX + dMaxSpeedY*dMaxSpeedY + dMaxSpeedZ*dMaxSpeedZ);
return SSI_STATUS_MOTION_NORMAL;
}
//========================================================================
SSI_STATUS_MOTION CSO7_Proto::_calculate_straightline_motion(double dSpeedMM)
{
CString csAppPath;
GetAppPath(csAppPath);
CString csSO7ConfigFile = csAppPath + _T("\\Utility_Config.ini");
Load_SevenOcean_Inifile(csSO7ConfigFile);
g_machine.s_machine_config.x_axis._speed_max[0]=static_cast<char>(g_machine.s_machine_config.x_axis._speed_max[0]*dSpeedMM);
g_machine.s_machine_config.y_axis._speed_max[0]=static_cast<char>(g_machine.s_machine_config.y_axis._speed_max[0]*dSpeedMM);
g_machine.s_machine_config.z_axis._speed_max[0]=static_cast<char>(g_machine.s_machine_config.z_axis._speed_max[0]*dSpeedMM);
_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(0,0);
_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(1,0);
_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(2,0);
return SSI_STATUS_MOTION_NORMAL;
}
//**********************************************************************//
//==================================================================
SSI_STATUS_MOTION CSO7_Proto::so7_optics_set_scale_position(long lScale)
{
WaitForSingleObject(g_hHomedEvent, INFINITE); // machine start and homing is done
TRACE1("caller set scale position = %X \r\n", lScale);
lScale += g_machine.s_machine_config.zm_axis._neg_working_limit;
g_machine.zm._pos_fixed._long_=(lScale);
_send_cmd_SO7_CMD_MOVE_TO_POS_ZM();
return SSI_STATUS_MOTION_NORMAL;
};
//==================================================================
SSI_STATUS_MOTION CSO7_Proto::so7_optics_get_scale_position(long &lScale)
{
WaitForSingleObject(g_hHomedEvent, INFINITE); // machine start and homing is done
_send_cmd_SO7_CMD_READ_V_DATA();
lScale = g_machine.zm._scale_pos._long_;
return SSI_STATUS_MOTION_NORMAL;
};
//==================================================================
SSI_STATUS_MOTION CSO7_Proto::so7_optics_get_scale_range(long &neg_scale_range, long &pos_scale_range)
{
WaitForSingleObject(g_hHomedEvent, INFINITE); // machine start and homing is done
neg_scale_range = g_machine.s_machine_config.zm_axis._neg_working_limit;
pos_scale_range = g_machine.s_machine_config.zm_axis._pos_working_limit;
TRACE2("Get Scale Range : %X, %X \r\n",neg_scale_range, pos_scale_range);
return SSI_STATUS_MOTION_NORMAL;
};
//**********************************************************************//
void CSO7_Proto::so7_set_full_ringlight_data(long lIntensity)
{
g_machine.s_lights_value.segment[0]=static_cast<BYTE>(0xff);
g_machine.s_lights_value.segment[1]=static_cast<BYTE>(0xff);
g_machine.s_lights_value._ring_light=static_cast<char>(lIntensity);
};
//=========================================================================================
void CSO7_Proto::so7_set_ringlight_data(long lMaxSize, double *pSegments)
{
if (pSegments && (lMaxSize == (TWO_RINGS*EIGHT_SEGS)))
{
BYTE cRingSwitchOn=0x01;
BYTE cRingSwitchOff=0xfe;
for (int ii=0 ; ii<TWO_RINGS; ii++ )
{
for (int jj=0 ; jj<EIGHT_SEGS ; jj++)
{
if ((pSegments[ii * EIGHT_SEGS + jj])>1)
{
g_machine.s_lights_value.segment[ii] |= (cRingSwitchOn<<jj);
g_machine.s_lights_value._ring_light=static_cast<char>((pSegments[ii * EIGHT_SEGS + jj])/100.0 * (MAXLIGHTVALUE-1));
}
else
{
g_machine.s_lights_value.segment[ii] &= (cRingSwitchOff<<jj);
}
}
}
}
};
//==================================================================
SSI_STATUS_MOTION CSO7_Proto::so7_light_set_light_off()
{
WaitForSingleObject(g_hHomedEvent, INFINITE); // machine start and homing is done
g_machine.s_lights_value._top_light=1;
g_machine.s_lights_value._bottom_light=1;
g_machine.s_lights_value._ring_light=1;
g_machine.s_lights_value._coaxial_light=1;
g_machine.s_lights_value._spare_light1=1;
g_machine.s_lights_value.segment[0]=0;
g_machine.s_lights_value.segment[1]=0;
_send_cmd_SO7_CMD_SET_ALL_LIGHT_VALUE();
return SSI_STATUS_MOTION_NORMAL;
};
//==================================================================
SSI_STATUS_MOTION CSO7_Proto::so7_light_set_light()
{
WaitForSingleObject(g_hHomedEvent, INFINITE); // machine start and homing is done
_send_cmd_SO7_CMD_SET_ALL_LIGHT_VALUE();
return SSI_STATUS_MOTION_NORMAL;
};
//==================================================================
SSI_STATUS_MOTION CSO7_Proto::so7_light_set_lamp_state(double dBottomPercent, double dTopPercent)
{
WaitForSingleObject(g_hHomedEvent, INFINITE); // machine start and homing is done
if(!g_pLog)
g_pLog=new CLogger(_T("\\Lamp.Log"));
g_machine.s_lights_value._top_light = (static_cast<char>(dTopPercent* (MAXLIGHTVALUE - 1)/100.0 ))+1;
g_machine.s_lights_value._bottom_light = (static_cast<char>(dBottomPercent*(MAXLIGHTVALUE - 1)/100.0))+1;
g_pLog->SendAndFlushPerMode(_T("dBottomPercent: %f dTopPercent: %f\n"),dBottomPercent,dTopPercent);
g_pLog->SendAndFlushPerMode(_T("so7_light_set_lamp_state bottom: %d top: %d\n"), g_machine.s_lights_value._bottom_light,g_machine.s_lights_value._top_light);
TRACE2("so7_light_set_lamp_state bottom: %d top: %d\n",
g_machine.s_lights_value._bottom_light,g_machine.s_lights_value._top_light);
delete g_pLog;
g_pLog=NULL;
return SSI_STATUS_MOTION_NORMAL;
};
//**********************************************************************//
//**********************************************************************//
//==================================================================================
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_MOVE_X(char SpeedGear)
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_MOVEX;
*(ep_buff[EP_02_CMD_IDX]._buffer+2) = SpeedGear;
ep_buff[EP_02_CMD_IDX]._size = 0x03;
ep_buff[EP_81_DATA_IDX]._size = 0x03;
g_hEP02_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
};
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_MOVE_Y(char SpeedGear)
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_MOVEY;
*(ep_buff[EP_02_CMD_IDX]._buffer+2) = SpeedGear;
ep_buff[EP_02_CMD_IDX]._size = 0x03;
ep_buff[EP_81_DATA_IDX]._size = 0x03;
g_hEP02_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
};
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_MOVE_Z(char SpeedGear)
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_MOVEZ;
*(ep_buff[EP_02_CMD_IDX]._buffer+2) = SpeedGear;
ep_buff[EP_02_CMD_IDX]._size = 0x03;
ep_buff[EP_81_DATA_IDX]._size = 0x03;
g_hEP02_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
};
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_MOVE_ZM(char SpeedGear)
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_MOVEV;
*(ep_buff[EP_02_CMD_IDX]._buffer+2) = SpeedGear;
ep_buff[EP_02_CMD_IDX]._size = 0x03;
ep_buff[EP_81_DATA_IDX]._size = 0x03;
g_hEP02_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
};
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_STOP_MOVE_XYZ()
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_STOPA;
*(ep_buff[EP_02_CMD_IDX]._buffer+2)=0x00;
ep_buff[EP_02_CMD_IDX]._size = 0x04;
ep_buff[EP_81_DATA_IDX]._size = 0x04;
g_hEP02_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
};
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_RESET_XYZ()
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_RESET;
*(ep_buff[EP_02_CMD_IDX]._buffer+2) = 0X00;
ep_buff[EP_02_CMD_IDX]._size = 0x03;
ep_buff[EP_81_DATA_IDX]._size = 0x03;
g_hEP02_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
};
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_RESET_V()
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_TESTV;
*(ep_buff[EP_02_CMD_IDX]._buffer+2) = 0;
ep_buff[EP_02_CMD_IDX]._size = 0x03;
ep_buff[EP_82_DATA_IDX]._size = 0x10;
g_hEP02_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
};
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_STOP_V()
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_STOPV;
ep_buff[EP_02_CMD_IDX]._size = 0x02;
ep_buff[EP_82_DATA_IDX]._size = 0x10;
g_hEP02_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
};
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_MOVE_TO_POS_X()
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_MOVETOX;
*(ep_buff[EP_02_CMD_IDX]._buffer+2)=(((g_machine.x._pos_fixed._char_[3])<0x80)?(g_machine.x._pos_fixed._char_[2]):((g_machine.x._pos_fixed._char_[2])|0x80));//λ
*(ep_buff[EP_02_CMD_IDX]._buffer+3)=(g_machine.x._pos_fixed._char_[1]);
*(ep_buff[EP_02_CMD_IDX]._buffer+4)=(g_machine.x._pos_fixed._char_[0]);
ep_buff[EP_02_CMD_IDX]._size = 0x07;
ep_buff[EP_81_DATA_IDX]._size = 0x45;
g_hEP02_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
};
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_MOVE_TO_POS_Y()
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_MOVETOY;
*(ep_buff[EP_02_CMD_IDX]._buffer+2)=(((g_machine.y._pos_fixed._char_[3])<0x80)?(g_machine.y._pos_fixed._char_[2]):((g_machine.y._pos_fixed._char_[2])|0x80));//λ
*(ep_buff[EP_02_CMD_IDX]._buffer+3)=(g_machine.y._pos_fixed._char_[1]);
*(ep_buff[EP_02_CMD_IDX]._buffer+4)=(g_machine.y._pos_fixed._char_[0]);
ep_buff[EP_02_CMD_IDX]._size = 0x07;
ep_buff[EP_81_DATA_IDX]._size = 0x07;
g_hEP02_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
};
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_MOVE_TO_POS_Z()
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_MOVETOZ;
if(g_machine.z._pos_fixed._long_<0)
{
g_machine.z._pos_fixed._long_=-g_machine.z._pos_fixed._long_;
*(ep_buff[EP_02_CMD_IDX]._buffer+2)=((g_machine.z._pos_fixed._char_[2])|0x80);//λ
*(ep_buff[EP_02_CMD_IDX]._buffer+3)=(g_machine.z._pos_fixed._char_[1]);
*(ep_buff[EP_02_CMD_IDX]._buffer+4)=(g_machine.z._pos_fixed._char_[0]);
}
else
{
*(ep_buff[EP_02_CMD_IDX]._buffer+2)=(g_machine.z._pos_fixed._char_[2]);//λ
*(ep_buff[EP_02_CMD_IDX]._buffer+3)=(g_machine.z._pos_fixed._char_[1]);
*(ep_buff[EP_02_CMD_IDX]._buffer+4)=(g_machine.z._pos_fixed._char_[0]);
}
ep_buff[EP_02_CMD_IDX]._size = 0x07;
ep_buff[EP_81_DATA_IDX]._size = 0x07;
g_hEP02_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
};
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_MOVE_TO_POS_ZM()
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_MOVETOV;
if(g_machine.zm._pos_fixed._long_<0)
{
g_machine.zm._pos_fixed._long_=-g_machine.zm._pos_fixed._long_;
*(ep_buff[EP_02_CMD_IDX]._buffer+2)=((g_machine.zm._pos_fixed._char_[2])|0x80);//λ
*(ep_buff[EP_02_CMD_IDX]._buffer+3)=(g_machine.zm._pos_fixed._char_[1]);
*(ep_buff[EP_02_CMD_IDX]._buffer+4)=(g_machine.zm._pos_fixed._char_[0]);
}
else
{
*(ep_buff[EP_02_CMD_IDX]._buffer+2)=(g_machine.zm._pos_fixed._char_[2]);//λ
*(ep_buff[EP_02_CMD_IDX]._buffer+3)=(g_machine.zm._pos_fixed._char_[1]);
*(ep_buff[EP_02_CMD_IDX]._buffer+4)=(g_machine.zm._pos_fixed._char_[0]);
}
ep_buff[EP_02_CMD_IDX]._size = 0x07;
ep_buff[EP_81_DATA_IDX]._size = 0x07;
g_hEP02_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
};
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_MOVE_TO_POS_XYZ(char ProbeType)
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
pSO7_CMD_02->uCmdByte = CT_MOTOR;
pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.uSubCmdByte =ProbeType;
if(g_machine.x._pos_fixed._long_<0)
{
g_machine.x._pos_fixed._long_=-g_machine.x._pos_fixed._long_;
pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[0]=(g_machine.x._pos_fixed._char_[2] | 0x80);//λ
pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[1]=(g_machine.x._pos_fixed._char_[1]);
pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[2]=(g_machine.x._pos_fixed._char_[0]);
}
else
{
pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[0]=(g_machine.x._pos_fixed._char_[2]);//λ
pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[1]=(g_machine.x._pos_fixed._char_[1]);
pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[2]=(g_machine.x._pos_fixed._char_[0]);
}
if(g_machine.y._pos_fixed._long_<0)
{
g_machine.y._pos_fixed._long_=-g_machine.y._pos_fixed._long_;
pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[3]=(g_machine.y._pos_fixed._char_[2] | 0x80);//λ
pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[4]=(g_machine.y._pos_fixed._char_[1]);
pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[5]=(g_machine.y._pos_fixed._char_[0]);
}
else
{
pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[3]=(g_machine.y._pos_fixed._char_[2]);//λ
pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[4]=(g_machine.y._pos_fixed._char_[1]);
pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[5]=(g_machine.y._pos_fixed._char_[0]);
}
if(g_machine.z._pos_fixed._long_<0)
{
g_machine.z._pos_fixed._long_=-g_machine.z._pos_fixed._long_;
pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[6]=(g_machine.z._pos_fixed._char_[2] | 0x80);//λ
pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[7]=(g_machine.z._pos_fixed._char_[1]);
pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[8]=(g_machine.z._pos_fixed._char_[0]);
}
else
{
pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[6]=(g_machine.z._pos_fixed._char_[2]);//λ
pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[7]=(g_machine.z._pos_fixed._char_[1]);
pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[8]=(g_machine.z._pos_fixed._char_[0]);
}
ep_buff[EP_02_CMD_IDX]._size = 0x0C;
ep_buff[EP_82_DATA_IDX]._size = 0x45;
g_hEP02_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
};
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_MOVE_TO_POS_XYZV()
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
pSO7_CMD_02->uCmdByte = CT_MOTOR;
pSO7_CMD_02->s_SO7_CMD_MOVETOXYZV.uSubCmdByte =CT_MOVETOXYZV;
if(g_machine.x._pos_fixed._long_<0)
{
g_machine.x._pos_fixed._long_=-g_machine.x._pos_fixed._long_;
pSO7_CMD_02->s_SO7_CMD_MOVETOXYZV.data[0]=(g_machine.x._pos_fixed._char_[2] | 0x80);//λ
pSO7_CMD_02->s_SO7_CMD_MOVETOXYZV.data[1]=(g_machine.x._pos_fixed._char_[1]);
pSO7_CMD_02->s_SO7_CMD_MOVETOXYZV.data[2]=(g_machine.x._pos_fixed._char_[0]);
}
else
{
pSO7_CMD_02->s_SO7_CMD_MOVETOXYZV.data[0]=(g_machine.x._pos_fixed._char_[2]);//λ
pSO7_CMD_02->s_SO7_CMD_MOVETOXYZV.data[1]=(g_machine.x._pos_fixed._char_[1]);
pSO7_CMD_02->s_SO7_CMD_MOVETOXYZV.data[2]=(g_machine.x._pos_fixed._char_[0]);
}
if(g_machine.y._pos_fixed._long_<0)
{
g_machine.y._pos_fixed._long_=-g_machine.y._pos_fixed._long_;
pSO7_CMD_02->s_SO7_CMD_MOVETOXYZV.data[3]=(g_machine.y._pos_fixed._char_[2] | 0x80);//λ
pSO7_CMD_02->s_SO7_CMD_MOVETOXYZV.data[4]=(g_machine.y._pos_fixed._char_[1]);
pSO7_CMD_02->s_SO7_CMD_MOVETOXYZV.data[5]=(g_machine.y._pos_fixed._char_[0]);
}
else
{
pSO7_CMD_02->s_SO7_CMD_MOVETOXYZV.data[3]=(g_machine.y._pos_fixed._char_[2]);//λ
pSO7_CMD_02->s_SO7_CMD_MOVETOXYZV.data[4]=(g_machine.y._pos_fixed._char_[1]);
pSO7_CMD_02->s_SO7_CMD_MOVETOXYZV.data[5]=(g_machine.y._pos_fixed._char_[0]);
}
if(g_machine.z._pos_fixed._long_<0)
{
g_machine.z._pos_fixed._long_=-g_machine.z._pos_fixed._long_;
pSO7_CMD_02->s_SO7_CMD_MOVETOXYZV.data[6]=(g_machine.z._pos_fixed._char_[2] | 0x80);//λ
pSO7_CMD_02->s_SO7_CMD_MOVETOXYZV.data[7]=(g_machine.z._pos_fixed._char_[1]);
pSO7_CMD_02->s_SO7_CMD_MOVETOXYZV.data[8]=(g_machine.z._pos_fixed._char_[0]);
}
else
{
pSO7_CMD_02->s_SO7_CMD_MOVETOXYZV.data[6]=(g_machine.z._pos_fixed._char_[2]);//λ
pSO7_CMD_02->s_SO7_CMD_MOVETOXYZV.data[7]=(g_machine.z._pos_fixed._char_[1]);
pSO7_CMD_02->s_SO7_CMD_MOVETOXYZV.data[8]=(g_machine.z._pos_fixed._char_[0]);
}
if(g_machine.zm._pos_fixed._long_<0)
{
g_machine.zm._pos_fixed._long_=-g_machine.z._pos_fixed._long_;
pSO7_CMD_02->s_SO7_CMD_MOVETOXYZV.data[6]=(g_machine.zm._pos_fixed._char_[2] | 0x80);//λ
pSO7_CMD_02->s_SO7_CMD_MOVETOXYZV.data[7]=(g_machine.zm._pos_fixed._char_[1]);
pSO7_CMD_02->s_SO7_CMD_MOVETOXYZV.data[8]=(g_machine.zm._pos_fixed._char_[0]);
}
else
{
pSO7_CMD_02->s_SO7_CMD_MOVETOXYZV.data[9]=(g_machine.zm._pos_fixed._char_[2]);//λ
pSO7_CMD_02->s_SO7_CMD_MOVETOXYZV.data[10]=(g_machine.zm._pos_fixed._char_[1]);
pSO7_CMD_02->s_SO7_CMD_MOVETOXYZV.data[11]=(g_machine.zm._pos_fixed._char_[0]);
}
ep_buff[EP_02_CMD_IDX]._size = 0x0F;
ep_buff[EP_82_DATA_IDX]._size = 0x45;
g_hEP02_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
};
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_READ_AXIS_XYZ()
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_DATA;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_READ_AXISXYZ;
*(ep_buff[EP_02_CMD_IDX]._buffer+2)=0x00;
ep_buff[EP_02_CMD_IDX]._size = 0x03;
ep_buff[EP_82_DATA_IDX]._size = 0x09;
g_hEP02_Thread_State=THREAD_RUNNING_STATE1;
g_hEP8x_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
};
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_READ_PROBE_XYZ()
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_DATA;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_READ_PROBEXYZ;
*(ep_buff[EP_02_CMD_IDX]._buffer+2)=0x00;
ep_buff[EP_02_CMD_IDX]._size = 0x03;
ep_buff[EP_82_DATA_IDX]._size = 0x09;
g_hEP02_Thread_State=THREAD_RUNNING_STATE1;
g_hEP8x_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
};
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_READ_V_DATA()
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_DATA;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_READ_AXISV;
*(ep_buff[EP_02_CMD_IDX]._buffer+2) = 0x00;
ep_buff[EP_02_CMD_IDX]._size = 0x03;
ep_buff[EP_82_DATA_IDX]._size = 0x03;
g_hEP02_Thread_State=THREAD_RUNNING_STATE1;
g_hEP8x_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_GET_RESET_FLAG()
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_SCALE;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_GET_RESET_FLAG;
*(ep_buff[EP_02_CMD_IDX]._buffer+2) = 0x00;
ep_buff[EP_02_CMD_IDX]._size = 0x03;
ep_buff[EP_82_DATA_IDX]._size = 0x02;
g_hEP02_Thread_State=THREAD_RUNNING_STATE1;
g_hEP8x_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_GET_FIXTURE_VALUE()
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_M_SWITCH_VALUE;
*(ep_buff[EP_02_CMD_IDX]._buffer+2) = 0x00;
*(ep_buff[EP_02_CMD_IDX]._buffer+3) = 0x00;
ep_buff[EP_02_CMD_IDX]._size = 0x04;
ep_buff[EP_82_DATA_IDX]._size = 0x02;
g_hEP02_Thread_State=THREAD_RUNNING_STATE1;
g_hEP8x_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_SET_RESET_FLAG()
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_SCALE;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_SET_RESET_FLAG;
*(ep_buff[EP_02_CMD_IDX]._buffer+2) = 0x01;
ep_buff[EP_02_CMD_IDX]._size = 0x03;
ep_buff[EP_82_DATA_IDX]._size = 0x02;
g_hEP02_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_SET_LIGHT_SIZE(char subCMD,BYTE LightValue)
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_LIGHT;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = subCMD;//CT_LIGHT/1-4/_SIZE or CT_LIGHT/1-4/_SWITCH
*(ep_buff[EP_02_CMD_IDX]._buffer+2) = LightValue-1;
*(ep_buff[EP_02_CMD_IDX]._buffer+3) = 0;
ep_buff[EP_02_CMD_IDX]._size = 0x04;
ep_buff[EP_82_DATA_IDX]._size = 0x02;
g_hEP02_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_SET_ALL_LIGHT_VALUE()
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
pSO7_CMD_02->uCmdByte = CT_LIGHT;
pSO7_CMD_02->s_SO7_CMD_SET_LIGHT.uSubCmdByte =CT_LIGHT_CMD;
pSO7_CMD_02->s_SO7_CMD_SET_LIGHT.uStartCmdByte =(BYTE)0xA1;
pSO7_CMD_02->s_SO7_CMD_SET_LIGHT._bottom_light =g_machine.s_lights_value._bottom_light;
pSO7_CMD_02->s_SO7_CMD_SET_LIGHT._top_light =g_machine.s_lights_value._top_light;
pSO7_CMD_02->s_SO7_CMD_SET_LIGHT._ring_light =g_machine.s_lights_value._ring_light;
pSO7_CMD_02->s_SO7_CMD_SET_LIGHT._coaxial_light =g_machine.s_lights_value._coaxial_light;
pSO7_CMD_02->s_SO7_CMD_SET_LIGHT._spare_light1 =g_machine.s_lights_value._spare_light1;
pSO7_CMD_02->s_SO7_CMD_SET_LIGHT._outer_ring_light_switch =g_machine.s_lights_value.segment[0];
pSO7_CMD_02->s_SO7_CMD_SET_LIGHT._inner_ring_light_switch =g_machine.s_lights_value.segment[1];
pSO7_CMD_02->s_SO7_CMD_SET_LIGHT.uEndCmdByte =(BYTE)0xB1;
ep_buff[EP_02_CMD_IDX]._size = 0x0B;
ep_buff[EP_82_DATA_IDX]._size = 0x10;
g_hEP02_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_SET_VER_NUMBER()
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_SCALE;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_SET_VERNO;
*(ep_buff[EP_02_CMD_IDX]._buffer+2) = g_machine.cVerNumber;
ep_buff[EP_02_CMD_IDX]._size = 0x03;
ep_buff[EP_82_DATA_IDX]._size = 0x10;
g_hEP02_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_CORRECTION_SCALE(char cAxisType)
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_SCALE;
if (cAxisType == 0)
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_SET_LINE_X;
else if(cAxisType == 1)
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_SET_LINE_Y;
else if(cAxisType == 2)
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_SET_LINE_Z;
*(ep_buff[EP_02_CMD_IDX]._buffer+2) = 1;
ep_buff[EP_02_CMD_IDX]._size = 0x03;
ep_buff[EP_82_DATA_IDX]._size = 0x10;
g_hEP02_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_SET_SECTION(char cAxisType)
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_SCALE;
if (cAxisType == 0)
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_SET_SECTION_X;
else if(cAxisType == 1)
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_SET_SECTION_Y;
else if(cAxisType == 2)
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_SET_SECTION_Z;
*(ep_buff[EP_02_CMD_IDX]._buffer+2) = 1;
ep_buff[EP_02_CMD_IDX]._size = 0x03;
ep_buff[EP_82_DATA_IDX]._size = 0x10;
g_hEP02_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_COMMON_COMMAND(char Cmd,char SubCmd,char Type)
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
*(ep_buff[EP_02_CMD_IDX]._buffer) = Cmd;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = SubCmd;
*(ep_buff[EP_02_CMD_IDX]._buffer+2) = Type;
*(ep_buff[EP_02_CMD_IDX]._buffer+3) = 0x00;
ep_buff[EP_02_CMD_IDX]._size = 0x04;
ep_buff[EP_82_DATA_IDX]._size = 0x10;
g_hEP02_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_COMMON_COMMAND_DATA(char Cmd,char SubCmd,char Type,char Data)
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
*(ep_buff[EP_02_CMD_IDX]._buffer) = Cmd;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = SubCmd;
*(ep_buff[EP_02_CMD_IDX]._buffer+2) = Type;
*(ep_buff[EP_02_CMD_IDX]._buffer+3) = Data;
ep_buff[EP_02_CMD_IDX]._size = 0x04;
ep_buff[EP_82_DATA_IDX]._size = 0x10;
g_hEP02_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
}
//=============================================================
//xyz_gear=0(slow) 1 2 3(fast);
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_SET_ZOOM_SPEED(char xyz_gear)
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_SET_SPEEDV;
*(ep_buff[EP_02_CMD_IDX]._buffer+2) = xyz_gear;
*(ep_buff[EP_02_CMD_IDX]._buffer+3) = g_machine.s_machine_config.zm_axis._speed._char_[1];
*(ep_buff[EP_02_CMD_IDX]._buffer+4) = g_machine.s_machine_config.zm_axis._speed._char_[0];
ep_buff[EP_02_CMD_IDX]._size = 0x05;
ep_buff[EP_82_DATA_IDX]._size = 0x45;
g_hEP02_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
}
//=============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(char axis_type,char xyz_gear)
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR;
int iDeceDistance = 0;
if(axis_type == 0)
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_SET_SPEEDX;
else if(axis_type == 1)
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_SET_SPEEDY;
else if(axis_type == 2)
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_SET_SPEEDZ;
*(ep_buff[EP_02_CMD_IDX]._buffer+2) = xyz_gear+1;
if(axis_type==0)
{
*(ep_buff[EP_02_CMD_IDX]._buffer+3) = g_machine.s_machine_config.x_axis._speed_base[xyz_gear];
*(ep_buff[EP_02_CMD_IDX]._buffer+4) = g_machine.s_machine_config.x_axis._speed_fresh[xyz_gear];
*(ep_buff[EP_02_CMD_IDX]._buffer+5) = g_machine.s_machine_config.x_axis._speed_start[xyz_gear];
*(ep_buff[EP_02_CMD_IDX]._buffer+6) = g_machine.s_machine_config.x_axis._speed_max[xyz_gear];
iDeceDistance =(int)((g_machine.s_machine_config.x_axis._speed_slow_dis[xyz_gear] ) * 1000);
}
else if(axis_type==1)
{
*(ep_buff[EP_02_CMD_IDX]._buffer+3) = g_machine.s_machine_config.y_axis._speed_base[xyz_gear];
*(ep_buff[EP_02_CMD_IDX]._buffer+4) = g_machine.s_machine_config.y_axis._speed_fresh[xyz_gear];
*(ep_buff[EP_02_CMD_IDX]._buffer+5) = g_machine.s_machine_config.y_axis._speed_start[xyz_gear];
*(ep_buff[EP_02_CMD_IDX]._buffer+6) = g_machine.s_machine_config.y_axis._speed_max[xyz_gear];
iDeceDistance =(int)((g_machine.s_machine_config.y_axis._speed_slow_dis[xyz_gear] ) * 1000);
}
else if(axis_type==2)
{
*(ep_buff[EP_02_CMD_IDX]._buffer+3) = g_machine.s_machine_config.z_axis._speed_base[xyz_gear];
*(ep_buff[EP_02_CMD_IDX]._buffer+4) = g_machine.s_machine_config.z_axis._speed_fresh[xyz_gear];
*(ep_buff[EP_02_CMD_IDX]._buffer+5) = g_machine.s_machine_config.z_axis._speed_start[xyz_gear];
*(ep_buff[EP_02_CMD_IDX]._buffer+6) = g_machine.s_machine_config.z_axis._speed_max[xyz_gear];
iDeceDistance =(int)((g_machine.s_machine_config.z_axis._speed_slow_dis[xyz_gear] ) * 1000);
}
*(ep_buff[EP_02_CMD_IDX]._buffer+7) =static_cast<char>(iDeceDistance/1000);
*(ep_buff[EP_02_CMD_IDX]._buffer+7) = *(ep_buff[EP_02_CMD_IDX]._buffer+7) &0x0f;
*(ep_buff[EP_02_CMD_IDX]._buffer+8) = static_cast<char>((iDeceDistance%1000)/100);
*(ep_buff[EP_02_CMD_IDX]._buffer+8) = *(ep_buff[EP_02_CMD_IDX]._buffer+8) & 0x0f;
*(ep_buff[EP_02_CMD_IDX]._buffer+9) = static_cast<char>((iDeceDistance%100)/10);
*(ep_buff[EP_02_CMD_IDX]._buffer+9) = *(ep_buff[EP_02_CMD_IDX]._buffer+9) & 0x0f;
*(ep_buff[EP_02_CMD_IDX]._buffer+10)= static_cast<char>(iDeceDistance%10);
*(ep_buff[EP_02_CMD_IDX]._buffer+10)=*(ep_buff[EP_02_CMD_IDX]._buffer+10) & 0x0f;
ep_buff[EP_02_CMD_IDX]._size = 0x0b;
ep_buff[EP_82_DATA_IDX]._size = 0x45;
g_hEP02_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_SET_SPEED_PRECISION(char axis_type)
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR;
if(axis_type == 0)
{
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_SET_PRECISIONX;
*(ep_buff[EP_02_CMD_IDX]._buffer+2) =static_cast<char>(g_machine.s_machine_config.x_axis._motor_precision*1000+1);
}
else if(axis_type == 1)
{
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_SET_PRECISIONY;
*(ep_buff[EP_02_CMD_IDX]._buffer+2) = static_cast<char>(g_machine.s_machine_config.y_axis._motor_precision*1000+1);
}
else if (axis_type == 2)
{
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_SET_PRECISIONZ;
*(ep_buff[EP_02_CMD_IDX]._buffer+2) = static_cast<char>(g_machine.s_machine_config.z_axis._motor_precision*1000+1);
}
ep_buff[EP_02_CMD_IDX]._size = 0x03;
ep_buff[EP_82_DATA_IDX]._size = 0x06;
g_hEP02_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_SET_MOTOR_SPEED_WHEELBASE_PARAMETER()
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
float fmotor_wheelbasex(0.0);
float fmotor_wheelbasey(0.0);
float fmotor_wheelbasez(0.0);
fmotor_wheelbasex=static_cast<float>(((g_machine.s_machine_config.x_axis._scale_resolution)*(g_machine._motor_pulse_num))/(g_machine.s_machine_config.x_axis._motor_wheelbase*1000));
fmotor_wheelbasey=static_cast<float>(((g_machine.s_machine_config.y_axis._scale_resolution)*(g_machine._motor_pulse_num))/(g_machine.s_machine_config.y_axis._motor_wheelbase*1000));
fmotor_wheelbasez=static_cast<float>(((g_machine.s_machine_config.z_axis._scale_resolution)*(g_machine._motor_pulse_num))/(g_machine.s_machine_config.z_axis._motor_wheelbase*1000));
*(ep_buff[EP_02_CMD_IDX]._buffer)=CT_MOTOR;
*(ep_buff[EP_02_CMD_IDX]._buffer+1)=CT_SET_MOTOR_CAL;
memcpy(ep_buff[EP_02_CMD_IDX]._buffer+2,&fmotor_wheelbasex,4);
memcpy(ep_buff[EP_02_CMD_IDX]._buffer+6,&fmotor_wheelbasey,4);
memcpy(ep_buff[EP_02_CMD_IDX]._buffer+10,&fmotor_wheelbasez,4);
*(ep_buff[EP_02_CMD_IDX]._buffer+14)=0;
ep_buff[EP_02_CMD_IDX]._size = 0x0f;
ep_buff[EP_82_DATA_IDX]._size = 0x45;
g_hEP02_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_READ_SPEED_PARAMETER(char axis_type,char xyz_gear)
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR;
if(axis_type == 0)
{
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_READ_SPEEDX;
}
else if(axis_type == 1)
{
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_READ_SPEEDY;
}
else if (axis_type == 2)
{
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_READ_SPEEDZ;
}
*(ep_buff[EP_02_CMD_IDX]._buffer+2)= xyz_gear;
ep_buff[EP_02_CMD_IDX]._size = 0x03;
ep_buff[EP_82_DATA_IDX]._size = 0x06;
g_hEP02_Thread_State=THREAD_RUNNING_STATE1;
g_hEP8x_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_READ_SPEED_PRECISION(char axis_type)
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR;
if(axis_type == 0)
{
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_READ_PRECISIONX;
}
else if(axis_type == 1)
{
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_READ_PRECISIONY;
}
else if (axis_type == 2)
{
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_READ_PRECISIONZ;
}
ep_buff[EP_02_CMD_IDX]._size = 0x02;
ep_buff[EP_82_DATA_IDX]._size = 0x01;
g_hEP02_Thread_State=THREAD_RUNNING_STATE1;
g_hEP8x_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_READ_MOTOR_SPEED_WHEELBASE_PARAMETER()
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_READ_MOTOR_CAL;
ep_buff[EP_02_CMD_IDX]._size = 0x02;
ep_buff[EP_82_DATA_IDX]._size = 0x0C;
g_hEP02_Thread_State=THREAD_RUNNING_STATE1;
g_hEP8x_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_READ_INTERRUPT_MESSAGE()
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
ep_buff[EP_81_DATA_IDX]._size = 0x02;
g_hEP8x_Thread_State=THREAD_RUNNING_STATE1;
_do_single_threaded_usb_comm(EP_01_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_READ_ZOOM_MOTION_STATUS()
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_TEST_STOP;
ep_buff[EP_02_CMD_IDX]._size = 0x02;
ep_buff[EP_82_DATA_IDX]._size = 0x02;
g_hEP02_Thread_State=THREAD_RUNNING_STATE1;
g_hEP8x_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_OPEN_KEYENCE_LASER()
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_GET_LASE;
*(ep_buff[EP_02_CMD_IDX]._buffer+2) = 1;
ep_buff[EP_02_CMD_IDX]._size = 0x03;
ep_buff[EP_82_DATA_IDX]._size = 0x02;
g_hEP02_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_MOVE_X()
{
return SSI_STATUS_MOTION_NORMAL;
};
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_MOVE_Y()
{
return SSI_STATUS_MOTION_NORMAL;
};
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_MOVE_Z()
{
return SSI_STATUS_MOTION_NORMAL;
};
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_MOVE_ZM()
{
return SSI_STATUS_MOTION_NORMAL;
};
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_MOVE_RESET_XYZ()
{
return SSI_STATUS_MOTION_NORMAL;
};
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_MOVE_TO_POS_X()
{
return SSI_STATUS_MOTION_NORMAL;
};
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_MOVE_TO_POS_Y()
{
return SSI_STATUS_MOTION_NORMAL;
};
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_MOVE_TO_POS_Z()
{
return SSI_STATUS_MOTION_NORMAL;
};
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_MOVE_TO_POS_ZM()
{
return SSI_STATUS_MOTION_NORMAL;
};
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_MOVE_TO_POS_XYZ()
{
return SSI_STATUS_MOTION_NORMAL;
};
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_READ_AXIS_XYZ()
{
g_machine.x._scale_pos._long_=0;
g_machine.y._scale_pos._long_=0;
g_machine.z._scale_pos._long_=0;
g_machine.y._scale_pos._char_[2] = *(ep_buff[EP_82_DATA_IDX]._buffer);
g_machine.y._scale_pos._char_[1] = *(ep_buff[EP_82_DATA_IDX]._buffer+1);
g_machine.y._scale_pos._char_[0] = *(ep_buff[EP_82_DATA_IDX]._buffer+2);
g_machine.y._scale_pos._char_[3] = 0;
g_machine.x._scale_pos._char_[2] = *(ep_buff[EP_82_DATA_IDX]._buffer+3);
g_machine.x._scale_pos._char_[1] = *(ep_buff[EP_82_DATA_IDX]._buffer+4);
g_machine.x._scale_pos._char_[0] = *(ep_buff[EP_82_DATA_IDX]._buffer+5);
g_machine.x._scale_pos._char_[3] = 0;
g_machine.z._scale_pos._char_[2] = *(ep_buff[EP_82_DATA_IDX]._buffer+6);
g_machine.z._scale_pos._char_[1] = *(ep_buff[EP_82_DATA_IDX]._buffer+7);
g_machine.z._scale_pos._char_[0] = *(ep_buff[EP_82_DATA_IDX]._buffer+8);
g_machine.z._scale_pos._char_[3] = 0;
if (g_machine.x._scale_pos._long_ > 8388608)
g_machine.x._scale_pos._long_=g_machine.x._scale_pos._long_-16777216;
if (g_machine.y._scale_pos._long_ > 8388608)
g_machine.y._scale_pos._long_=g_machine.y._scale_pos._long_-16777216;
if (g_machine.z._scale_pos._long_ > 8388608)
g_machine.z._scale_pos._long_=g_machine.z._scale_pos._long_-16777216;
return SSI_STATUS_MOTION_NORMAL;
};
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_READ_PROBE_XYZ()
{
g_machine.y._scale_probe= _3char2long((unsigned char*)(ep_buff[EP_82_DATA_IDX]._buffer));
g_machine.x._scale_probe= _3char2long((unsigned char*)(ep_buff[EP_82_DATA_IDX]._buffer+3));
g_machine.z._scale_probe= _3char2long((unsigned char*)(ep_buff[EP_82_DATA_IDX]._buffer+6));
if (g_machine.x._scale_probe > 8388608)
g_machine.x._scale_probe=g_machine.x._scale_probe-16777216;
if (g_machine.y._scale_probe > 8388608)
g_machine.y._scale_probe=g_machine.y._scale_probe-16777216;
if (g_machine.z._scale_probe > 8388608)
g_machine.z._scale_probe=g_machine.z._scale_probe-16777216;
return SSI_STATUS_MOTION_NORMAL;
};
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_READ_V_DATA()
{
g_machine.zm._scale_pos._char_[2] = *(ep_buff[EP_82_DATA_IDX]._buffer);
g_machine.zm._scale_pos._char_[1] = *(ep_buff[EP_82_DATA_IDX]._buffer+1);
g_machine.zm._scale_pos._char_[0] = *(ep_buff[EP_82_DATA_IDX]._buffer+2);
g_machine.zm._scale_pos._char_[3] = 0;
if (g_machine.zm._scale_pos._long_ > 8388608)
g_machine.zm._scale_pos._long_=g_machine.zm._scale_pos._long_-16777216;
return SSI_STATUS_MOTION_NORMAL;
};
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_GET_GET_RESET_FLAG()
{
g_machine.Sys_Reset_Flag=*(ep_buff[EP_82_DATA_IDX]._buffer);
return SSI_STATUS_MOTION_NORMAL;
};
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_SET_LIGHT()
{
return SSI_STATUS_MOTION_NORMAL;
};
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_GET_GET_FIXTURE_VALUE()
{
g_machine.cFixtureFlag = ep_buff[EP_82_DATA_IDX]._buffer[0] & 0x3f;
return SSI_STATUS_MOTION_NORMAL;
};
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_SET_SPEED_MOTOR_WHEELBASE_PARAMETER()
{
return SSI_STATUS_MOTION_NORMAL;
}
//===============================================================
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_SET_SPEED_PARAMETER()
{
return SSI_STATUS_MOTION_NORMAL;
}
//===============================================================
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_SET_SPEED_PRECISION()
{
return SSI_STATUS_MOTION_NORMAL;
}
//===============================================================
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_READ_SPEED_PARAMETERX()
{
g_machine.s_machine_config.x_axis._speed_base[ep_buff[EP_02_CMD_IDX]._save_send_cmd1]=*(ep_buff[EP_82_DATA_IDX]._buffer);
g_machine.s_machine_config.x_axis._speed_fresh[ep_buff[EP_02_CMD_IDX]._save_send_cmd1]=*(ep_buff[EP_82_DATA_IDX]._buffer+1);
g_machine.s_machine_config.x_axis._speed_start[ep_buff[EP_02_CMD_IDX]._save_send_cmd1]=*(ep_buff[EP_82_DATA_IDX]._buffer+2);
g_machine.s_machine_config.x_axis._speed_max[ep_buff[EP_02_CMD_IDX]._save_send_cmd1]=*(ep_buff[EP_82_DATA_IDX]._buffer+3);
g_machine.s_machine_config.x_axis._speed_slow_dis[ep_buff[EP_02_CMD_IDX]._save_send_cmd1] =(static_cast<double>(((((BYTE)ep_buff[EP_82_DATA_IDX]._buffer[4])*256))+((BYTE)ep_buff[EP_82_DATA_IDX]._buffer[5])))/1000;
return SSI_STATUS_MOTION_NORMAL;
}
//===============================================================
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_READ_SPEED_PARAMETERZ()
{
g_machine.s_machine_config.z_axis._speed_base[ep_buff[EP_02_CMD_IDX]._save_send_cmd1]=*(ep_buff[EP_82_DATA_IDX]._buffer);
g_machine.s_machine_config.z_axis._speed_fresh[ep_buff[EP_02_CMD_IDX]._save_send_cmd1]=*(ep_buff[EP_82_DATA_IDX]._buffer+1);
g_machine.s_machine_config.z_axis._speed_start[ep_buff[EP_02_CMD_IDX]._save_send_cmd1]=*(ep_buff[EP_82_DATA_IDX]._buffer+2);
g_machine.s_machine_config.z_axis._speed_max[ep_buff[EP_02_CMD_IDX]._save_send_cmd1]=*(ep_buff[EP_82_DATA_IDX]._buffer+3);
g_machine.s_machine_config.z_axis._speed_slow_dis[ep_buff[EP_02_CMD_IDX]._save_send_cmd1] =(static_cast<double>(((((BYTE)ep_buff[EP_82_DATA_IDX]._buffer[4])*256))+((BYTE)ep_buff[EP_82_DATA_IDX]._buffer[5])))/1000;
return SSI_STATUS_MOTION_NORMAL;
}
//===============================================================
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_READ_SPEED_PARAMETERY()
{
g_machine.s_machine_config.y_axis._speed_base[ep_buff[EP_02_CMD_IDX]._save_send_cmd1]=*(ep_buff[EP_82_DATA_IDX]._buffer);
g_machine.s_machine_config.y_axis._speed_fresh[ep_buff[EP_02_CMD_IDX]._save_send_cmd1]=*(ep_buff[EP_82_DATA_IDX]._buffer+1);
g_machine.s_machine_config.y_axis._speed_start[ep_buff[EP_02_CMD_IDX]._save_send_cmd1]=*(ep_buff[EP_82_DATA_IDX]._buffer+2);
g_machine.s_machine_config.y_axis._speed_max[ep_buff[EP_02_CMD_IDX]._save_send_cmd1]=*(ep_buff[EP_82_DATA_IDX]._buffer+3);
g_machine.s_machine_config.y_axis._speed_slow_dis[ep_buff[EP_02_CMD_IDX]._save_send_cmd1] =(static_cast<double>(((((BYTE)ep_buff[EP_82_DATA_IDX]._buffer[4])*256))+((BYTE)ep_buff[EP_82_DATA_IDX]._buffer[5])))/1000;
return SSI_STATUS_MOTION_NORMAL;
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_READ_SPEED_PRECISIONX()
{
g_machine.s_machine_config.x_axis._motor_precision=(static_cast<double>(ep_buff[EP_82_DATA_IDX]._buffer[0]-1))/1000;
return SSI_STATUS_MOTION_NORMAL;
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_READ_SPEED_PRECISIONY()
{
g_machine.s_machine_config.y_axis._motor_precision=(static_cast<double>(ep_buff[EP_82_DATA_IDX]._buffer[0]-1))/1000;
return SSI_STATUS_MOTION_NORMAL;
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_READ_SPEED_PRECISIONZ()
{
g_machine.s_machine_config.z_axis._motor_precision=(static_cast<double>(ep_buff[EP_82_DATA_IDX]._buffer[0]-1))/1000;
return SSI_STATUS_MOTION_NORMAL;
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_READ_MOTOR_SPEED_WHEELBASE_PARAMETER()
{
float fmotor_wheelbasex(0.0);
float fmotor_wheelbasey(0.0);
float fmotor_wheelbasez(0.0);
memcpy(&fmotor_wheelbasex,ep_buff[EP_82_DATA_IDX]._buffer,4);
g_machine.s_machine_config.x_axis._motor_wheelbase=((g_machine.s_machine_config.x_axis._scale_resolution)*(g_machine._motor_pulse_num))/(fmotor_wheelbasex*1000);
memcpy(&fmotor_wheelbasey,ep_buff[EP_82_DATA_IDX]._buffer+4,4);
g_machine.s_machine_config.y_axis._motor_wheelbase=((g_machine.s_machine_config.y_axis._scale_resolution)*(g_machine._motor_pulse_num))/(fmotor_wheelbasey*1000);
memcpy(&fmotor_wheelbasez,ep_buff[EP_82_DATA_IDX]._buffer+8,4);
g_machine.s_machine_config.z_axis._motor_wheelbase=((g_machine.s_machine_config.z_axis._scale_resolution)*(g_machine._motor_pulse_num))/(fmotor_wheelbasez*1000);
return SSI_STATUS_MOTION_NORMAL;
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_READ_ZOOM_MOTION_STATUS()
{
g_machine.s_status._bIsZMMotionFinished=*(ep_buff[EP_82_DATA_IDX]._buffer);
return SSI_STATUS_MOTION_NORMAL;
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_READ_INTERRUPT_MESSAGE()
{
g_machine.InterruptFlag[0]=*(ep_buff[EP_81_DATA_IDX]._buffer);
g_machine.InterruptFlag[1]=*(ep_buff[EP_81_DATA_IDX]._buffer+1);
return SSI_STATUS_MOTION_NORMAL;
}