4213 lines
150 KiB
C++
4213 lines
150 KiB
C++
|
||
|
||
#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;
|
||
}
|