8138 lines
279 KiB
C++
8138 lines
279 KiB
C++
#include "stdafx.h"
|
||
#include <math.h>
|
||
#include "SO7_Proto.h"
|
||
#include "..\Tools\UsbUtility\UsbUtil\EF1A_Manual_Machine.h"
|
||
#define MY_CONFIG 1
|
||
#define MAX_DEVPATH_LENGTH 256
|
||
#define ENDPOINT_TIMEOUT 500
|
||
#define MAX_IN_BUFF_SIZE 1024
|
||
#define M_PI 3.14159265358979323846
|
||
|
||
const INT HOME_TIMEOUT=5000;
|
||
const INT MOVETO_TIMEOUT=60000;
|
||
INT MIN_SLEEP_TIME=20;
|
||
const DOUBLE ROTARY_MMtoScale_RESOLUTION=0.0005;
|
||
//***** 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;
|
||
s_so7_machine_interface_config CSO7_Proto::g_so7_config;
|
||
|
||
usb_dev_handle *CSO7_Proto::g_dev=NULL;
|
||
CLogger *CSO7_Proto::g_pLogger=NULL;
|
||
HANDLE CSO7_Proto::g_hHomedEvent = 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_hSerDialUsbThread 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;
|
||
case CT_GET_INTERRUPT_MSG:
|
||
_process_SO7_CMD_GET_INTERRUPT_MSG(ep_buff[EP_02_CMD_IDX]._save_send_cmd1);
|
||
break;
|
||
case CT_GET_MOTION_FINISHED_CNTS:
|
||
_process_SO7_CMD_GET_MOTION_CNTS();
|
||
break;
|
||
case CT_GET_MOTION_SEGMENT_DIS:
|
||
_process_SO7_CMD_GET_MOTION_SEGMENT_DIS(ep_buff[EP_02_CMD_IDX]._save_send_cmd1+1,ep_buff[EP_02_CMD_IDX]._save_send_cmd2);
|
||
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;
|
||
case CT_READ_IO_DAT:
|
||
_process_SO7_CMD_READ_INPUT_PORT_STATUS();
|
||
break;
|
||
case CT_READ_SEC_REALX:
|
||
_process_SO7_CMD_READ_ZSIGNAL_POS_X();
|
||
break;
|
||
case CT_READ_SEC_REALY:
|
||
_process_SO7_CMD_READ_ZSIGNAL_POS_Y();
|
||
break;
|
||
case CT_READ_SEC_REALZ:
|
||
_process_SO7_CMD_READ_ZSIGNAL_POS_Z();
|
||
break;
|
||
case CT_WRITE_SYSTEM:
|
||
_process_SO7_CMD_WRITE_DATA_TO_FPGA();
|
||
break;
|
||
case CT_READ_SYSTEM:
|
||
_process_SO7_CMD_READ_DATA_FROM_FPGA();
|
||
break;
|
||
case CT_READ_SEQ_NUMBER:
|
||
_process_SO7_CMD_GET_SEQ_NUMBER();
|
||
break;
|
||
case CT_READ_TRIG_PULSE_PARA:
|
||
_process_SO7_CMD_READ_TRIG_PULSE_PARA();
|
||
break;
|
||
case CT_WRITE_TRIG_PULSE_PARA:
|
||
_process_SO7_CMD_WRITE_TRIG_PULSE_PARA();
|
||
break;
|
||
case CT_READ_X_CONTROL_MODE:
|
||
case CT_READ_Y_CONTROL_MODE:
|
||
case CT_READ_Z_CONTROL_MODE:
|
||
_process_SO7_CMD_GET_CONTROL_MODE();
|
||
break;
|
||
case CT_WRITE_EXTRA_IO:
|
||
_process_SO7_CMD_SET_EXTRA_IO_STATUS();
|
||
break;
|
||
case CT_READ_EXTRA_IO:
|
||
_process_SO7_CMD_GET_EXTRA_IO_STATUS();
|
||
break;
|
||
case CT_READ_MOTION_TYPE:
|
||
_process_SO7_CMD_GET_MOTION_TYPE();
|
||
break;
|
||
case CT_WRITE_MOTION_TYPE:
|
||
_process_SO7_CMD_SET_MOTION_TYPE();
|
||
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;
|
||
case CT_GET_SYSTEM_VER_INFO:
|
||
_process_SO7_CMD_READ_FIRMWARE_VERSION_INFO();
|
||
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;
|
||
};
|
||
for (int i=0;i<20;i++)
|
||
{
|
||
for (int j=0;j<2;j++)
|
||
{
|
||
g_machine.GetInterruptMsg[i][j]=0;
|
||
}
|
||
}
|
||
g_machine.IsSupportReadInterrputMsg=FALSE;
|
||
g_machine.IsOffline=FALSE;
|
||
g_machine.FPGAData=0;
|
||
g_machine.FirmwareVer=FirmwareVer_3_X;
|
||
g_machine.x._Move_Speed_Gear =2;
|
||
g_machine.y._Move_Speed_Gear =2;
|
||
g_machine.z._Move_Speed_Gear =2;
|
||
g_machine.x._MoveTo_Speed_Gear =0;
|
||
g_machine.y._MoveTo_Speed_Gear =0;
|
||
g_machine.z._MoveTo_Speed_Gear =0;
|
||
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._ZSignal_pos._long_=0;
|
||
g_machine.y._ZSignal_pos._long_=0;
|
||
g_machine.z._ZSignal_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.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.dRotaryCirDisTestZSig=100;
|
||
g_machine.Light_Size=0;
|
||
g_machine.Light_Switch=0;
|
||
g_machine.SEQ_NUMBER=0;
|
||
|
||
g_machine.Arm_MotionStartCnts[0]=30;
|
||
g_machine.Arm_MotionStartCnts[1]=50;
|
||
g_machine.Arm_MotionStartCnts[2]=60;
|
||
g_machine.Arm_MotionStartCnts[3]=70;
|
||
g_machine.Arm_MotionStartCnts[4]=80;
|
||
g_machine.Arm_MotionStopCnts[0]=5;
|
||
g_machine.Arm_MotionStopCnts[1]=10;
|
||
g_machine.Arm_MotionStopCnts[2]=15;
|
||
g_machine.Arm_MotionStopCnts[3]=20;
|
||
g_machine.Arm_MotionStopCnts[4]=20;
|
||
g_machine.Arm_MotionSpeedGear=0;//4,3,2,1,5
|
||
|
||
g_machine.s_machine_config.x_axis._MoveToSpeed[0]=0.0;
|
||
g_machine.s_machine_config.x_axis._MoveToSpeed[1]=0.0;
|
||
g_machine.s_machine_config.x_axis._MotionSpeedScale=1.0;
|
||
g_machine.s_machine_config.y_axis._MoveToSpeed[0]=0.0;
|
||
g_machine.s_machine_config.y_axis._MoveToSpeed[1]=0.0;
|
||
g_machine.s_machine_config.y_axis._MotionSpeedScale=1.0;
|
||
g_machine.s_machine_config.z_axis._MoveToSpeed[0]=0.0;
|
||
g_machine.s_machine_config.z_axis._MoveToSpeed[1]=0.0;
|
||
g_machine.s_machine_config.z_axis._MotionSpeedScale=1.0;
|
||
|
||
g_machine.s_machine_config.x_axis._dMinSpeed = 0.0;
|
||
g_machine.s_machine_config.x_axis._dMaxSpeed = 10.0;
|
||
g_machine.s_machine_config.x_axis._dMinAccel = 0.0;
|
||
g_machine.s_machine_config.x_axis._dMaxAccel = 10.0;
|
||
g_machine.s_machine_config.y_axis._dMinSpeed = 0.0;
|
||
g_machine.s_machine_config.y_axis._dMaxSpeed = 10.0;
|
||
g_machine.s_machine_config.y_axis._dMinAccel = 0.0;
|
||
g_machine.s_machine_config.y_axis._dMaxAccel = 10.0;
|
||
g_machine.s_machine_config.z_axis._dMinSpeed = 0.0;
|
||
g_machine.s_machine_config.z_axis._dMaxSpeed = 10.0;
|
||
g_machine.s_machine_config.z_axis._dMinAccel = 0.0;
|
||
g_machine.s_machine_config.z_axis._dMaxAccel = 10.0;
|
||
|
||
g_machine.s_machine_config.zm_axis._ProductID=_T("So7123456");
|
||
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.x_axis._MotionSegmentDis[0]=100;
|
||
g_machine.s_machine_config.x_axis._MotionSegmentDis[1]=1000;
|
||
g_machine.s_machine_config.x_axis._MotionSegmentDis[2]=5000;
|
||
g_machine.s_machine_config.y_axis._MotionSegmentDis[0]=100;
|
||
g_machine.s_machine_config.y_axis._MotionSegmentDis[1]=1000;
|
||
g_machine.s_machine_config.y_axis._MotionSegmentDis[2]=5000;
|
||
g_machine.s_machine_config.z_axis._MotionSegmentDis[0]=100;
|
||
g_machine.s_machine_config.z_axis._MotionSegmentDis[1]=1000;
|
||
g_machine.s_machine_config.z_axis._MotionSegmentDis[2]=5000;
|
||
g_machine.MotionType=-1;
|
||
|
||
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;
|
||
g_machine.InPortStatus=0;
|
||
g_machine.s_status._bXYZZMIdle=true;
|
||
so7_motion_cfg_set_default_para();
|
||
so7_config_cfg_set_default_para();
|
||
m_bHomingActive = false;
|
||
g_pLogger = new CLogger(_T("\\Log\\HSI_So7_EF1.Log"));
|
||
isEF1AController = FALSE;
|
||
g_EF1AUsbDevice = nullptr;
|
||
};
|
||
|
||
//******************************************************************************
|
||
CSO7_Proto::~CSO7_Proto()
|
||
{
|
||
for (int i=0;i<lEPSIZE;i++)
|
||
{
|
||
free(ep_buff[i]._buffer);
|
||
};
|
||
if (g_pLogger)
|
||
{
|
||
delete g_pLogger;
|
||
g_pLogger = NULL;
|
||
}
|
||
if (g_EF1AUsbDevice)
|
||
{
|
||
delete g_EF1AUsbDevice;
|
||
g_EF1AUsbDevice = nullptr;
|
||
}
|
||
}
|
||
|
||
#pragma warning(disable:4996)
|
||
//==============================================================================
|
||
//******************************************************************************
|
||
|
||
SSI_STATUS_MOTION CSO7_Proto::so7_config_cfg_set_default_para()
|
||
{
|
||
g_so7_config.m_DestinationX=0.0;
|
||
g_so7_config.m_DestinationY=0.0;
|
||
g_so7_config.m_DestinationZ=0.0;
|
||
g_so7_config.m_PrecisionX=0.1;
|
||
g_so7_config.m_PrecisionY=0.1;
|
||
g_so7_config.m_PrecisionZ=0.1;
|
||
g_so7_config.m_ShiftPositionX=0.0;
|
||
g_so7_config.m_ShiftPositionY=0.0;
|
||
g_so7_config.m_ShiftPositionZ=0.0;
|
||
g_so7_config.m_RetryTimes=1;
|
||
g_so7_config.m_MotionRetryCnt=0;
|
||
g_so7_config.m_EnCloseLoop=FALSE;
|
||
g_so7_config.m_MotionType=0;
|
||
g_so7_config.m_CntThreadSleepVal=550000;
|
||
g_so7_config.m_MachineType=MACHINE_SO7_CONTROLLER;
|
||
g_so7_config.m_VideoCardType=0;
|
||
g_so7_config.GetInterruptMsgMethod=E_GET_INTERRUPT_MSG_INQUIRY;
|
||
g_so7_config.m_WriteDataSleepTime=0;
|
||
g_so7_config.m_AccuraErrPulseX=1;
|
||
g_so7_config.m_AccuraErrPulseY=1;
|
||
g_so7_config.m_AccuraErrPulseZ=1;
|
||
g_so7_config.m_EQUIDIS_X=0;
|
||
g_so7_config.m_EQUIDIS_Y=0;
|
||
g_so7_config.m_EQUIDIS_Z=0;
|
||
g_so7_config.m_FirmWareVersion=FirmwareVer_3_X;
|
||
g_so7_config.m_CNC_Deadlock_Solution=0;
|
||
g_so7_config.m_CNC_Deadlock_JudgeMaxCnts=6;
|
||
g_so7_config.m_TouchProbeEnable=0;
|
||
g_so7_config.m_bJoyStickEnable=0;
|
||
g_so7_config.m_bMoveToEnable = 0;
|
||
g_so7_config.m_bMoveToCount = 3;
|
||
g_so7_config.m_bDebugOutputEnable = 0;
|
||
g_so7_config.m_FootSwitchEnable=0;
|
||
g_so7_config.m_STIL_CCS_PRIMA_Enable=0;
|
||
g_so7_config.m_ART_PCI8622_Enable=0;
|
||
g_so7_config.m_bTrigIOEnable=1;
|
||
g_so7_config.m_DeviceSleepTime=0;
|
||
g_so7_config.m_IsVideocardVacant=0;
|
||
for (int i=0;i<5;i++)
|
||
{
|
||
g_so7_config.m_iMotionStartCnts[i]=0;
|
||
g_so7_config.m_iMotionStopCnts[i]=0;
|
||
}
|
||
g_so7_config.m_iTrigHoldTimeCnts=8;
|
||
g_so7_config.m_iHomeMode=CT_HOME_XYZ;
|
||
for (int i=0;i<4;i++)
|
||
{
|
||
g_so7_config.m_SV4000E_DenoisePara[i]=70;
|
||
}
|
||
g_so7_config.m_EnJudgeMotionStatus=FALSE;
|
||
g_so7_config.m_DisableControllerMotionStatus=FALSE;
|
||
g_so7_config.m_bOptexCD5Enable=0;
|
||
g_so7_config.m_iOptexCD5ComPort=1;
|
||
g_so7_config.m_iOptexCD5BaudRate=115200;
|
||
g_so7_config.m_iSo7IllumType=1;
|
||
g_so7_config.m_iSo7IllumComPort=1;
|
||
g_so7_config.m_iSo7IllumBaudRate=4800;
|
||
g_so7_config.m_iSo7IllumResponseTime = 50;
|
||
g_so7_config.m_iSo7DoubleSurface = 0;
|
||
|
||
for (int i=0;i<3;i++)
|
||
{
|
||
g_so7_config.m_AxisResolution[i]=0.0;
|
||
}
|
||
g_so7_config.m_ZoomType=3;
|
||
g_so7_config.Navitar_Precision=0;
|
||
g_so7_config.Navitar_Timeout=30;
|
||
g_so7_config.Navitar_Motor_GoHomeV=5;
|
||
g_so7_config.Navitar_ZoomPosSpeed=20;
|
||
g_so7_config.Navitar_ZoomPosSpeed_Accurate=5;
|
||
g_so7_config.Navitar_ZoomStartPos=24000.0;
|
||
g_so7_config.Navitar_ZoomEndPos=3000.0;
|
||
g_so7_config.Navitar_ZoomBackPos=500.0;
|
||
g_so7_config.Navitar_ZoomDeadband=20.0;
|
||
g_so7_config.Navitar_ZoomFinishPos=1;
|
||
g_so7_config.Navitar_ZoomFinishCnts=3;
|
||
g_so7_config.Navitar_SleepTime=0;
|
||
|
||
g_so7_config.Navitar_SerialComPort=0;
|
||
g_so7_config.Navitar_ZoomOrgPos=0.0;
|
||
g_so7_config.Navitar_ZoomScale=0.0;
|
||
g_so7_config.Navitar_MotorSpeedFast=5;
|
||
g_so7_config.Navitar_MotorSpeedSlow=3;
|
||
g_so7_config.Navitar_iReadingInterval=0;
|
||
|
||
g_so7_config.m_iSo7TempSensorEnable=0;
|
||
g_so7_config.m_iSo7TempComPort=1;
|
||
g_so7_config.m_iSo7TempBaudRate=38400;
|
||
g_so7_config.m_iFreeMemoryInterval=0;
|
||
|
||
g_so7_config.m_iLJVSleepTime=50;
|
||
g_so7_config.m_iLJGSleepTime=50;
|
||
g_so7_config.m_iTestDll_Enable=0;
|
||
g_so7_config.m_isOpenIO=0;
|
||
g_so7_config.m_PositionX = 0.0;
|
||
g_so7_config.m_PositionY = 0.0;
|
||
g_so7_config.m_PositionZ = 0.0;
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
SSI_STATUS_MOTION CSO7_Proto::so7_motion_cfg_set_default_para()
|
||
{
|
||
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.005;
|
||
g_machine.s_machine_config.y_axis._motor_precision = 0.005;
|
||
g_machine.s_machine_config.z_axis._motor_precision = 0.005;
|
||
|
||
|
||
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=200;
|
||
g_machine.s_machine_config.y_axis._neg_working_limit=0;
|
||
g_machine.s_machine_config.y_axis._pos_working_limit=100;
|
||
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.r_axis.m_RotaryCircleDis=7.2;
|
||
g_machine.s_machine_config.r_axis.m_RotaryCirclePulse=14400;
|
||
g_machine.s_machine_config.r_axis.m_RotaryAxisNO=MACHINE_AXIS_NONE;
|
||
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
//=========================================================================================
|
||
SSI_STATUS_MOTION CSO7_Proto::Save_So7_Motion_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="[SPEED PARAMETER]";
|
||
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,"%.4f",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,"%.4f",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,"%.4f",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,"%.4f",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,"%.4f",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,"%.4f",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,"%.4f",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,"%.4f",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,"%.4f",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,"%.4f",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,"%.4f",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,"%.4f",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,"%.4f",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,"%.4f",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,"%.4f",g_machine.s_machine_config.z_axis._speed_slow_dis[4]);
|
||
fprintf(m_pOutFile, "\n");
|
||
fprintf(m_pOutFile,"%s", ";\n");
|
||
|
||
|
||
outBuff = "MOVETOSPEED_FAST_X=";
|
||
fprintf(m_pOutFile, "%s", outBuff);
|
||
fprintf(m_pOutFile, "%9.8f", g_machine.s_machine_config.x_axis._MoveToSpeed[0]);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff = "MOVETOSPEED_SLOW_X=";
|
||
fprintf(m_pOutFile, "%s", outBuff);
|
||
fprintf(m_pOutFile, "%9.8f", g_machine.s_machine_config.x_axis._MoveToSpeed[1]);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff = "MOVETOSPEED_SCALE_X=";
|
||
fprintf(m_pOutFile, "%s", outBuff);
|
||
fprintf(m_pOutFile, "%9.8f", g_machine.s_machine_config.x_axis._MotionSpeedScale);
|
||
fprintf(m_pOutFile, "\n");
|
||
fprintf(m_pOutFile, "%s", ";\n");
|
||
|
||
outBuff = "MOVETOSPEED_FAST_Y=";
|
||
fprintf(m_pOutFile, "%s", outBuff);
|
||
fprintf(m_pOutFile, "%9.8f", g_machine.s_machine_config.y_axis._MoveToSpeed[0]);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff = "MOVETOSPEED_SLOW_Y=";
|
||
fprintf(m_pOutFile, "%s", outBuff);
|
||
fprintf(m_pOutFile, "%9.8f", g_machine.s_machine_config.y_axis._MoveToSpeed[1]);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff = "MOVETOSPEED_SCALE_Y=";
|
||
fprintf(m_pOutFile, "%s", outBuff);
|
||
fprintf(m_pOutFile, "%9.8f", g_machine.s_machine_config.y_axis._MotionSpeedScale);
|
||
fprintf(m_pOutFile, "\n");
|
||
fprintf(m_pOutFile, "%s", ";\n");
|
||
|
||
outBuff = "MOVETOSPEED_FAST_Z=";
|
||
fprintf(m_pOutFile, "%s", outBuff);
|
||
fprintf(m_pOutFile, "%9.8f", g_machine.s_machine_config.z_axis._MoveToSpeed[0]);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff = "MOVETOSPEED_SLOW_Z=";
|
||
fprintf(m_pOutFile, "%s", outBuff);
|
||
fprintf(m_pOutFile, "%9.8f", g_machine.s_machine_config.z_axis._MoveToSpeed[1]);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff = "MOVETOSPEED_SCALE_Z=";
|
||
fprintf(m_pOutFile, "%s", outBuff);
|
||
fprintf(m_pOutFile, "%9.8f", g_machine.s_machine_config.z_axis._MotionSpeedScale);
|
||
fprintf(m_pOutFile, "\n");
|
||
fprintf(m_pOutFile, "%s", ";\n");
|
||
|
||
outBuff="X_MOTOR_PRECISION=";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile,"%.4f",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,"%.4f",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,"%.4f",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,"%.4f",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,"%.4f",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,"%.4f",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");
|
||
|
||
outBuff = "[ROTARY TABLE]";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff="ROTARY_AXIS_NUMBER=";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile,"%d", g_machine.s_machine_config.r_axis.m_RotaryAxisNO);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff="ROTARY_CIR_DIS=";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile,"%.6f", g_machine.s_machine_config.r_axis.m_RotaryCircleDis);
|
||
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,"%.9f", g_machine.s_machine_config.x_axis._scale_resolution*0.001);
|
||
fprintf(m_pOutFile, "\n");
|
||
|
||
outBuff="Y_SCALE_RESOLUTION=";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile, "%.9f", g_machine.s_machine_config.y_axis._scale_resolution*0.001);
|
||
fprintf(m_pOutFile, "\n");
|
||
|
||
outBuff="Z_SCALE_RESOLUTION=";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile, "%.9f", g_machine.s_machine_config.z_axis._scale_resolution*0.001);
|
||
fprintf(m_pOutFile, "\n");
|
||
fprintf(m_pOutFile,"%s", ";\n");
|
||
|
||
outBuff="X_NEG_WORKING_LIMIT=";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile,"%.4f", 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,"%.4f", 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,"%.4f", 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,"%.4f", 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,"%.4f", 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,"%.4f", 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_So7_Motion_Inifile(CString cso7IniFile)
|
||
{
|
||
FILE *hConfigFile = NULL;
|
||
char szLine[MAX_BUFF_SIZE];
|
||
char *token = NULL;
|
||
char seps[] = " =,\t\n";
|
||
char cTemp[100]={0};
|
||
CString csSO7ConfigFile =cso7IniFile;
|
||
_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);
|
||
if(!_stricmp(token,"MOVETOSPEED_FAST_X"))
|
||
{
|
||
token = strtok( NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy(cTemp,token);
|
||
g_machine.s_machine_config.x_axis._MoveToSpeed[0]=atof(cTemp);
|
||
}
|
||
}
|
||
else if(!_stricmp(token,"MOVETOSPEED_SLOW_X"))
|
||
{
|
||
token = strtok( NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy(cTemp,token);
|
||
g_machine.s_machine_config.x_axis._MoveToSpeed[1]=atof(cTemp);
|
||
}
|
||
}
|
||
else if(!_stricmp(token,"MOVETOSPEED_SCALE_X"))
|
||
{
|
||
token = strtok( NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy(cTemp,token);
|
||
g_machine.s_machine_config.x_axis._MotionSpeedScale=atof(cTemp);
|
||
}
|
||
}
|
||
else if(!_stricmp(token,"MOVETOSPEED_FAST_Y"))
|
||
{
|
||
token = strtok( NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy(cTemp,token);
|
||
g_machine.s_machine_config.y_axis._MoveToSpeed[0]=atof(cTemp);
|
||
}
|
||
}
|
||
else if(!_stricmp(token,"MOVETOSPEED_SLOW_Y"))
|
||
{
|
||
token = strtok( NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy(cTemp,token);
|
||
g_machine.s_machine_config.y_axis._MoveToSpeed[1]=atof(cTemp);
|
||
}
|
||
}
|
||
else if(!_stricmp(token,"MOVETOSPEED_SCALE_Y"))
|
||
{
|
||
token = strtok( NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy(cTemp,token);
|
||
g_machine.s_machine_config.y_axis._MotionSpeedScale=atof(cTemp);
|
||
}
|
||
}
|
||
else if(!_stricmp(token,"MOVETOSPEED_FAST_Z"))
|
||
{
|
||
token = strtok( NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy(cTemp,token);
|
||
g_machine.s_machine_config.z_axis._MoveToSpeed[0]=atof(cTemp);
|
||
}
|
||
}
|
||
else if(!_stricmp(token,"MOVETOSPEED_SLOW_Z"))
|
||
{
|
||
token = strtok( NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy(cTemp,token);
|
||
g_machine.s_machine_config.z_axis._MoveToSpeed[1]=atof(cTemp);
|
||
}
|
||
}
|
||
else if(!_stricmp(token,"MOVETOSPEED_SCALE_Z"))
|
||
{
|
||
token = strtok( NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy(cTemp,token);
|
||
g_machine.s_machine_config.z_axis._MotionSpeedScale=atof(cTemp);
|
||
}
|
||
}
|
||
// X1
|
||
else 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);
|
||
}
|
||
}
|
||
else if (!_stricmp(token,"ROTARY_AXIS_NUMBER"))
|
||
{
|
||
token = strtok( NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy(cTemp,token);
|
||
g_machine.s_machine_config.r_axis.m_RotaryAxisNO=atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token,"ROTARY_CIR_DIS"))
|
||
{
|
||
token = strtok( NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy(cTemp,token);
|
||
g_machine.dRotaryCirDisTestZSig=atof(cTemp);
|
||
g_machine.s_machine_config.r_axis.m_RotaryCircleDis=atof(cTemp);
|
||
g_machine.s_machine_config.r_axis.m_RotaryCirclePulse=g_machine.s_machine_config.r_axis.m_RotaryCircleDis/ROTARY_MMtoScale_RESOLUTION;
|
||
}
|
||
}
|
||
else if (!_stricmp(token,"ROTARY_CIR_DIS_TEST_Z_SIG"))
|
||
{
|
||
token = strtok( NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy(cTemp,token);
|
||
g_machine.dRotaryCirDisTestZSig=atof(cTemp);
|
||
}
|
||
}
|
||
//=====================[WORKTABLE]========================
|
||
else if(!_stricmp(token, "X_SCALE_RESOLUTION"))
|
||
{
|
||
token = strtok( NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy(cTemp,token);
|
||
double dTmp=atof(cTemp);
|
||
g_machine.s_machine_config.x_axis._scale_resolution=1000.0*dTmp;
|
||
}
|
||
}
|
||
else if(!_stricmp(token, "Y_SCALE_RESOLUTION"))
|
||
{
|
||
token = strtok( NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy(cTemp,token);
|
||
double dTmp=atof(cTemp);
|
||
g_machine.s_machine_config.y_axis._scale_resolution=1000.0*dTmp;
|
||
}
|
||
}
|
||
else if(!_stricmp(token, "Z_SCALE_RESOLUTION"))
|
||
{
|
||
token = strtok( NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy(cTemp,token);
|
||
double dTmp=atof(cTemp);
|
||
g_machine.s_machine_config.z_axis._scale_resolution=1000.0*dTmp;
|
||
}
|
||
}
|
||
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::Load_So7_Motion_Config(int _LoadType)
|
||
{
|
||
CString csAppPath;
|
||
GetAppPath(csAppPath);
|
||
CString csSO7MotionConfigFile(_T(""));
|
||
if(_LoadType == 1)
|
||
{
|
||
csSO7MotionConfigFile = csAppPath + _T("\\Config\\so7_motion.ini");
|
||
}
|
||
else
|
||
{
|
||
csSO7MotionConfigFile = csAppPath + _T("\\So7Motion_Utility.ini");
|
||
}
|
||
|
||
return Load_So7_Motion_Inifile(csSO7MotionConfigFile);
|
||
}
|
||
//=========================================================================================
|
||
SSI_STATUS_MOTION CSO7_Proto::Save_So7_Motion_Config(int _SaveType)
|
||
{
|
||
CString csAppPath;
|
||
GetAppPath(csAppPath);
|
||
CString csSO7MotionConfigFile(_T(""));
|
||
if (_SaveType == 0)
|
||
{
|
||
csSO7MotionConfigFile = csAppPath + _T("\\So7Motion_Utility.ini");
|
||
Save_So7_Motion_Inifile(csSO7MotionConfigFile);
|
||
}
|
||
return Load_So7_Motion_Inifile(csSO7MotionConfigFile);
|
||
}
|
||
|
||
//=========================================================================================
|
||
SSI_STATUS_MOTION CSO7_Proto::Save_So7_Config_Inifile()
|
||
{
|
||
FILE* m_pOutFile= NULL;
|
||
char *outBuff = NULL;
|
||
CString csAppPath;
|
||
GetAppPath(csAppPath);
|
||
CString cFileName=csAppPath+_T("\\So7Config_Utility.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");
|
||
fprintf(m_pOutFile, ";\n");
|
||
|
||
outBuff="[CONTROLLER]";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff="CLOSE_LOOP_ENABLED=";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile,"%d", g_so7_config.m_EnCloseLoop);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff="MOTION_RETRY_TIMES=";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile,"%d", g_so7_config.m_RetryTimes);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff="SHIFT_POSITION_X=";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile,"%.6f", g_so7_config.m_ShiftPositionX);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff="SHIFT_POSITION_Y=";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile,"%.6f", g_so7_config.m_ShiftPositionY);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff="SHIFT_POSITION_Z=";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile,"%.6f", g_so7_config.m_ShiftPositionZ);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff="GET_USB_MESSAGE_METHOD=";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile,"%d", g_so7_config.GetInterruptMsgMethod);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff="WRITE_DATA_SLEEP_TIME=";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile,"%d", g_so7_config.m_WriteDataSleepTime);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff="ACCURA_ERROR_PULSE_X=";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile,"%d", g_so7_config.m_AccuraErrPulseX);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff="ACCURA_ERROR_PULSE_Y=";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile,"%d", g_so7_config.m_AccuraErrPulseY);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff="ACCURA_ERROR_PULSE_Z=";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile,"%d", g_so7_config.m_AccuraErrPulseZ);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff="EQUIDISTANCE_PULSE_X=";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile,"%d", g_so7_config.m_EQUIDIS_X);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff="EQUIDISTANCE_PULSE_Y=";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile,"%d", g_so7_config.m_EQUIDIS_Y);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff="EQUIDISTANCE_PULSE_Z=";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile,"%d", g_so7_config.m_EQUIDIS_Z);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff="CNC_DEADLOCK_SOLUTION=";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile,"%d", g_so7_config.m_CNC_Deadlock_Solution);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff="CNC_DEADLOCK_MAX_CNTS=";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile,"%d", g_so7_config.m_CNC_Deadlock_JudgeMaxCnts);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff="TOUCH_PROBE_ENABLE=";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile,"%d", g_so7_config.m_TouchProbeEnable);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff="FOOT_SWITCH_ENABLE=";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile,"%d", g_so7_config.m_FootSwitchEnable);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff="JOYSTICK_ENABLE=";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile,"%d", g_so7_config.m_bJoyStickEnable);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff="CCS_PRIMA_ENABLE=";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile,"%d", g_so7_config.m_STIL_CCS_PRIMA_Enable);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff = "MOVE_TO_CLOSELOOP_ENABLE=";
|
||
fprintf(m_pOutFile, "%s", outBuff);
|
||
fprintf(m_pOutFile, "%d", g_so7_config.m_bMoveToEnable);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff = "MOVE_TO_CLOSELOOP_COUNT=";
|
||
fprintf(m_pOutFile, "%s", outBuff);
|
||
fprintf(m_pOutFile, "%d", g_so7_config.m_bMoveToCount);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff="DEBUG_LOG_ENABLE=";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile,"%d", g_so7_config.m_bDebugOutputEnable);
|
||
fprintf(m_pOutFile, "\n");
|
||
fprintf(m_pOutFile, ";\n");
|
||
|
||
outBuff="[VIDEOCARD]";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff="SDK3000_SLEEP_COUNT=";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile,"%d", g_so7_config.m_CntThreadSleepVal);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff="SV4000E_DENOISE_PARA_CHANNEL1=";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile,"%d", g_so7_config.m_SV4000E_DenoisePara[0]);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff="SV4000E_DENOISE_PARA_CHANNEL2=";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile,"%d", g_so7_config.m_SV4000E_DenoisePara[1]);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff="SV4000E_DENOISE_PARA_CHANNEL3=";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile,"%d", g_so7_config.m_SV4000E_DenoisePara[2]);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff="SV4000E_DENOISE_PARA_CHANNEL4=";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile,"%d", g_so7_config.m_SV4000E_DenoisePara[3]);
|
||
fprintf(m_pOutFile, "\n");
|
||
fprintf(m_pOutFile, ";\n");
|
||
|
||
outBuff="[HSI]";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff="MACHINE_CONTROLLER_TYPE=";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile,"%d", g_so7_config.m_MachineType);
|
||
fprintf(m_pOutFile, "\n");
|
||
outBuff="MACHINE_VIDEOCARD_TYPE=";
|
||
fprintf(m_pOutFile,"%s", outBuff);
|
||
fprintf(m_pOutFile,"%d", g_so7_config.m_VideoCardType);
|
||
fprintf(m_pOutFile, "\n");
|
||
fprintf(m_pOutFile, ";\n");
|
||
|
||
fclose(m_pOutFile);
|
||
}
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
//******************************************************************************
|
||
SSI_STATUS_MOTION CSO7_Proto::Load_So7_Config_Inifile(int _LoadType)
|
||
{
|
||
FILE *hConfigFile = NULL;
|
||
char szLine[MAX_BUFF_SIZE];
|
||
char *token = NULL;
|
||
char seps[] = " =,\t\n";
|
||
char cTemp[100]={0};
|
||
CString csAppPath;
|
||
GetAppPath(csAppPath);
|
||
CString csSO7ConfigFile(_T(""));
|
||
if (_LoadType==1)
|
||
{
|
||
csSO7ConfigFile=csAppPath+_T("\\so7_config.ini");
|
||
}
|
||
if (_LoadType==2)
|
||
{
|
||
static bool bFirst(true);
|
||
if (!bFirst)
|
||
{
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
bFirst = false;
|
||
csSO7ConfigFile = csAppPath + _T("\\Config\\so7_config.ini");
|
||
}
|
||
else
|
||
{
|
||
csSO7ConfigFile=csAppPath+_T("\\So7Config_Utility.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);
|
||
//===============AUTO ZOOM==================
|
||
if (!_stricmp(token, "ZOOM_COM_PORT"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.SerialComPort = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "ZOOM_START_DEG"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.ZoomStartPos = atof(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "ZOOM_END_DEG"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.ZoomEndPos = atof(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "ZOOM_ORG_DEG"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.ZoomOrgPos = atof(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "ZOOM_DEADBAND_DEG"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.ZoomDeadband = atof(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "ZOOM_PULSE_PER_DEG"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.ZoomScale = atof(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "ZOOM_READING_INTERVAL_TIME"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.iReadingInterval = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "ZOOM_MOTOR_SPEED_FAST"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.MotorSpeedFast = static_cast<short>(atoi(cTemp));
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "ZOOM_MOTOR_SPEED_SLOW"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.MotorSpeedSlow = static_cast<short>(atoi(cTemp));
|
||
}
|
||
}
|
||
//=================MOTION========================
|
||
else if (!_stricmp(token, "CLOSE_LOOP_ENABLED"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_EnCloseLoop = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "MOTION_RETRY_TIMES"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_RetryTimes = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "SHIFT_POSITION_X"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_ShiftPositionX = atof(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "SHIFT_POSITION_Y"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_ShiftPositionY = atof(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "SHIFT_POSITION_Z"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_ShiftPositionZ = atof(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "GET_USB_MESSAGE_METHOD"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.GetInterruptMsgMethod = static_cast<char>(atoi(cTemp));
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "WRITE_DATA_SLEEP_TIME"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_WriteDataSleepTime = atoi(cTemp);
|
||
MIN_SLEEP_TIME = g_so7_config.m_WriteDataSleepTime;
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "ACCURA_ERROR_PULSE_X"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_AccuraErrPulseX = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "ACCURA_ERROR_PULSE_Y"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_AccuraErrPulseY = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "ACCURA_ERROR_PULSE_Z"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_AccuraErrPulseZ = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "EQUIDISTANCE_PULSE_X"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_EQUIDIS_X = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "EQUIDISTANCE_PULSE_Y"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_EQUIDIS_Y = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "EQUIDISTANCE_PULSE_Z"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_EQUIDIS_Z = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "X_SCALE_RESOLUTION"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_AxisResolution[0] = atof(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "Y_SCALE_RESOLUTION"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_AxisResolution[1] = atof(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "Z_SCALE_RESOLUTION"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_AxisResolution[2] = atof(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "CNC_DEADLOCK_SOLUTION"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_CNC_Deadlock_Solution = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "CNC_DEADLOCK_MAX_CNTS"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_CNC_Deadlock_JudgeMaxCnts = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "TOUCH_PROBE_ENABLE"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_TouchProbeEnable = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "FOOT_SWITCH_ENABLE"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_FootSwitchEnable = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "JOYSTICK_ENABLE"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_bJoyStickEnable = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "IO_PURPOSE_EXT_TRIG"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_bTrigIOEnable = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "EXT_TRIG_HOLD_TIME"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_iTrigHoldTimeCnts = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "MOTION_START_COUNTS_GEAR1"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_iMotionStartCnts[0] = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "MOTION_STOP_COUNTS_GEAR1"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_iMotionStopCnts[0] = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "MOTION_START_COUNTS_GEAR2"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_iMotionStartCnts[1] = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "MOTION_STOP_COUNTS_GEAR2"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_iMotionStopCnts[1] = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "MOTION_START_COUNTS_GEAR3"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_iMotionStartCnts[2] = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "MOTION_STOP_COUNTS_GEAR3"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_iMotionStopCnts[2] = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "MOTION_START_COUNTS_GEAR4"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_iMotionStartCnts[3] = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "MOTION_STOP_COUNTS_GEAR4"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_iMotionStopCnts[3] = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "MOTION_START_COUNTS_GEAR5"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_iMotionStartCnts[4] = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "MOTION_STOP_COUNTS_GEAR5"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_iMotionStopCnts[4] = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "EXT_DEVICE_SLEEEP_TIME"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_DeviceSleepTime = atoi(cTemp);
|
||
}
|
||
}
|
||
|
||
else if (!_stricmp(token, "MACHINE_HOME_MODE"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_iHomeMode = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "CCS_PRIMA_ENABLE"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_STIL_CCS_PRIMA_Enable = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "ART_PCI8622_ENABLE"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_ART_PCI8622_Enable = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "MOVE_TO_CLOSELOOP_ENABLE"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_bMoveToEnable = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "MOVE_TO_CLOSELOOP_COUNT"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_bMoveToCount = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "DEBUG_LOG_ENABLE"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_bDebugOutputEnable = atoi(cTemp);
|
||
g_pLogger->IsEnabledLog = g_so7_config.m_bDebugOutputEnable >= 1 ? true : false;
|
||
}
|
||
}
|
||
|
||
//==============PROBE SYSTEM==================
|
||
else if (!_stricmp(token, "OPTEX_CD5_ENABLE"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_bOptexCD5Enable = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "OPTEX_CD5_COMPORT"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_iOptexCD5ComPort = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "OPTEX_CD5_BAUDRATE"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_iOptexCD5BaudRate = atoi(cTemp);
|
||
}
|
||
}
|
||
//=================ILLUMINATION==================
|
||
else if (!_stricmp(token, "SO7_ILLUM_TYPE"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_iSo7IllumType = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "SO7_ILLUM_COMPORT"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_iSo7IllumComPort = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "SO7_ILLUM_BAUDRATE"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_iSo7IllumBaudRate = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "SO7_ILLUM_RESPONSE_TIME"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_iSo7IllumResponseTime = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "SO7_ILLUM_DOUBLE_SURFACE"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_iSo7DoubleSurface = atoi(cTemp);
|
||
}
|
||
}
|
||
//=================TEMPERATURE==================
|
||
else if (!_stricmp(token, "SO7_TEMP_SENSOR_ENABLE"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_iSo7TempSensorEnable = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "SO7_TEMP_SENSOR_COMPORT"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_iSo7TempComPort = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "SO7_TEMP_SENSOR_BAUDRATE"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_iSo7TempBaudRate = atoi(cTemp);
|
||
}
|
||
}
|
||
//=================VIDEOCARD==================
|
||
else if (!_stricmp(token, "VIDEOCARD_ENABLE"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_IsVideocardVacant = atoi(cTemp);
|
||
if (g_so7_config.m_IsVideocardVacant > 0)
|
||
{
|
||
g_so7_config.m_IsVideocardVacant = 0;
|
||
}
|
||
else
|
||
{
|
||
g_so7_config.m_IsVideocardVacant = 1;
|
||
}
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "SDK3000_SLEEP_COUNT"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_CntThreadSleepVal = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "SV4000E_DENOISE_PARA_CHANNEL1"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_SV4000E_DenoisePara[0] = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "SV4000E_DENOISE_PARA_CHANNEL2"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_SV4000E_DenoisePara[1] = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "SV4000E_DENOISE_PARA_CHANNEL3"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_SV4000E_DenoisePara[2] = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "SV4000E_DENOISE_PARA_CHANNEL4"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_SV4000E_DenoisePara[3] = atoi(cTemp);
|
||
}
|
||
}
|
||
//=================MSI========================
|
||
else if (!_stricmp(token, "MACHINE_CONTROLLER_TYPE"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_MachineType = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "MACHINE_VIDEOCARD_TYPE"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_VideoCardType = atoi(cTemp);
|
||
}
|
||
}
|
||
//================= Auto Zoom ========================
|
||
else if (!_stricmp(token, "ZOOM_TYPE"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_ZoomType = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "NAVITAR_ZOOM_PRECISION"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.Navitar_Precision = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "NAVITAR_ZOOM_COM_PORT"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.Navitar_SerialComPort = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "NAVITAR_ZOOM_START_DEG"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.Navitar_ZoomStartPos = atof(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "NAVITAR_ZOOM_END_DEG"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.Navitar_ZoomEndPos = atof(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "NAVITAR_ZOOM_ORG_DEG"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.Navitar_ZoomOrgPos = atof(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "NAVITAR_ZOOM_DEADBAND_DEG"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.Navitar_ZoomDeadband = atof(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "NAVITAR_ZOOM_SLEEP_TIME"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.Navitar_SleepTime = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "NAVITAR_ZOOM_TIME_OUT"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.Navitar_Timeout = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "NAVITAR_ZOOM_POS_SPEED_FAST"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.Navitar_ZoomPosSpeed = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "NAVITAR_ZOOM_POS_SPEED_SLOW"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.Navitar_ZoomPosSpeed_Accurate = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "NAVITAR_ZOOM_FINISH_POS"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.Navitar_ZoomFinishPos = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "NAVITAR_ZOOM_FINISH_CNTS"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.Navitar_ZoomFinishCnts = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "NAVITAR_ZOOM_PULSE_PER_DEG"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.Navitar_ZoomScale = atof(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "NAVITAR_ZOOM_READING_INTERVAL_TIME"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.Navitar_iReadingInterval = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "NAVITAR_ZOOM_MOTOR_SPEED_FAST"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.Navitar_MotorSpeedFast = static_cast<short>(atoi(cTemp));
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "NAVITAR_ZOOM_MOTOR_SPEED_SLOW"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.Navitar_MotorSpeedSlow = static_cast<short>(atoi(cTemp));
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "NAVITAR_ZOOM_MOTOR_GOHOME_V"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.Navitar_Motor_GoHomeV = static_cast<short>(atoi(cTemp));
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "NAVITAR_ZOOM_BACK_POS"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.Navitar_ZoomBackPos = static_cast<short>(atoi(cTemp));
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "FREE_MEMORY_INTERVAL"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_iFreeMemoryInterval = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "LJV_LASER_SLEEEP_TIME"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_iLJVSleepTime = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "LJG_LASER_SLEEEP_TIME"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_iLJGSleepTime = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "TEST_DLL_ENABLE"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_iTestDll_Enable = atoi(cTemp);
|
||
}
|
||
}
|
||
else if (!_stricmp(token, "IS_OPEN_IO"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
g_so7_config.m_isOpenIO = atoi(cTemp);
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|
||
fclose(hConfigFile);
|
||
}
|
||
else
|
||
{
|
||
return SSI_STATUS_SO7_CONFIG_FILE_NOT_FOUND;
|
||
}
|
||
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_UNKNOWN_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(unsigned short sSeqNumber)
|
||
{
|
||
struct usb_bus *bus = NULL;
|
||
struct usb_device *dev = NULL;
|
||
usb_dev_handle *udev = 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)
|
||
{
|
||
udev = usb_open(dev);
|
||
usb_claim_interface(udev, 0);
|
||
if (sSeqNumber>255)
|
||
{
|
||
return udev;
|
||
}
|
||
else
|
||
{
|
||
if(Get_SeqNumber(udev) != sSeqNumber)
|
||
{
|
||
usb_close(udev);
|
||
}
|
||
else
|
||
{
|
||
return udev;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return NULL;
|
||
}
|
||
|
||
//******************************************************************************
|
||
int CSO7_Proto::Get_SeqNumber(usb_dev_handle *udev)
|
||
{
|
||
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_SEQ_NUMBER;
|
||
|
||
ep_buff[EP_02_CMD_IDX]._size = 0x02;
|
||
ep_buff[EP_82_DATA_IDX]._size = 0x01;
|
||
|
||
int _ret=0;
|
||
if(isEF1AController)
|
||
{
|
||
g_EF1AUsbDevice->EF1AWriteData(0,(char *)ep_buff[2]._buffer,(int) ep_buff[2]._size);
|
||
}
|
||
else
|
||
_ret = usb_bulk_write(udev, ep_buff[2]._ep, (char *)ep_buff[2]._buffer,(int) ep_buff[2]._size, 50);
|
||
if (_ret < 0)
|
||
{
|
||
return -1;
|
||
}
|
||
|
||
if(isEF1AController)
|
||
{
|
||
_ret = g_EF1AUsbDevice->EF1AReadData(0,(char *)ep_buff[3]._buffer,(int) ep_buff[3]._size);
|
||
}
|
||
else
|
||
_ret = usb_bulk_read(udev, ep_buff[3]._ep, (char *)ep_buff[3]._buffer,(int) ep_buff[3]._size, 5000);
|
||
if (_ret < 0)
|
||
{
|
||
return -1;
|
||
}
|
||
g_machine.SEQ_NUMBER = -1;
|
||
g_machine.SEQ_NUMBER = *(ep_buff[EP_82_DATA_IDX]._buffer);
|
||
return g_machine.SEQ_NUMBER;
|
||
}
|
||
|
||
//******************************************************************************
|
||
// Send is direct and async.
|
||
// The receive thread will receive data and interpret it.
|
||
//******************************************************************************
|
||
SSI_STATUS_MOTION CSO7_Proto::Init_SO7Usb(HWND _hwnd)
|
||
{
|
||
if (g_so7_config.m_bDebugOutputEnable>=1)
|
||
{
|
||
g_pLogger->SendAndFlushWithTime(_T("Enter Initialize Usb.\n"));
|
||
}
|
||
//Set initial state of the machine
|
||
g_machine.s_status._machine_running = false;
|
||
|
||
SSI_STATUS_MOTION rStatus=SSI_STATUS_MOTION_NORMAL;
|
||
|
||
if (!g_dev && g_machine.IsOffline == FALSE)
|
||
{
|
||
if(isEF1AController)
|
||
{
|
||
if (g_EF1AUsbDevice==nullptr)
|
||
{
|
||
g_EF1AUsbDevice = new CEF1AUsbDevice();
|
||
}
|
||
if(!g_EF1AUsbDevice->EF1AOpenDevice())
|
||
rStatus = SSI_STATUS_MOTION_DATALINK_ERROR;
|
||
}
|
||
else
|
||
{
|
||
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(_hwnd, _T("Unable to open device"), _T("Message"), MB_OK|MB_ICONERROR);
|
||
g_machine.IsOffline=TRUE;
|
||
rStatus= SSI_STATUS_MOTION_DATALINK_ERROR;
|
||
}
|
||
else if (usb_set_configuration(g_dev, MY_CONFIG) < 0)
|
||
{
|
||
g_dev=NULL;
|
||
MessageBox(_hwnd, _T("Unable to SET CONFIGURATION"), _T("Message"), MB_OK|MB_ICONERROR);
|
||
g_machine.IsOffline=TRUE;
|
||
rStatus=SSI_STATUS_MOTION_DATALINK_ERROR;
|
||
}
|
||
else if (usb_claim_interface(g_dev, 0) < 0)
|
||
{
|
||
usb_close(g_dev);
|
||
g_dev=NULL;
|
||
MessageBox(_hwnd, _T("Unable to CLAIM DEVICE"), _T("Message"), MB_OK|MB_ICONERROR);
|
||
g_machine.IsOffline=TRUE;
|
||
rStatus=SSI_STATUS_MOTION_DATALINK_ERROR;
|
||
}
|
||
}
|
||
{
|
||
// ********************************************************************
|
||
// 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
|
||
}
|
||
}
|
||
else if (!g_dev)
|
||
{
|
||
rStatus = SSI_STATUS_MOTION_DATALINK_ERROR;
|
||
}
|
||
return rStatus;
|
||
}
|
||
|
||
//******************************************************************************
|
||
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(isEF1AController)
|
||
g_EF1AUsbDevice->EF1ACloseDevice();
|
||
else
|
||
{
|
||
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);
|
||
if (g_so7_config.m_bDebugOutputEnable>=1)
|
||
{
|
||
g_pLogger->SendAndFlushWithTime(_T("Exit Exit_SO7Usb.\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()
|
||
{
|
||
if (g_so7_config.m_bDebugOutputEnable>=1)
|
||
{
|
||
g_pLogger->SendAndFlushWithTime(_T("_start_machine.\n"));
|
||
}
|
||
g_hEP8x_Thread_State = THREAD_RUNNING_STATE2;
|
||
g_machine.s_status._machine_running = true;
|
||
SetEvent(g_hHomedEvent);
|
||
//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()
|
||
{
|
||
if (g_so7_config.m_bDebugOutputEnable>=1)
|
||
{
|
||
g_pLogger->SendAndFlushWithTime(_T("_shutdown_machine.\n"));
|
||
}
|
||
_send_cmd_SO7_CMD_STOP_MOVE_XYZ();
|
||
so7_light_set_light_off();
|
||
Sleep(20);
|
||
if (g_machine.IsSupportReadInterrputMsg)
|
||
{
|
||
_send_cmd_SO7_CMD_SET_GET_INTERRUPT_MSG_METHOD(E_GET_INTERRUPT_MSG_INTERRUPT);
|
||
}
|
||
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 (g_machine.IsOffline)
|
||
{
|
||
ep_buff[EP_82_DATA_IDX]._hProtoPending = false;
|
||
ep_buff[EP_01_CMD_IDX]._hProtoPending = false;
|
||
ep_buff[EP_81_DATA_IDX]._hProtoPending = false;
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
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;
|
||
if(isEF1AController)
|
||
{
|
||
_ret = g_EF1AUsbDevice->EF1AReadData(0,(char *)ep_buff[iEP_Base]._buffer,(int)ep_buff[iEP_Base]._size);
|
||
}
|
||
else
|
||
_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)
|
||
{
|
||
if (g_machine.IsOffline)
|
||
{
|
||
SetEvent(ep_buff[iEP_Base+1]._event);
|
||
ep_buff[iEP_Base]._hProtoPending = false;
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
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];
|
||
ep_buff[iEP_Base]._save_send_cmd2= ep_buff[iEP_Base]._buffer[3];
|
||
|
||
//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]);
|
||
if(isEF1AController)
|
||
{
|
||
_ret = g_EF1AUsbDevice->EF1AWriteData(0,(char *)ep_buff[iEP_Base]._buffer,(int) ep_buff[iEP_Base]._size);
|
||
}
|
||
else
|
||
_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)
|
||
{
|
||
if (g_machine.IsOffline)
|
||
{
|
||
ep_buff[iEP_Base]._hProtoPending = false;
|
||
ep_buff[iEP_Base+1]._hProtoPending = false;
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
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];
|
||
ep_buff[iEP_Base]._save_send_cmd2 = ep_buff[iEP_Base]._buffer[3];
|
||
|
||
//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]);
|
||
if(isEF1AController)
|
||
{
|
||
_ret = g_EF1AUsbDevice->EF1AWriteData(0,(char *)ep_buff[iEP_Base]._buffer,(int) ep_buff[iEP_Base]._size);
|
||
}
|
||
else
|
||
_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;
|
||
}
|
||
Sleep(MIN_SLEEP_TIME);
|
||
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(char _HomeMode)
|
||
{
|
||
_send_cmd_SO7_CMD_COMMON_COMMAND(CT_MOTOR,CT_M_RESET_LEFT,_HomeMode);
|
||
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;
|
||
};
|
||
|
||
//**********************************************************************//
|
||
//**********************************************************************//
|
||
|
||
SSI_STATUS_MOTION CSO7_Proto::so7_motion_init_firmware_para()
|
||
{
|
||
_send_cmd_SO7_CMD_GET_RESET_FLAG();
|
||
if(g_machine.IsSupportReadInterrputMsg)
|
||
{
|
||
_send_cmd_SO7_CMD_SET_GET_INTERRUPT_MSG_METHOD(g_so7_config.GetInterruptMsgMethod);
|
||
|
||
_send_cmd_SO7_CMD_READ_FIRMWARE_VERSION_INFO();
|
||
if (g_so7_config.m_bDebugOutputEnable>=1)
|
||
{
|
||
CStringA csAStr("");
|
||
csAStr.Format("FirmwareVersion:%s.\n",g_machine.FirmwareInfo);
|
||
CString csStr(csAStr);
|
||
g_pLogger->SendAndFlushWithTime(csStr);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
g_so7_config.GetInterruptMsgMethod = E_GET_INTERRUPT_MSG_INTERRUPT;
|
||
if (g_so7_config.m_bDebugOutputEnable >= 1)
|
||
{
|
||
g_pLogger->SendAndFlushWithTime(_T("FirmwareVersion:UNKNOWN.\n"));
|
||
}
|
||
}
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
|
||
SSI_STATUS_MOTION CSO7_Proto::so7_motion_set_all_so7_config()
|
||
{
|
||
if (g_machine.FirmwareVer >= FirmwareVer_7_X)
|
||
{
|
||
_send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(E_AXIS_X, E_WRITE_ACCURA_ERR, static_cast<char>(g_so7_config.m_AccuraErrPulseX));
|
||
|
||
_send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(E_AXIS_Y, E_WRITE_ACCURA_ERR, static_cast<char>(g_so7_config.m_AccuraErrPulseY));
|
||
|
||
_send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(E_AXIS_Z, E_WRITE_ACCURA_ERR, static_cast<char>(g_so7_config.m_AccuraErrPulseZ));
|
||
|
||
_send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(E_AXIS_X, E_WRITE_TRIG_HOLDTIME, static_cast<char>(g_so7_config.m_iTrigHoldTimeCnts));
|
||
|
||
_send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(E_AXIS_Y, E_WRITE_TRIG_HOLDTIME, static_cast<char>(g_so7_config.m_iTrigHoldTimeCnts));
|
||
|
||
_send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(E_AXIS_Z, E_WRITE_TRIG_HOLDTIME, static_cast<char>(g_so7_config.m_iTrigHoldTimeCnts));
|
||
|
||
|
||
if (g_so7_config.m_bTrigIOEnable >= 1)
|
||
{
|
||
_send_cmd_SO7_CMD_IO_PURPOSE(TRUE);
|
||
}
|
||
else
|
||
{
|
||
_send_cmd_SO7_CMD_IO_PURPOSE(FALSE);
|
||
}
|
||
for (int i = 0; i < 4; i++)
|
||
{
|
||
if (g_so7_config.m_iMotionStartCnts[i] >= 1 &&
|
||
g_so7_config.m_iMotionStopCnts[i] >= 1)
|
||
{
|
||
_send_cmd_SO7_CMD_SET_MOTION_CNTS(static_cast<char>((4 - i)), static_cast<char>(g_so7_config.m_iMotionStartCnts[i]), static_cast<char>(g_so7_config.m_iMotionStopCnts[i]));
|
||
}
|
||
}
|
||
if (g_so7_config.m_iMotionStartCnts[4] >= 1 &&
|
||
g_so7_config.m_iMotionStopCnts[4] >= 1)
|
||
{
|
||
_send_cmd_SO7_CMD_SET_MOTION_CNTS(5, static_cast<char>(g_so7_config.m_iMotionStartCnts[4]), static_cast<char>(g_so7_config.m_iMotionStopCnts[4]));
|
||
}
|
||
}
|
||
else if (g_machine.FirmwareVer >= FirmwareVer_6_X)
|
||
{
|
||
_send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(E_AXIS_X, E_WRITE_ACCURA_ERR, static_cast<char>(g_so7_config.m_AccuraErrPulseX));
|
||
|
||
_send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(E_AXIS_Y, E_WRITE_ACCURA_ERR, static_cast<char>(g_so7_config.m_AccuraErrPulseY));
|
||
|
||
_send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(E_AXIS_Z, E_WRITE_ACCURA_ERR, static_cast<char>(g_so7_config.m_AccuraErrPulseZ));
|
||
|
||
_send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(E_AXIS_X, 10, static_cast<char>(g_so7_config.m_EQUIDIS_X));
|
||
|
||
_send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(E_AXIS_Y, 10, static_cast<char>(g_so7_config.m_EQUIDIS_Y));
|
||
|
||
_send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(E_AXIS_Z, 10, static_cast<char>(g_so7_config.m_EQUIDIS_Z));
|
||
|
||
}
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
|
||
//==================================================================
|
||
bool CSO7_Proto::so7_motion_is_homed()
|
||
{
|
||
if (g_machine.IsOffline)
|
||
{
|
||
g_machine.Sys_Reset_Flag =1;
|
||
SetEvent(g_hHomedEvent);
|
||
return true;
|
||
}
|
||
_send_cmd_SO7_CMD_GET_RESET_FLAG();
|
||
if (g_machine.Sys_Reset_Flag == 1)
|
||
{
|
||
if (g_so7_config.m_bDebugOutputEnable>=1)
|
||
{
|
||
g_pLogger->SendAndFlushWithTime(_T("so7_motion_is_homed:true.\n"));
|
||
}
|
||
SetEvent(g_hHomedEvent);
|
||
return true;
|
||
}
|
||
else
|
||
{
|
||
if (g_so7_config.m_bDebugOutputEnable>=1)
|
||
{
|
||
g_pLogger->SendAndFlushWithTime(_T("so7_motion_is_homed:false.\n"));
|
||
}
|
||
return false;
|
||
}
|
||
};
|
||
//========================================================================
|
||
// Move the stage left/right until the index location is non-zero
|
||
//========================================================================
|
||
SSI_STATUS_MOTION CSO7_Proto::so7_motion_Dcc_Home()
|
||
{
|
||
if (g_machine.IsOffline)
|
||
{
|
||
SetEvent(g_hHomedEvent);
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
return so7_motion_Dcc_HomeXYZ(CT_HOME_XYZ);
|
||
}
|
||
//========================================================================
|
||
SSI_STATUS_MOTION CSO7_Proto::so7_motion_Dcc_HomeXYZ(char cHomeMachineMode)
|
||
{
|
||
if (g_so7_config.m_bDebugOutputEnable>=1)
|
||
{
|
||
g_pLogger->SendAndFlushWithTime(_T("Enter so7_motion_Dcc_HomeXYZ(%d).\n"),cHomeMachineMode);
|
||
}
|
||
if (g_machine.IsOffline)
|
||
{
|
||
SetEvent(g_hHomedEvent);
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
//��ѯ�Ƿ�λ
|
||
_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(cHomeMachineMode);
|
||
|
||
TRACE0("Waiting for X,Y,Zm to stop moving\n");
|
||
//========================================
|
||
// Wait until X-Y-Zm stopped moving
|
||
//========================================
|
||
INT lSleep = 20;
|
||
INT lMaxLoopCnt = HOME_TIMEOUT/lSleep;
|
||
INT lLoopCnt = 0;
|
||
long lPreX(0),lPreY(0),lPreZ(0);
|
||
|
||
g_machine.cVerNumber = 2;
|
||
_send_cmd_SO7_CMD_SET_VER_NUMBER();
|
||
g_machine.cVerNumber = 3;
|
||
Sleep(lSleep);
|
||
do
|
||
{
|
||
Sleep(lSleep);
|
||
_send_cmd_SO7_CMD_GET_RESET_FLAG();
|
||
_send_cmd_SO7_CMD_READ_AXIS_XYZ();
|
||
if (abs(g_machine.x._scale_pos._long_ - lPreX) < 10
|
||
&& abs(g_machine.y._scale_pos._long_ - lPreY) < 10
|
||
&& abs(g_machine.z._scale_pos._long_ - lPreZ) < 10)
|
||
{
|
||
lLoopCnt++;
|
||
}
|
||
else
|
||
{
|
||
lLoopCnt = 0;
|
||
}
|
||
lPreX = g_machine.x._scale_pos._long_;
|
||
lPreY = g_machine.y._scale_pos._long_;
|
||
lPreZ = g_machine.z._scale_pos._long_;
|
||
} while (g_machine.Sys_Reset_Flag != 1 && lLoopCnt < lMaxLoopCnt);
|
||
//_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);
|
||
m_bHomingActive = false;
|
||
if (g_machine.Sys_Reset_Flag == 1)
|
||
{
|
||
SetEvent(g_hHomedEvent);
|
||
_send_cmd_SO7_CMD_SET_VER_NUMBER();
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
else
|
||
{
|
||
return SSI_STATUS_MOTION_TIMEOUT;
|
||
}
|
||
}
|
||
|
||
//==================================================================
|
||
SSI_STATUS_MOTION CSO7_Proto::so7_Motion_R_IsHomed(bool &bHomed)
|
||
{
|
||
_send_cmd_SO7_CMD_GET_RESET_FLAG();
|
||
if (g_machine.Sys_Reset_Flag == 1)
|
||
{
|
||
SetEvent(g_hHomedEvent);
|
||
bHomed=true;
|
||
}
|
||
else
|
||
{
|
||
bHomed=false;
|
||
}
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
|
||
//==================================================================
|
||
SSI_STATUS_MOTION CSO7_Proto::so7_motion_Dcc_Home_R()
|
||
{
|
||
//��ѯ�Ƿ�λ
|
||
if (g_so7_config.m_bDebugOutputEnable>=1)
|
||
{
|
||
g_pLogger->SendAndFlushWithTime(_T("Enter so7_motion_Dcc_Home_R.\n"));
|
||
}
|
||
_send_cmd_SO7_CMD_GET_RESET_FLAG();
|
||
if (g_machine.Sys_Reset_Flag == 1)
|
||
{
|
||
SetEvent(g_hHomedEvent);
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
m_bHomingActive = true; // Tell the world we need to home the stage
|
||
|
||
// Home r
|
||
long lMoveToDis(0);
|
||
g_machine.x._pos_fixed._long_=0;
|
||
g_machine.y._pos_fixed._long_=0;
|
||
g_machine.z._pos_fixed._long_=0;
|
||
lMoveToDis=MMtoScale(2.0*g_machine.s_machine_config.r_axis.m_RotaryCircleDis,ROTARY_MMtoScale_RESOLUTION);
|
||
if (g_machine.s_machine_config.r_axis.m_RotaryAxisNO==MACHINE_AXIS_X)
|
||
{
|
||
g_machine.x._pos_fixed._long_=lMoveToDis;
|
||
}
|
||
else if (g_machine.s_machine_config.r_axis.m_RotaryAxisNO==MACHINE_AXIS_Y)
|
||
{
|
||
g_machine.y._pos_fixed._long_=lMoveToDis;
|
||
}
|
||
else if (g_machine.s_machine_config.r_axis.m_RotaryAxisNO==MACHINE_AXIS_Z)
|
||
{
|
||
g_machine.z._pos_fixed._long_=lMoveToDis;
|
||
}
|
||
so7_motion_clear_finished_flag();
|
||
_send_cmd_SO7_CMD_MOVE_TO_POS_XYZ(CT_MOVETOXYZ);
|
||
//========================================
|
||
INT lSleep = 20;
|
||
INT lMaxLoopCnt = MOVETO_TIMEOUT/lSleep;
|
||
INT lLoopCnt = 0;
|
||
Sleep(lSleep);
|
||
bool IsFinished(FALSE);
|
||
do
|
||
{
|
||
so7_Motion_R_IsMotionFInished(IsFinished);
|
||
Sleep(lSleep);
|
||
++lLoopCnt;
|
||
} while (!IsFinished && lLoopCnt < lMaxLoopCnt);
|
||
m_bHomingActive = false;
|
||
if (IsFinished)
|
||
{
|
||
_send_cmd_SO7_CMD_SET_RESET_FLAG();
|
||
g_machine.cVerNumber = 3;
|
||
_send_cmd_SO7_CMD_SET_VER_NUMBER();
|
||
SetEvent(g_hHomedEvent);
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
else
|
||
{
|
||
return SSI_STATUS_MOTION_TIMEOUT;
|
||
}
|
||
}
|
||
//==================================================================
|
||
SSI_STATUS_MOTION CSO7_Proto::so7_motion_get_position_R(double & dRad)
|
||
{
|
||
WaitForSingleObject(g_hHomedEvent, INFINITE); // machine start and homing is done
|
||
|
||
long lX=0, lY=0, lZ=0;
|
||
long lX_Ref=0, lY_Ref=0, lZ_Ref=0;
|
||
double dR(0.0);
|
||
_send_cmd_SO7_CMD_READ_AXIS_XYZ();
|
||
if (g_machine.s_machine_config.r_axis.m_RotaryAxisNO==MACHINE_AXIS_X)
|
||
{
|
||
lX = g_machine.x._scale_pos._long_;
|
||
_send_cmd_SO7_CMD_READ_ZSIGNAL_POS_X();
|
||
lX_Ref=g_machine.x._ZSignal_pos._long_;
|
||
dR=static_cast<double>(lX-lX_Ref);
|
||
}
|
||
else if (g_machine.s_machine_config.r_axis.m_RotaryAxisNO==MACHINE_AXIS_Y)
|
||
{
|
||
lY = g_machine.y._scale_pos._long_;
|
||
_send_cmd_SO7_CMD_READ_ZSIGNAL_POS_Y();
|
||
lY_Ref=g_machine.y._ZSignal_pos._long_;
|
||
dR=static_cast<double>(lY-lY_Ref);
|
||
}
|
||
else if (g_machine.s_machine_config.r_axis.m_RotaryAxisNO==MACHINE_AXIS_Z)
|
||
{
|
||
lZ = g_machine.z._scale_pos._long_;
|
||
_send_cmd_SO7_CMD_READ_ZSIGNAL_POS_Z();
|
||
lZ_Ref=g_machine.z._ZSignal_pos._long_;
|
||
dR=static_cast<double>(lZ-lZ_Ref);
|
||
}
|
||
bool bPlus(true);
|
||
if (dR<-0.00001)
|
||
{
|
||
bPlus=true;
|
||
}
|
||
else
|
||
{
|
||
bPlus=false;
|
||
}
|
||
int iRetryCnts(0);
|
||
if (fabs(dR)-fabs(2.0*g_machine.s_machine_config.r_axis.m_RotaryCirclePulse)>100)
|
||
{
|
||
do
|
||
{
|
||
iRetryCnts++;
|
||
if (bPlus)
|
||
{
|
||
dR+=8388608;
|
||
}
|
||
else
|
||
{
|
||
dR-=8388608;
|
||
}
|
||
//m_csMessage.Format("[CONVERT RotaryY]CNTS:%d;PLUS:%d;ScaleYResult:%.4f.",iRetryCnts,bPlus,dR);
|
||
} while ((iRetryCnts<5)&&
|
||
(fabs(dR)-fabs(g_machine.s_machine_config.r_axis.m_RotaryCirclePulse)>100));
|
||
}
|
||
dRad = 2.0*M_PI*dR/(g_machine.s_machine_config.r_axis.m_RotaryCirclePulse);
|
||
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
};
|
||
//==================================================================
|
||
SSI_STATUS_MOTION CSO7_Proto::so7_motion_set_position_R(double dRad,bool bWait)
|
||
{
|
||
WaitForSingleObject(g_hHomedEvent, INFINITE);
|
||
// get the current position
|
||
double dRStart(0.0),dRMovetoDis(0.0);
|
||
long lMoveToDis(0);
|
||
so7_motion_get_position_R(dRStart);
|
||
dRMovetoDis=dRad-dRStart;
|
||
double dMod=dRMovetoDis/(2.0*M_PI);
|
||
int iMod(0);
|
||
if(dMod>=0.0001)
|
||
{
|
||
iMod=static_cast<int>(floor(dMod));
|
||
}
|
||
else
|
||
{
|
||
iMod=static_cast<int>(ceil(dMod));
|
||
}
|
||
dRMovetoDis=dRMovetoDis-2.0*M_PI*static_cast<double>(iMod);
|
||
|
||
if ((dRMovetoDis)<=-0.01)
|
||
{
|
||
dRMovetoDis=2.0*M_PI+dRMovetoDis;
|
||
}
|
||
else
|
||
{
|
||
dRMovetoDis=dRMovetoDis;
|
||
}
|
||
if (g_so7_config.m_bDebugOutputEnable>=1)
|
||
{
|
||
g_pLogger->SendAndFlushWithTime(_T("so7_motion_set_position_R:[From]%.4f;[To]%.4f;[Dis]%.4F.\n")
|
||
,dRStart,dRad,dRMovetoDis);
|
||
}
|
||
lMoveToDis=static_cast<long>(dRMovetoDis*(static_cast<double>(g_machine.s_machine_config.r_axis.m_RotaryCirclePulse))/(2.0*M_PI));
|
||
g_machine.x._pos_fixed._long_=0;
|
||
g_machine.y._pos_fixed._long_=0;
|
||
g_machine.z._pos_fixed._long_=0;
|
||
if (g_machine.s_machine_config.r_axis.m_RotaryAxisNO==MACHINE_AXIS_X)
|
||
{
|
||
g_machine.x._pos_fixed._long_=lMoveToDis;
|
||
}
|
||
else if (g_machine.s_machine_config.r_axis.m_RotaryAxisNO==MACHINE_AXIS_Y)
|
||
{
|
||
g_machine.y._pos_fixed._long_=lMoveToDis;
|
||
}
|
||
else if (g_machine.s_machine_config.r_axis.m_RotaryAxisNO==MACHINE_AXIS_Z)
|
||
{
|
||
g_machine.z._pos_fixed._long_=lMoveToDis;
|
||
}
|
||
so7_motion_clear_finished_flag();
|
||
_send_cmd_SO7_CMD_MOVE_TO_POS_XYZ(CT_MOVETOXYZ);
|
||
g_machine.MotionType=EMSG_STOPXYZ_1_MOVETOXYZ;
|
||
|
||
bool IsFinished(true);
|
||
if (bWait)
|
||
{
|
||
INT lSleep = 20;
|
||
INT lMaxLoopCnt = MOVETO_TIMEOUT/lSleep; // use max homing time of 20 seconds
|
||
INT lLoopCnt = 0;
|
||
Sleep(lSleep);
|
||
do
|
||
{
|
||
so7_Motion_R_IsMotionFInished(IsFinished);
|
||
Sleep(lSleep);
|
||
++lLoopCnt;
|
||
} while (!IsFinished && lLoopCnt < lMaxLoopCnt);
|
||
}
|
||
if (IsFinished)
|
||
{
|
||
g_machine.MotionType=-1;
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
else
|
||
{
|
||
return SSI_STATUS_MOTION_TIMEOUT;
|
||
}
|
||
};
|
||
//==================================================================
|
||
SSI_STATUS_MOTION CSO7_Proto::so7_Motion_R_IsMotionFInished(bool &bFinished)
|
||
{
|
||
if (g_machine.MotionType<EMSG_STOPXYZ_1_MOVETOXYZ)
|
||
{
|
||
bFinished=true;
|
||
}
|
||
else
|
||
{
|
||
BOOL IsFinished(TRUE);
|
||
so7_motion_is_finished(g_machine.MotionType,IsFinished);
|
||
if (IsFinished)
|
||
{
|
||
bFinished=true;
|
||
IsMotionFinishedManual(TRUE);
|
||
}
|
||
else
|
||
{
|
||
IsFinished=IsMotionFinishedManual();
|
||
if (IsFinished)
|
||
{
|
||
bFinished=true;
|
||
}
|
||
else
|
||
{
|
||
bFinished=false;
|
||
}
|
||
}
|
||
}
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
|
||
//==================================================================
|
||
SSI_STATUS_MOTION CSO7_Proto::so7_motion_move_R(char _SpeedGear)
|
||
{
|
||
//4-FASTER,1-SLOWER
|
||
if (g_machine.s_machine_config.r_axis.m_RotaryAxisNO==MACHINE_AXIS_X)
|
||
{
|
||
_send_cmd_SO7_CMD_MOVE_X(_SpeedGear);
|
||
}
|
||
else if (g_machine.s_machine_config.r_axis.m_RotaryAxisNO==MACHINE_AXIS_Y)
|
||
{
|
||
_send_cmd_SO7_CMD_MOVE_Y(_SpeedGear);
|
||
}
|
||
else if (g_machine.s_machine_config.r_axis.m_RotaryAxisNO==MACHINE_AXIS_Z)
|
||
{
|
||
_send_cmd_SO7_CMD_MOVE_Z(_SpeedGear);
|
||
}
|
||
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_jog(EMACHINE_AXIS cAxis, char cSpeedGear)
|
||
{
|
||
if (abs(cSpeedGear)>5)
|
||
{
|
||
if (cSpeedGear>0)
|
||
{
|
||
cSpeedGear=4;
|
||
}
|
||
else
|
||
{
|
||
cSpeedGear=-4;
|
||
}
|
||
}
|
||
if (abs(cSpeedGear)<1)
|
||
{
|
||
cSpeedGear=1;
|
||
}
|
||
switch (cAxis)
|
||
{
|
||
case MACHINE_AXIS_X:
|
||
{
|
||
if (cSpeedGear==4)
|
||
{
|
||
//if (!isEF1AController)
|
||
//{
|
||
//
|
||
//}
|
||
double dXStart(0.0), dYStart(0.0), dZStart(0.0);
|
||
so7_motion_get_position_xyz(dXStart, dYStart, dZStart);
|
||
if(dXStart < g_machine.s_machine_config.x_axis._pos_working_limit)
|
||
_send_cmd_SO7_CMD_MOVE_X(cSpeedGear);
|
||
//return so7_motion_set_position_xyz(g_machine.s_machine_config.x_axis._pos_working_limit,dYStart,dZStart,false);
|
||
|
||
}
|
||
else if (cSpeedGear==-4)
|
||
{
|
||
//if (!isEF1AController)
|
||
//{
|
||
// _send_cmd_SO7_CMD_MOVE_X(cSpeedGear);
|
||
//}
|
||
double dXStart(0.0), dYStart(0.0), dZStart(0.0);
|
||
so7_motion_get_position_xyz(dXStart, dYStart, dZStart);
|
||
if(dXStart > g_machine.s_machine_config.x_axis._neg_working_limit)
|
||
_send_cmd_SO7_CMD_MOVE_X(cSpeedGear);
|
||
//return so7_motion_set_position_xyz(g_machine.s_machine_config.x_axis._neg_working_limit,dYStart,dZStart,false);
|
||
}
|
||
else
|
||
{
|
||
return _send_cmd_SO7_CMD_MOVE_X(cSpeedGear);
|
||
}
|
||
break;
|
||
}
|
||
case MACHINE_AXIS_Y:
|
||
{
|
||
if (cSpeedGear==4)
|
||
{
|
||
/*if (!isEF1AController)
|
||
{
|
||
_send_cmd_SO7_CMD_MOVE_Y(cSpeedGear);
|
||
}*/
|
||
double dXStart(0.0), dYStart(0.0), dZStart(0.0);
|
||
so7_motion_get_position_xyz(dXStart, dYStart, dZStart);
|
||
if(dYStart < g_machine.s_machine_config.y_axis._pos_working_limit)
|
||
_send_cmd_SO7_CMD_MOVE_Y(cSpeedGear);
|
||
//return so7_motion_set_position_xyz(dXStart,g_machine.s_machine_config.y_axis._pos_working_limit,dZStart,false);
|
||
}
|
||
else if (cSpeedGear==-4)
|
||
{
|
||
/* if (!isEF1AController)
|
||
{
|
||
_send_cmd_SO7_CMD_MOVE_Y(cSpeedGear);
|
||
}*/
|
||
double dXStart(0.0), dYStart(0.0), dZStart(0.0);
|
||
so7_motion_get_position_xyz(dXStart, dYStart, dZStart);
|
||
if(dYStart > g_machine.s_machine_config.y_axis._neg_working_limit)
|
||
_send_cmd_SO7_CMD_MOVE_Y(cSpeedGear);
|
||
//return so7_motion_set_position_xyz(dXStart,g_machine.s_machine_config.y_axis._neg_working_limit,dZStart,false);
|
||
}
|
||
else
|
||
{
|
||
return _send_cmd_SO7_CMD_MOVE_Y(cSpeedGear);
|
||
}
|
||
break;
|
||
}
|
||
case MACHINE_AXIS_Z:
|
||
{
|
||
if (cSpeedGear==4)
|
||
{
|
||
// if (!isEF1AController)
|
||
// {
|
||
// _send_cmd_SO7_CMD_MOVE_Z(cSpeedGear);
|
||
// }
|
||
double dXStart(0.0), dYStart(0.0), dZStart(0.0);
|
||
so7_motion_get_position_xyz(dXStart, dYStart, dZStart);
|
||
if(dZStart < g_machine.s_machine_config.z_axis._pos_working_limit)
|
||
_send_cmd_SO7_CMD_MOVE_Z(cSpeedGear);
|
||
//return so7_motion_set_position_xyz(dXStart,dYStart,g_machine.s_machine_config.z_axis._pos_working_limit,false);
|
||
}
|
||
else if (cSpeedGear==-4)
|
||
{
|
||
/* if (!isEF1AController)
|
||
{
|
||
_send_cmd_SO7_CMD_MOVE_Z(cSpeedGear);
|
||
}*/
|
||
double dXStart(0.0), dYStart(0.0), dZStart(0.0);
|
||
so7_motion_get_position_xyz(dXStart, dYStart, dZStart);
|
||
if(dZStart > g_machine.s_machine_config.z_axis._neg_working_limit)
|
||
_send_cmd_SO7_CMD_MOVE_Z(cSpeedGear);
|
||
//return so7_motion_set_position_xyz(dXStart,dYStart,g_machine.s_machine_config.z_axis._neg_working_limit,false);
|
||
}
|
||
else
|
||
{
|
||
return _send_cmd_SO7_CMD_MOVE_Z(cSpeedGear);
|
||
}
|
||
break;
|
||
}
|
||
case MACHINE_AXIS_ZOOM:
|
||
{
|
||
if (abs(cSpeedGear)==4)
|
||
{
|
||
if (cSpeedGear>0)
|
||
{
|
||
cSpeedGear=5;
|
||
}
|
||
else
|
||
{
|
||
cSpeedGear=-5;
|
||
}
|
||
}
|
||
else if (abs(cSpeedGear)==3)
|
||
{
|
||
if (cSpeedGear>0)
|
||
{
|
||
cSpeedGear=5;
|
||
}
|
||
else
|
||
{
|
||
cSpeedGear=-5;
|
||
}
|
||
}
|
||
else if (abs(cSpeedGear)==2)
|
||
{
|
||
if (cSpeedGear>0)
|
||
{
|
||
cSpeedGear=1;
|
||
}
|
||
else
|
||
{
|
||
cSpeedGear=-1;
|
||
}
|
||
}
|
||
else if (abs(cSpeedGear)==1)
|
||
{
|
||
if (cSpeedGear>0)
|
||
{
|
||
cSpeedGear=2;
|
||
}
|
||
else
|
||
{
|
||
cSpeedGear=-2;
|
||
}
|
||
}
|
||
return _send_cmd_SO7_CMD_MOVE_ZM(cSpeedGear);
|
||
break;
|
||
}
|
||
case MACHINE_AXIS_R:
|
||
{
|
||
return so7_motion_move_R(cSpeedGear);
|
||
break;
|
||
}
|
||
default:
|
||
{
|
||
return SSI_STATUS_MOTION_INVALID_PARAMETERS;
|
||
break;
|
||
}
|
||
}
|
||
// 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)
|
||
{
|
||
if (!g_machine.s_status._bXYZZMIdle)
|
||
{
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
WaitForSingleObject(g_hHomedEvent, INFINITE); // machine start and homing is done
|
||
g_machine.s_status._bXYZZMIdle=false;
|
||
|
||
if (g_machine.IsOffline)
|
||
{
|
||
SetEvent(g_hHomedEvent);
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
// 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;
|
||
if (dX<g_machine.s_machine_config.x_axis._neg_working_limit)
|
||
{
|
||
X.dToMM=g_machine.s_machine_config.x_axis._neg_working_limit;
|
||
}
|
||
else if (dX>g_machine.s_machine_config.x_axis._pos_working_limit)
|
||
{
|
||
X.dToMM=g_machine.s_machine_config.x_axis._pos_working_limit;
|
||
}
|
||
else
|
||
{
|
||
X.dToMM = dX;
|
||
}
|
||
Y.dFromMM = dYStart;
|
||
if (dY<g_machine.s_machine_config.y_axis._neg_working_limit)
|
||
{
|
||
Y.dToMM=g_machine.s_machine_config.y_axis._neg_working_limit;
|
||
}
|
||
else if (dY>g_machine.s_machine_config.y_axis._pos_working_limit)
|
||
{
|
||
Y.dToMM=g_machine.s_machine_config.y_axis._pos_working_limit;
|
||
}
|
||
else
|
||
{
|
||
Y.dToMM = dY;
|
||
}
|
||
Z.dFromMM = dZStart;
|
||
if (dZ<g_machine.s_machine_config.z_axis._neg_working_limit)
|
||
{
|
||
Z.dToMM=g_machine.s_machine_config.z_axis._neg_working_limit;
|
||
}
|
||
else if (dZ>g_machine.s_machine_config.z_axis._pos_working_limit)
|
||
{
|
||
Z.dToMM=g_machine.s_machine_config.z_axis._pos_working_limit;
|
||
}
|
||
else
|
||
{
|
||
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);
|
||
if (g_so7_config.m_bDebugOutputEnable>=1)
|
||
{
|
||
g_pLogger->SendAndFlushWithTime(_T("so7_motion_set_position_xyz:[From]X:%.4f,Y:%.4f,Z:%.4f;[To]X:%.4f,Y:%.4f,Z:%.4f.Wait:%d.\n")
|
||
,dXStart,dYStart,dZStart,dX,dY,dZ,bWait);
|
||
}
|
||
// 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);
|
||
g_machine.MotionType = EMSG_STOPXYZ_1_MOVETOXYZ;
|
||
so7_motion_clear_finished_flag();
|
||
_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)
|
||
{
|
||
double PreTime(0.0);
|
||
PreTime = TimeInSecs();
|
||
TRACE1("Presettle Time: %lf;\r\n", PreTime);
|
||
if (g_so7_config.m_bDebugOutputEnable >= 1)
|
||
{
|
||
g_pLogger->SendAndFlushWithTime(_T("so7_motion_set_position_xyz:Presettle Time: %lf.\n"),PreTime);
|
||
}
|
||
INT lSleep = 20;
|
||
INT lMaxLoopCnt = MOVETO_TIMEOUT/lSleep; // use max homing time of 20 seconds
|
||
INT lLoopCnt = 0;
|
||
Sleep(lSleep);
|
||
bool IsFinished(FALSE);
|
||
do
|
||
{
|
||
if (g_so7_config.m_bDebugOutputEnable>=1)
|
||
{
|
||
so7_motion_get_position_xyz(dXStart, dYStart, dZStart);
|
||
g_pLogger->SendAndFlushWithTime(_T("so7_motion_set_position_xyz:[Cnt%d]X:%.4f,Y:%.4f,Z:%.4f.\n")
|
||
,lLoopCnt,dXStart,dYStart,dZStart);
|
||
}
|
||
g_machine.MotionType = EMSG_STOPXYZ_1_MOVETOXYZ;
|
||
so7_Motion_XYZ_IsMotionFinished(IsFinished);
|
||
Sleep(lSleep);
|
||
++lLoopCnt;
|
||
} while (!IsFinished && lLoopCnt < lMaxLoopCnt);
|
||
double PostTime(0.0);
|
||
PostTime = TimeInSecs();
|
||
TRACE2("Postsettle Time: %lf;Settle time: %lf.\r\n", PostTime, PostTime - PreTime);
|
||
if (g_so7_config.m_bDebugOutputEnable >= 1)
|
||
{
|
||
g_pLogger->SendAndFlushWithTime(_T("so7_motion_set_position_xyz:Postsettle Time: %lf;Settle time: %lf.\n"), PostTime, PostTime - PreTime);
|
||
}
|
||
if (g_so7_config.m_bDebugOutputEnable>=1)
|
||
{
|
||
so7_motion_get_position_xyz(dXStart, dYStart, dZStart);
|
||
g_pLogger->SendAndFlushWithTime(_T("so7_motion_set_position_xyz:[Done]X:%.4f,Y:%.4f,Z:%.4f.\n")
|
||
,dXStart,dYStart,dZStart);
|
||
}
|
||
g_machine.s_status._bXYZZMIdle=true;
|
||
if (IsFinished)
|
||
{
|
||
g_machine.MotionType=-1;
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
else
|
||
{
|
||
return SSI_STATUS_MOTION_TIMEOUT;
|
||
}
|
||
}
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
};
|
||
//==================================================================
|
||
SSI_STATUS_MOTION CSO7_Proto::so7_Motion_XYZ_IsMotionFinished(bool &bFinished)
|
||
{
|
||
if (g_so7_config.GetInterruptMsgMethod == E_GET_INTERRUPT_MSG_INQUIRY)
|
||
{
|
||
if (g_machine.MotionType >= EMSG_STOPXYZ_1_MOVETOXYZ)
|
||
{
|
||
BOOL IsFinished(FALSE);
|
||
so7_motion_is_finished(g_machine.MotionType, IsFinished);
|
||
if (IsFinished)
|
||
{
|
||
g_machine.MotionType = -1;
|
||
bFinished = true;
|
||
IsMotionFinishedManual(TRUE);
|
||
|
||
if (g_so7_config.m_bDebugOutputEnable >= 1)
|
||
{
|
||
g_pLogger->SendAndFlushWithTime(_T("so7_motion_is_finished<INQUIRY>:true.\n"));
|
||
}
|
||
}
|
||
else
|
||
{
|
||
IsFinished = IsMotionFinishedManual();
|
||
if (IsFinished)
|
||
{
|
||
if (g_so7_config.m_bDebugOutputEnable >= 1)
|
||
{
|
||
g_pLogger->SendAndFlushWithTime(_T("so7_motion_is_finished<Manual>:true.\n"));
|
||
}
|
||
so7_motion_clear_finished_flag();
|
||
IsMotionFinishedManual(TRUE);
|
||
g_machine.MotionType = -1;
|
||
bFinished = true;
|
||
}
|
||
else
|
||
{
|
||
bFinished = false;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
BOOL IsFinished(FALSE);
|
||
so7_motion_is_finished(g_machine.MotionType, IsFinished);
|
||
if (IsFinished)
|
||
{
|
||
g_machine.MotionType = -1;
|
||
bFinished = true;
|
||
IsMotionFinishedManual(TRUE);
|
||
|
||
if (g_so7_config.m_bDebugOutputEnable >= 1)
|
||
{
|
||
g_pLogger->SendAndFlushWithTime(_T("so7_motion_is_finished<INTERRUPT>:true.\n"));
|
||
}
|
||
}
|
||
else if (g_machine.MotionType >= EMSG_STOPXYZ_1_MOVETOXYZ)
|
||
{
|
||
IsFinished = IsMotionFinishedManual();
|
||
if (IsFinished)
|
||
{
|
||
if (g_so7_config.m_bDebugOutputEnable >= 1)
|
||
{
|
||
g_pLogger->SendAndFlushWithTime(_T("so7_motion_is_finished<Manual>:true.\n"));
|
||
}
|
||
IsMotionFinishedManual(TRUE);
|
||
g_machine.MotionType = -1;
|
||
bFinished = true;
|
||
}
|
||
else
|
||
{
|
||
bFinished = false;
|
||
}
|
||
}
|
||
}
|
||
if (bFinished)
|
||
{
|
||
g_machine.s_status._bXYZZMIdle=true;
|
||
}
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
//==================================
|
||
BOOL CSO7_Proto::IsMotionFinishedManual(BOOL _BResetCnts)
|
||
{
|
||
if (_BResetCnts)
|
||
{
|
||
g_machine.MotionFinished=FALSE;
|
||
g_machine.MotionFinishedCnts=0;
|
||
}
|
||
else
|
||
{
|
||
if (g_so7_config.m_CNC_Deadlock_Solution>=1)
|
||
{
|
||
double dPosX(0.0),dPosY(0.0),dPosZ(0.0);
|
||
so7_motion_get_position_xyz(dPosX,dPosY,dPosZ);
|
||
if ((fabs(dPosX-g_machine.x._ReCorded_Pos)<=g_machine.s_machine_config.x_axis._motor_precision)
|
||
&& (fabs(dPosY-g_machine.y._ReCorded_Pos)<=g_machine.s_machine_config.y_axis._motor_precision)
|
||
&& (fabs(dPosZ-g_machine.z._ReCorded_Pos)<=g_machine.s_machine_config.z_axis._motor_precision))
|
||
{
|
||
g_machine.MotionFinishedCnts++;
|
||
TRACE("IsMotionFinishedManual Cnts=%d.\r\n", g_machine.MotionFinishedCnts);
|
||
if (g_so7_config.m_bDebugOutputEnable >= 1)
|
||
{
|
||
g_pLogger->SendAndFlushWithTime(_T("IsMotionFinishedManual Cnts=%d;X=%.4f,Y=%.4f,Z=%.4f.\n"),
|
||
g_machine.MotionFinishedCnts, dPosX, dPosY, dPosZ);
|
||
}
|
||
if (g_machine.MotionFinishedCnts>g_so7_config.m_CNC_Deadlock_JudgeMaxCnts)
|
||
{
|
||
g_machine.MotionFinished=TRUE;
|
||
}
|
||
else
|
||
{
|
||
g_machine.MotionFinished=FALSE;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
g_machine.MotionFinishedCnts=0;
|
||
}
|
||
g_machine.x._ReCorded_Pos=dPosX;
|
||
g_machine.y._ReCorded_Pos=dPosY;
|
||
g_machine.z._ReCorded_Pos=dPosZ;
|
||
}
|
||
else
|
||
{
|
||
g_machine.MotionFinished=FALSE;
|
||
g_machine.MotionFinishedCnts=0;
|
||
}
|
||
}
|
||
return g_machine.MotionFinished;
|
||
};
|
||
//==================================================================
|
||
SSI_STATUS_MOTION CSO7_Proto::so7_motion_clear_finished_flag()
|
||
{
|
||
WaitForSingleObject(g_hHomedEvent, INFINITE); // machine start and homing is done
|
||
if (g_so7_config.GetInterruptMsgMethod==E_GET_INTERRUPT_MSG_INQUIRY)
|
||
{
|
||
_send_cmd_SO7_CMD_SET_INTERRUPT_MSG(g_machine.MotionType,0);
|
||
}
|
||
else
|
||
{
|
||
IsMotionFinishedManual(TRUE);
|
||
g_machine.InterruptFlag[0] = 0;
|
||
}
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
|
||
//==================================================================
|
||
SSI_STATUS_MOTION CSO7_Proto::so7_motion_is_finished(char MotionType,BOOL& IsFinished)
|
||
{
|
||
WaitForSingleObject(g_hHomedEvent, INFINITE); // machine start and homing is done
|
||
|
||
BOOL bIsFinised(FALSE);
|
||
if (g_so7_config.GetInterruptMsgMethod==E_GET_INTERRUPT_MSG_INQUIRY)
|
||
{
|
||
_send_cmd_SO7_CMD_GET_INTERRUPT_MSG(MotionType);
|
||
if (g_machine.GetInterruptMsg[MotionType][0]==CT_STOPXYZ)
|
||
{
|
||
bIsFinised=TRUE;
|
||
_send_cmd_SO7_CMD_SET_INTERRUPT_MSG(MotionType,0);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
_send_cmd_SO7_CMD_READ_INTERRUPT_MESSAGE();
|
||
if (g_machine.InterruptFlag[0]==CT_STOPXYZ)
|
||
{
|
||
bIsFinised=TRUE;
|
||
g_machine.InterruptFlag[0]=0;
|
||
}
|
||
}
|
||
IsFinished=bIsFinised;
|
||
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
};
|
||
//========================================================================
|
||
SSI_STATUS_MOTION CSO7_Proto::so7_motion_set_speed_percent(EMACHINE_AXIS cAxis, char cSpeedGear, double dSpeedPercent, double dAccelPercent)
|
||
{
|
||
char SetSpeedGear(0);
|
||
SetSpeedGear = static_cast<char>(abs(cSpeedGear));
|
||
if (SetSpeedGear > 4 || SetSpeedGear < 0)
|
||
{
|
||
return SSI_STATUS_MOTION_INVALID_PARAMETERS;
|
||
}
|
||
double dTmp(0.0);
|
||
switch (cAxis)
|
||
{
|
||
case MACHINE_AXIS_X:
|
||
{
|
||
if (g_machine.FirmwareVer >= FirmwareVer_6_X)
|
||
{
|
||
dTmp = ((g_machine.s_machine_config.x_axis._dMaxAccel - g_machine.s_machine_config.x_axis._dMinAccel)
|
||
*dAccelPercent) + g_machine.s_machine_config.x_axis._dMinAccel;
|
||
g_machine.s_machine_config.x_axis._speed_base[SetSpeedGear] = static_cast<char>(dTmp);
|
||
|
||
dTmp = ((g_machine.s_machine_config.x_axis._dMaxSpeed - g_machine.s_machine_config.x_axis._dMinSpeed)
|
||
*dSpeedPercent) + g_machine.s_machine_config.x_axis._dMinSpeed;
|
||
g_machine.s_machine_config.x_axis._speed_slow_dis[SetSpeedGear] = dTmp;
|
||
}
|
||
else
|
||
{
|
||
dTmp = ((g_machine.s_machine_config.x_axis._dMaxAccel - g_machine.s_machine_config.x_axis._dMinAccel)
|
||
*dAccelPercent) + g_machine.s_machine_config.x_axis._dMinAccel;
|
||
g_machine.s_machine_config.x_axis._speed_base[SetSpeedGear] = static_cast<char>(dTmp);
|
||
|
||
dTmp = ((g_machine.s_machine_config.x_axis._dMaxSpeed - g_machine.s_machine_config.x_axis._dMinSpeed)
|
||
*dSpeedPercent) + g_machine.s_machine_config.x_axis._dMinSpeed;
|
||
g_machine.s_machine_config.x_axis._speed_max[SetSpeedGear] = static_cast<char>(dTmp);
|
||
}
|
||
_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(0, SetSpeedGear);
|
||
|
||
break;
|
||
}
|
||
case MACHINE_AXIS_Y:
|
||
{
|
||
if (g_machine.FirmwareVer >= FirmwareVer_6_X)
|
||
{
|
||
dTmp = ((g_machine.s_machine_config.y_axis._dMaxAccel - g_machine.s_machine_config.y_axis._dMinAccel)
|
||
*dAccelPercent) + g_machine.s_machine_config.y_axis._dMinAccel;
|
||
g_machine.s_machine_config.y_axis._speed_base[SetSpeedGear] = static_cast<char>(dTmp);
|
||
|
||
dTmp = ((g_machine.s_machine_config.y_axis._dMaxSpeed - g_machine.s_machine_config.y_axis._dMinSpeed)
|
||
*dSpeedPercent) + g_machine.s_machine_config.y_axis._dMinSpeed;
|
||
g_machine.s_machine_config.y_axis._speed_slow_dis[SetSpeedGear] = dTmp;
|
||
}
|
||
else
|
||
{
|
||
dTmp = ((g_machine.s_machine_config.y_axis._dMaxAccel - g_machine.s_machine_config.y_axis._dMinAccel)
|
||
*dAccelPercent) + g_machine.s_machine_config.y_axis._dMinAccel;
|
||
g_machine.s_machine_config.y_axis._speed_base[SetSpeedGear] = static_cast<char>(dTmp);
|
||
|
||
dTmp = ((g_machine.s_machine_config.y_axis._dMaxSpeed - g_machine.s_machine_config.y_axis._dMinSpeed)
|
||
*dSpeedPercent) + g_machine.s_machine_config.y_axis._dMinSpeed;
|
||
g_machine.s_machine_config.y_axis._speed_max[SetSpeedGear] = static_cast<char>(dTmp);
|
||
}
|
||
_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(1, SetSpeedGear);
|
||
|
||
break;
|
||
}
|
||
case MACHINE_AXIS_Z:
|
||
{
|
||
if (g_machine.FirmwareVer >= FirmwareVer_6_X)
|
||
{
|
||
dTmp = ((g_machine.s_machine_config.z_axis._dMaxAccel - g_machine.s_machine_config.z_axis._dMinAccel)
|
||
*dAccelPercent) + g_machine.s_machine_config.z_axis._dMinAccel;
|
||
g_machine.s_machine_config.z_axis._speed_base[SetSpeedGear] = static_cast<char>(dTmp);
|
||
|
||
dTmp = ((g_machine.s_machine_config.z_axis._dMaxSpeed - g_machine.s_machine_config.z_axis._dMinSpeed)
|
||
*dSpeedPercent) + g_machine.s_machine_config.z_axis._dMinSpeed;
|
||
g_machine.s_machine_config.z_axis._speed_slow_dis[SetSpeedGear] = dTmp;
|
||
}
|
||
else
|
||
{
|
||
dTmp = ((g_machine.s_machine_config.z_axis._dMaxAccel - g_machine.s_machine_config.z_axis._dMinAccel)
|
||
*dAccelPercent) + g_machine.s_machine_config.z_axis._dMinAccel;
|
||
g_machine.s_machine_config.z_axis._speed_base[SetSpeedGear] = static_cast<char>(dTmp);
|
||
|
||
dTmp = ((g_machine.s_machine_config.z_axis._dMaxSpeed - g_machine.s_machine_config.z_axis._dMinSpeed)
|
||
*dSpeedPercent) + g_machine.s_machine_config.z_axis._dMinSpeed;
|
||
g_machine.s_machine_config.z_axis._speed_max[SetSpeedGear] = static_cast<char>(dTmp);
|
||
}
|
||
_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(2, SetSpeedGear);
|
||
|
||
break;
|
||
}
|
||
default:break;
|
||
}
|
||
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(EMACHINE_AXIS cAxis,char cSpeedGear,char Acce,char cHoldSpeed,char cStartSpeed,char cRefreshCycle,double dBufferDis)
|
||
{
|
||
char SetSpeedGear(0);
|
||
EMACHINE_AXIS SetAXIS(MACHINE_AXIS_NONE);
|
||
SetSpeedGear=static_cast<char>(abs(cSpeedGear));
|
||
if (SetSpeedGear>5)
|
||
{
|
||
SetSpeedGear=5;
|
||
}
|
||
else if (SetSpeedGear<0)
|
||
{
|
||
SetSpeedGear=0;
|
||
}
|
||
//SetSpeedGear=4-SetSpeedGear;
|
||
if (cAxis==MACHINE_AXIS_R)
|
||
{
|
||
if (g_machine.s_machine_config.r_axis.m_RotaryAxisNO==MACHINE_AXIS_X)
|
||
{
|
||
SetAXIS=MACHINE_AXIS_X;
|
||
}
|
||
else if (g_machine.s_machine_config.r_axis.m_RotaryAxisNO==MACHINE_AXIS_Y)
|
||
{
|
||
SetAXIS=MACHINE_AXIS_Y;
|
||
}
|
||
else if (g_machine.s_machine_config.r_axis.m_RotaryAxisNO==MACHINE_AXIS_Z)
|
||
{
|
||
SetAXIS=MACHINE_AXIS_Z;
|
||
}
|
||
}
|
||
|
||
switch(cAxis)
|
||
{
|
||
case MACHINE_AXIS_X:
|
||
{
|
||
g_machine.s_machine_config.x_axis._speed_base[SetSpeedGear]=Acce;
|
||
g_machine.s_machine_config.x_axis._speed_max[SetSpeedGear]=cHoldSpeed;
|
||
g_machine.s_machine_config.x_axis._speed_start[SetSpeedGear]=cStartSpeed;
|
||
g_machine.s_machine_config.x_axis._speed_fresh[SetSpeedGear]=cRefreshCycle;
|
||
g_machine.s_machine_config.x_axis._speed_slow_dis[SetSpeedGear]=dBufferDis;
|
||
_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(0,SetSpeedGear);
|
||
|
||
break;
|
||
}
|
||
case MACHINE_AXIS_Y:
|
||
{
|
||
g_machine.s_machine_config.y_axis._speed_base[SetSpeedGear]=Acce;
|
||
g_machine.s_machine_config.y_axis._speed_max[SetSpeedGear]=cHoldSpeed;
|
||
g_machine.s_machine_config.y_axis._speed_start[SetSpeedGear]=cStartSpeed;
|
||
g_machine.s_machine_config.y_axis._speed_fresh[SetSpeedGear]=cRefreshCycle;
|
||
g_machine.s_machine_config.y_axis._speed_slow_dis[SetSpeedGear]=dBufferDis;
|
||
_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(1,SetSpeedGear);
|
||
|
||
break;
|
||
}
|
||
case MACHINE_AXIS_Z:
|
||
{
|
||
g_machine.s_machine_config.z_axis._speed_base[SetSpeedGear]=Acce;
|
||
g_machine.s_machine_config.z_axis._speed_max[SetSpeedGear]=cHoldSpeed;
|
||
g_machine.s_machine_config.z_axis._speed_start[SetSpeedGear]=cStartSpeed;
|
||
g_machine.s_machine_config.z_axis._speed_fresh[SetSpeedGear]=cRefreshCycle;
|
||
g_machine.s_machine_config.z_axis._speed_slow_dis[SetSpeedGear]=dBufferDis;
|
||
_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(2,SetSpeedGear);
|
||
|
||
break;
|
||
}
|
||
case MACHINE_AXIS_ZOOM:
|
||
{
|
||
if (SetSpeedGear==4)
|
||
{
|
||
SetSpeedGear=0;
|
||
}
|
||
else if (SetSpeedGear==3)
|
||
{
|
||
SetSpeedGear=0;
|
||
}
|
||
else if (SetSpeedGear==2)
|
||
{
|
||
SetSpeedGear=1;
|
||
}
|
||
else if (SetSpeedGear==1)
|
||
{
|
||
SetSpeedGear=2;
|
||
}
|
||
g_machine.s_machine_config.zm_axis._speed._char_[0]=cStartSpeed;
|
||
g_machine.s_machine_config.zm_axis._speed._char_[1]=cHoldSpeed;
|
||
_send_cmd_SO7_CMD_SET_ZOOM_SPEED(SetSpeedGear);
|
||
|
||
break;
|
||
}
|
||
default:break;
|
||
}
|
||
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;
|
||
}
|
||
//========================================================================
|
||
void CSO7_Proto::so7_motion_set_speed_accel_range()
|
||
{
|
||
/**********************************************************
|
||
if (g_machine.FirmwareVer >= FirmwareVer_7_C)
|
||
{
|
||
g_machine.s_machine_config.x_axis._dMaxAccel = 255.0;
|
||
g_machine.s_machine_config.x_axis._dMinAccel = 0.0;
|
||
g_machine.s_machine_config.x_axis._dMaxSpeed = 50.0;
|
||
g_machine.s_machine_config.x_axis._dMinSpeed = 0.001;
|
||
|
||
g_machine.s_machine_config.y_axis._dMaxAccel = 255.0;
|
||
g_machine.s_machine_config.y_axis._dMinAccel = 0.0;
|
||
g_machine.s_machine_config.y_axis._dMaxSpeed = 50.0;
|
||
g_machine.s_machine_config.y_axis._dMinSpeed = 0.001;
|
||
|
||
g_machine.s_machine_config.z_axis._dMaxAccel = 255.0;
|
||
g_machine.s_machine_config.z_axis._dMinAccel = 0.0;
|
||
g_machine.s_machine_config.z_axis._dMaxSpeed = 50.0;
|
||
g_machine.s_machine_config.z_axis._dMinSpeed = 0.001;
|
||
}
|
||
else if (g_machine.FirmwareVer >= FirmwareVer_6_X)
|
||
{
|
||
g_machine.s_machine_config.x_axis._dMaxAccel = 100.0;
|
||
g_machine.s_machine_config.x_axis._dMinAccel = 0.0;
|
||
g_machine.s_machine_config.x_axis._dMaxSpeed = 3.0;
|
||
g_machine.s_machine_config.x_axis._dMinSpeed = 0.001;
|
||
|
||
g_machine.s_machine_config.y_axis._dMaxAccel = 100.0;
|
||
g_machine.s_machine_config.y_axis._dMinAccel = 0.0;
|
||
g_machine.s_machine_config.y_axis._dMaxSpeed = 3.0;
|
||
g_machine.s_machine_config.y_axis._dMinSpeed = 0.001;
|
||
|
||
g_machine.s_machine_config.z_axis._dMaxAccel = 100.0;
|
||
g_machine.s_machine_config.z_axis._dMinAccel = 0.0;
|
||
g_machine.s_machine_config.z_axis._dMaxSpeed = 3.0;
|
||
g_machine.s_machine_config.z_axis._dMinSpeed = 0.001;
|
||
}
|
||
else
|
||
{
|
||
g_machine.s_machine_config.x_axis._dMaxAccel = 255.0;
|
||
g_machine.s_machine_config.x_axis._dMinAccel = 0.0;
|
||
g_machine.s_machine_config.x_axis._dMaxSpeed = 255.0;
|
||
g_machine.s_machine_config.x_axis._dMinSpeed = 1.0;
|
||
|
||
g_machine.s_machine_config.y_axis._dMaxAccel = 255.0;
|
||
g_machine.s_machine_config.y_axis._dMinAccel = 0.0;
|
||
g_machine.s_machine_config.y_axis._dMaxSpeed = 255.0;
|
||
g_machine.s_machine_config.y_axis._dMinSpeed = 1.0;
|
||
|
||
g_machine.s_machine_config.z_axis._dMaxAccel = 255.0;
|
||
g_machine.s_machine_config.z_axis._dMinAccel = 0.0;
|
||
g_machine.s_machine_config.z_axis._dMaxSpeed = 255.0;
|
||
g_machine.s_machine_config.z_axis._dMinSpeed = 1.0;
|
||
}
|
||
**********************************************************/
|
||
int xyz_gear(4);
|
||
|
||
if (g_machine.FirmwareVer >= FirmwareVer_6_X)
|
||
{
|
||
g_machine.s_machine_config.x_axis._dMaxAccel = 1.0*(BYTE)g_machine.s_machine_config.x_axis._speed_base[xyz_gear];
|
||
g_machine.s_machine_config.x_axis._dMinAccel = 0.0;
|
||
g_machine.s_machine_config.x_axis._dMaxSpeed = g_machine.s_machine_config.x_axis._speed_slow_dis[xyz_gear];
|
||
g_machine.s_machine_config.x_axis._dMinSpeed = 0.001;
|
||
|
||
g_machine.s_machine_config.y_axis._dMaxAccel = 1.0*(BYTE)g_machine.s_machine_config.y_axis._speed_base[xyz_gear];
|
||
g_machine.s_machine_config.y_axis._dMinAccel = 0.0;
|
||
g_machine.s_machine_config.y_axis._dMaxSpeed = g_machine.s_machine_config.y_axis._speed_slow_dis[xyz_gear];
|
||
g_machine.s_machine_config.y_axis._dMinSpeed = 0.001;
|
||
|
||
g_machine.s_machine_config.z_axis._dMaxAccel = 1.0*(BYTE)g_machine.s_machine_config.z_axis._speed_base[xyz_gear];
|
||
g_machine.s_machine_config.z_axis._dMinAccel = 0.0;
|
||
g_machine.s_machine_config.z_axis._dMaxSpeed = g_machine.s_machine_config.z_axis._speed_slow_dis[xyz_gear];
|
||
g_machine.s_machine_config.z_axis._dMinSpeed = 0.001;
|
||
}
|
||
else
|
||
{
|
||
g_machine.s_machine_config.x_axis._dMaxAccel = 1.0*(BYTE)g_machine.s_machine_config.x_axis._speed_base[xyz_gear];
|
||
g_machine.s_machine_config.x_axis._dMinAccel = 0.0;
|
||
g_machine.s_machine_config.x_axis._dMaxSpeed = 1.0*(BYTE)g_machine.s_machine_config.x_axis._speed_max[xyz_gear];
|
||
g_machine.s_machine_config.x_axis._dMinSpeed = 1.0;
|
||
|
||
g_machine.s_machine_config.y_axis._dMaxAccel = 1.0*(BYTE)g_machine.s_machine_config.y_axis._speed_base[xyz_gear];
|
||
g_machine.s_machine_config.y_axis._dMinAccel = 0.0;
|
||
g_machine.s_machine_config.y_axis._dMaxSpeed = 1.0*(BYTE)g_machine.s_machine_config.y_axis._speed_max[xyz_gear];
|
||
g_machine.s_machine_config.y_axis._dMinSpeed = 1.0;
|
||
|
||
g_machine.s_machine_config.z_axis._dMaxAccel = 1.0*(BYTE)g_machine.s_machine_config.z_axis._speed_base[xyz_gear];
|
||
g_machine.s_machine_config.z_axis._dMinAccel = 0.0;
|
||
g_machine.s_machine_config.z_axis._dMaxSpeed = 1.0*(BYTE)g_machine.s_machine_config.z_axis._speed_max[xyz_gear];
|
||
g_machine.s_machine_config.z_axis._dMinSpeed = 1.0;
|
||
}
|
||
|
||
}
|
||
|
||
//========================================================================
|
||
SSI_STATUS_MOTION CSO7_Proto::so7_motion_set_all_speed_para()
|
||
{
|
||
_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(0, 0);
|
||
|
||
_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(0,1);
|
||
|
||
_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(0,2);
|
||
|
||
_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(0,3);
|
||
|
||
_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(0,4);
|
||
|
||
|
||
_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(1,0);
|
||
|
||
_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(1,1);
|
||
|
||
_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(1,2);
|
||
|
||
_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(1,3);
|
||
|
||
_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(1,4);
|
||
|
||
|
||
_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(2,0);
|
||
|
||
_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(2,1);
|
||
|
||
_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(2,2);
|
||
|
||
_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(2,3);
|
||
|
||
_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(2,4);
|
||
|
||
_send_cmd_SO7_CMD_SET_SPEED_PRECISION(0);
|
||
|
||
_send_cmd_SO7_CMD_SET_SPEED_PRECISION(1);
|
||
|
||
_send_cmd_SO7_CMD_SET_SPEED_PRECISION(2);
|
||
|
||
_send_cmd_SO7_CMD_SET_MOTOR_SPEED_WHEELBASE_PARAMETER();
|
||
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
//========================================================================
|
||
SSI_STATUS_MOTION CSO7_Proto::so7_motion_get_all_speed_para()
|
||
{
|
||
_send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 0, 0);
|
||
_send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 0, 1);
|
||
_send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 0, 2);
|
||
_send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 0, 3);
|
||
_send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 0, 4);
|
||
|
||
_send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 1, 0);
|
||
_send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 1, 1);
|
||
_send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 1, 2);
|
||
_send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 1, 3);
|
||
_send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 1, 4);
|
||
|
||
_send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 2, 0);
|
||
_send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 2, 1);
|
||
_send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 2, 2);
|
||
_send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 2, 3);
|
||
_send_cmd_SO7_CMD_READ_SPEED_PARAMETER( 2, 4);
|
||
|
||
_send_cmd_SO7_CMD_READ_SPEED_PRECISION(0);
|
||
_send_cmd_SO7_CMD_READ_SPEED_PRECISION(1);
|
||
_send_cmd_SO7_CMD_READ_SPEED_PRECISION(2);
|
||
_send_cmd_SO7_CMD_READ_MOTOR_SPEED_WHEELBASE_PARAMETER();
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
//========================================================================
|
||
SSI_STATUS_MOTION CSO7_Proto::_calculate_straightline_motion(double dSpeedMM)
|
||
{
|
||
Load_So7_Motion_Config();
|
||
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));
|
||
}
|
||
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();
|
||
Sleep(50);
|
||
|
||
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();
|
||
Sleep(50);
|
||
if (g_so7_config.m_bDebugOutputEnable >= 1)
|
||
{
|
||
g_pLogger->SendAndFlushWithTime(_T("so7_light_set_lamp_state:TOP:%d,BOT:%d,COAXIAL:%d,RESERVED:%d,RING:%d,ORING:%d,IRING:%d.\n")
|
||
, (BYTE)g_machine.s_lights_value._top_light, (BYTE)g_machine.s_lights_value._bottom_light, (BYTE)g_machine.s_lights_value._coaxial_light
|
||
, (BYTE)g_machine.s_lights_value._spare_light1, (BYTE)g_machine.s_lights_value._ring_light, (BYTE)g_machine.s_lights_value.segment[0]
|
||
, (BYTE)g_machine.s_lights_value.segment[1]);
|
||
}
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
};
|
||
|
||
//==================================================================
|
||
SSI_STATUS_MOTION CSO7_Proto::so7_light_set_lamp_state(double dTopLightPercent,double dBottomLightPercent,double dCoaxialLightPercent,double dReservedLightPercent,double dRingLightPercent,char cOuterRingLightSwitch,char cInnerRingLightSwitch)
|
||
{
|
||
WaitForSingleObject(g_hHomedEvent, INFINITE);
|
||
g_machine.s_lights_value._bottom_light = (static_cast<char>(dTopLightPercent* (MAXLIGHTVALUE-MINLIGHTVALUE)/100.0 ))+MINLIGHTVALUE;
|
||
g_machine.s_lights_value._top_light = (static_cast<char>(dBottomLightPercent*(MAXLIGHTVALUE-MINLIGHTVALUE)/100.0))+MINLIGHTVALUE;
|
||
g_machine.s_lights_value._ring_light = (static_cast<char>(dRingLightPercent*(MAXLIGHTVALUE-MINLIGHTVALUE)/100.0))+MINLIGHTVALUE;
|
||
g_machine.s_lights_value._coaxial_light = (static_cast<char>(dCoaxialLightPercent*(MAXLIGHTVALUE-MINLIGHTVALUE)/100.0))+MINLIGHTVALUE;
|
||
g_machine.s_lights_value._spare_light1 = (static_cast<char>(dReservedLightPercent*(MAXLIGHTVALUE-MINLIGHTVALUE)/100.0))+MINLIGHTVALUE;
|
||
g_machine.s_lights_value.segment[0] = cOuterRingLightSwitch;
|
||
g_machine.s_lights_value.segment[1] = cInnerRingLightSwitch;
|
||
_send_cmd_SO7_CMD_SET_ALL_LIGHT_VALUE();
|
||
Sleep(50);
|
||
if (g_so7_config.m_bDebugOutputEnable>=1)
|
||
{
|
||
g_pLogger->SendAndFlushWithTime(_T("so7_light_set_lamp_state:TOP:%d,BOT:%d,COAXIAL:%d,RESERVED:%d,RING:%d,ORING:%d,IRING:%d.\n")
|
||
,(BYTE)g_machine.s_lights_value._bottom_light,(BYTE)g_machine.s_lights_value._top_light,(BYTE)g_machine.s_lights_value._coaxial_light
|
||
,(BYTE)g_machine.s_lights_value._spare_light1,(BYTE)g_machine.s_lights_value._ring_light,(BYTE)g_machine.s_lights_value.segment[0]
|
||
,(BYTE)g_machine.s_lights_value.segment[1]);
|
||
}
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
};
|
||
|
||
|
||
//==================================================================
|
||
SSI_STATUS_MOTION CSO7_Proto::so7_GetDIO(int Channel,BYTE& bDISts)
|
||
{
|
||
char Addr(0);
|
||
switch(Channel)
|
||
{
|
||
case INPORT_J2:
|
||
{
|
||
Addr = ESO7_CONTROLLER_INPUT_PORT_ADDR;
|
||
break;
|
||
}
|
||
case OUTPORT_J1:
|
||
{
|
||
Addr = ESO7_CONTROLLER_WOUTPUT_PORT_ADDR;
|
||
break;
|
||
}
|
||
case OUTPORT_J3:
|
||
{
|
||
Addr = ESO7_CONTROLLER_OUTPUT_PORT_ADDR;
|
||
break;
|
||
}
|
||
case LIMIT_SWITCH_J4:
|
||
{
|
||
Addr = ESO7_CONTROLLER_LIMIT_SWITCH_ADDR;
|
||
break;
|
||
}
|
||
default:
|
||
{
|
||
Addr = -1;
|
||
break;
|
||
}
|
||
}
|
||
if (Addr >= 0)
|
||
{
|
||
_send_cmd_SO7_CMD_READ_INPUT_PORT_STATUS(Addr);
|
||
bDISts=static_cast<BYTE>(g_machine.InPortStatus);
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
else
|
||
{
|
||
bDISts=0;
|
||
return SSI_STATUS_MOTION_INVALID_PARAMETERS;
|
||
}
|
||
}
|
||
//==================================================================
|
||
SSI_STATUS_MOTION CSO7_Proto::so7_SetDO(int Channel,BYTE bDOSts)
|
||
{
|
||
char cSetIOStatusAddr(0);
|
||
char cSetValue(0);
|
||
switch(Channel)
|
||
{
|
||
case OUTPORT_J1:
|
||
{
|
||
if (bDOSts&HBIT0)
|
||
{
|
||
_send_cmd_SO7_CMD_COMMON_COMMAND(CT_MOTOR,CT_M_LASE_ON,0);
|
||
}
|
||
else
|
||
{
|
||
_send_cmd_SO7_CMD_COMMON_COMMAND(CT_MOTOR,CT_M_LASE_OFF,0);
|
||
}
|
||
Sleep(5);
|
||
if (bDOSts&HBIT1)
|
||
{
|
||
cSetIOStatusAddr=1;
|
||
cSetValue=1;
|
||
}
|
||
else
|
||
{
|
||
cSetIOStatusAddr=1;
|
||
cSetValue=0;
|
||
}
|
||
_send_cmd_SO7_CMD_COMMON_COMMAND_DATA(CT_DATA,CT_WRITE_IO_DAT,cSetIOStatusAddr,cSetValue);
|
||
Sleep(5);
|
||
if (bDOSts&HBIT2)
|
||
{
|
||
cSetIOStatusAddr=2;
|
||
cSetValue=1;
|
||
}
|
||
else
|
||
{
|
||
cSetIOStatusAddr=2;
|
||
cSetValue=0;
|
||
}
|
||
_send_cmd_SO7_CMD_COMMON_COMMAND_DATA(CT_DATA,CT_WRITE_IO_DAT,cSetIOStatusAddr,cSetValue);
|
||
Sleep(5);
|
||
if (bDOSts&HBIT3)
|
||
{
|
||
cSetIOStatusAddr=3;
|
||
cSetValue=1;
|
||
}
|
||
else
|
||
{
|
||
cSetIOStatusAddr=3;
|
||
cSetValue=0;
|
||
}
|
||
_send_cmd_SO7_CMD_COMMON_COMMAND_DATA(CT_DATA,CT_WRITE_IO_DAT,cSetIOStatusAddr,cSetValue);
|
||
Sleep(5);
|
||
if (bDOSts&HBIT4)
|
||
{
|
||
cSetIOStatusAddr=4;
|
||
cSetValue=1;
|
||
}
|
||
else
|
||
{
|
||
cSetIOStatusAddr=4;
|
||
cSetValue=0;
|
||
}
|
||
_send_cmd_SO7_CMD_COMMON_COMMAND_DATA(CT_DATA,CT_WRITE_IO_DAT,cSetIOStatusAddr,cSetValue);
|
||
Sleep(5);
|
||
if (bDOSts&HBIT5)
|
||
{
|
||
cSetIOStatusAddr=5;
|
||
cSetValue=1;
|
||
}
|
||
else
|
||
{
|
||
cSetIOStatusAddr=5;
|
||
cSetValue=0;
|
||
}
|
||
_send_cmd_SO7_CMD_COMMON_COMMAND_DATA(CT_DATA,CT_WRITE_IO_DAT,cSetIOStatusAddr,cSetValue);
|
||
Sleep(5);
|
||
break;
|
||
}
|
||
case OUTPORT_J3:
|
||
{
|
||
if (bDOSts&HBIT0)
|
||
{
|
||
_send_cmd_SO7_CMD_COMMON_COMMAND(CT_MOTOR,CT_M_PROBE_OFF,0);
|
||
Sleep(5);
|
||
_send_cmd_SO7_CMD_COMMON_COMMAND(CT_MOTOR,CT_LASE_TIMMER_ON,0);
|
||
}
|
||
else
|
||
{
|
||
_send_cmd_SO7_CMD_COMMON_COMMAND(CT_MOTOR,CT_M_PROBE_ON,0);
|
||
Sleep(5);
|
||
_send_cmd_SO7_CMD_COMMON_COMMAND(CT_MOTOR,CT_LASE_TIMMER_OFF,0);
|
||
}
|
||
Sleep(5);
|
||
if (bDOSts&HBIT1)
|
||
{
|
||
cSetIOStatusAddr=11;
|
||
cSetValue=1;
|
||
}
|
||
else
|
||
{
|
||
cSetIOStatusAddr=11;
|
||
cSetValue=0;
|
||
}
|
||
_send_cmd_SO7_CMD_COMMON_COMMAND_DATA(CT_DATA,CT_WRITE_IO_DAT,cSetIOStatusAddr,cSetValue);
|
||
Sleep(5);
|
||
if (bDOSts&HBIT2)
|
||
{
|
||
cSetIOStatusAddr=12;
|
||
cSetValue=1;
|
||
}
|
||
else
|
||
{
|
||
cSetIOStatusAddr=12;
|
||
cSetValue=0;
|
||
}
|
||
_send_cmd_SO7_CMD_COMMON_COMMAND_DATA(CT_DATA,CT_WRITE_IO_DAT,cSetIOStatusAddr,cSetValue);
|
||
Sleep(5);
|
||
if (bDOSts&HBIT3)
|
||
{
|
||
cSetIOStatusAddr=13;
|
||
cSetValue=1;
|
||
}
|
||
else
|
||
{
|
||
cSetIOStatusAddr=13;
|
||
cSetValue=0;
|
||
}
|
||
_send_cmd_SO7_CMD_COMMON_COMMAND_DATA(CT_DATA,CT_WRITE_IO_DAT,cSetIOStatusAddr,cSetValue);
|
||
Sleep(5);
|
||
if (bDOSts&HBIT4)
|
||
{
|
||
cSetIOStatusAddr=14;
|
||
cSetValue=1;
|
||
}
|
||
else
|
||
{
|
||
cSetIOStatusAddr=14;
|
||
cSetValue=0;
|
||
}
|
||
_send_cmd_SO7_CMD_COMMON_COMMAND_DATA(CT_DATA,CT_WRITE_IO_DAT,cSetIOStatusAddr,cSetValue);
|
||
Sleep(5);
|
||
if (bDOSts&HBIT5)
|
||
{
|
||
cSetIOStatusAddr=15;
|
||
cSetValue=1;
|
||
}
|
||
else
|
||
{
|
||
cSetIOStatusAddr=15;
|
||
cSetValue=0;
|
||
}
|
||
_send_cmd_SO7_CMD_COMMON_COMMAND_DATA(CT_DATA,CT_WRITE_IO_DAT,cSetIOStatusAddr,cSetValue);
|
||
Sleep(5);
|
||
break;
|
||
}
|
||
default:
|
||
{
|
||
break;
|
||
}
|
||
}
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
|
||
SSI_STATUS_MOTION CSO7_Proto::so7_motion_set_trig_para(char _cAxis,char _TrigMode,long _ParaNumber,long* _ParaData)
|
||
{
|
||
if (g_machine.FirmwareVer >= FirmwareVer_7_X)
|
||
{
|
||
long SetStartIndex(0);
|
||
long SetParaNumber(0);
|
||
if (_TrigMode == E_DIS_TRIG_PULSE_EQDIS)
|
||
{
|
||
SetParaNumber = _ParaNumber;
|
||
_send_cmd_SO7_CMD_WRITE_TRIG_PULSE_PARA(_cAxis, _TrigMode, SetStartIndex, SetParaNumber, _ParaData);
|
||
}
|
||
else if (_TrigMode == E_DIS_TRIG_PULSE_EQDIS_II)
|
||
{
|
||
SetParaNumber = _ParaNumber;
|
||
_send_cmd_SO7_CMD_WRITE_TRIG_PULSE_PARA(_cAxis, _TrigMode, SetStartIndex, SetParaNumber, _ParaData);
|
||
}
|
||
else
|
||
{
|
||
do
|
||
{
|
||
if ((_ParaNumber - SetStartIndex) > 15)
|
||
{
|
||
SetParaNumber = 15;
|
||
}
|
||
else
|
||
{
|
||
SetParaNumber = (_ParaNumber - SetStartIndex);
|
||
}
|
||
_send_cmd_SO7_CMD_WRITE_TRIG_PULSE_PARA(_cAxis, _TrigMode, SetStartIndex, SetParaNumber, _ParaData);
|
||
SetStartIndex += SetParaNumber;
|
||
} while ((_ParaNumber - SetStartIndex) > 0);
|
||
}
|
||
|
||
if (g_so7_config.m_bDebugOutputEnable >= 1)
|
||
{
|
||
TCHAR cLogBuffer[1024] = { 0 };
|
||
int iLogBufSize(0);
|
||
iLogBufSize = wcslen(cLogBuffer);
|
||
wcscpy_s(&cLogBuffer[iLogBufSize], 1024 - iLogBufSize, L"[Motion_Set_ExternalTrigPara] ");
|
||
iLogBufSize = wcslen(cLogBuffer);
|
||
if (_cAxis == E_AXIS_X)
|
||
{
|
||
wcscpy_s(&cLogBuffer[iLogBufSize], 1024 - iLogBufSize, L"Axis=X,");
|
||
}
|
||
else if (_cAxis == E_AXIS_Y)
|
||
{
|
||
wcscpy_s(&cLogBuffer[iLogBufSize], 1024 - iLogBufSize, L"Axis=Y,");
|
||
}
|
||
else
|
||
{
|
||
wcscpy_s(&cLogBuffer[iLogBufSize], 1024 - iLogBufSize, L"Axis=Z,");
|
||
}
|
||
iLogBufSize = wcslen(cLogBuffer);
|
||
if (_TrigMode == E_DIS_TRIG_PULSE_SPEC_LOCA)
|
||
{
|
||
wcscpy_s(&cLogBuffer[iLogBufSize], 1024 - iLogBufSize, L"Trig Mode=SPEC_LOCA,");
|
||
}
|
||
else if (_TrigMode == E_DIS_TRIG_PULSE_EQDIS_II)
|
||
{
|
||
wcscpy_s(&cLogBuffer[iLogBufSize], 1024 - iLogBufSize, L"Trig Mode=EQDIS_II,");
|
||
}
|
||
else
|
||
{
|
||
wcscpy_s(&cLogBuffer[iLogBufSize], 1024 - iLogBufSize, L"Trig Mode=EQDIS,");
|
||
}
|
||
iLogBufSize = wcslen(cLogBuffer);
|
||
swprintf_s(&cLogBuffer[iLogBufSize], 1024 - iLogBufSize, L"Trig Pnts=%d", _ParaNumber);
|
||
for (int i = 0; i < _ParaNumber; i++)
|
||
{
|
||
iLogBufSize = wcslen(cLogBuffer);
|
||
if (iLogBufSize < 1000)
|
||
swprintf_s(&cLogBuffer[iLogBufSize], 1024 - iLogBufSize, L",Trig Dis[%d]=%d", i, _ParaData[i]);
|
||
else
|
||
break;
|
||
}
|
||
iLogBufSize = wcslen(cLogBuffer);
|
||
cLogBuffer[iLogBufSize++] = '.';
|
||
cLogBuffer[iLogBufSize++] = '\n';
|
||
cLogBuffer[iLogBufSize++] = 0;
|
||
g_pLogger->SendAndFlushWithTime(cLogBuffer);
|
||
}
|
||
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
else
|
||
{
|
||
return SSI_STATUS_MOTION_NOT_SUPPORTED;
|
||
}
|
||
}
|
||
|
||
SSI_STATUS_MOTION CSO7_Proto::so7_motion_get_trig_para(long _Index,char& _cAxis,char& _TrigMode,long& _ParaNumber,long& _ParaData)
|
||
{
|
||
_send_cmd_SO7_CMD_READ_TRIG_PULSE_PARA(_Index);
|
||
_cAxis=g_machine.TrigPara.TrigPulseActiveAxis;
|
||
_TrigMode=g_machine.TrigPara.TrigPulseMethod;
|
||
_ParaNumber=static_cast<long>(g_machine.TrigPara.TrigTotalNo._long_);
|
||
_ParaData=static_cast<long>(g_machine.TrigPara.TrigReadPara._long_);
|
||
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;
|
||
|
||
TRACE1("[MOVE_X]:%d\n",static_cast<int>(SpeedGear));
|
||
if (g_so7_config.m_bDebugOutputEnable>=1)
|
||
{
|
||
g_pLogger->SendAndFlushWithTime(_T("Jog X:%d.\n"),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;
|
||
|
||
TRACE1("[MOVE_Y]:%d\n",static_cast<int>(SpeedGear));
|
||
if (g_so7_config.m_bDebugOutputEnable>=1)
|
||
{
|
||
g_pLogger->SendAndFlushWithTime(_T("Jog Y:%d.\n"),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;
|
||
|
||
TRACE1("[MOVE_Z]:%d\n",static_cast<int>(SpeedGear));
|
||
if (g_so7_config.m_bDebugOutputEnable>=1)
|
||
{
|
||
g_pLogger->SendAndFlushWithTime(_T("Jog Z:%d.\n"),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;
|
||
|
||
TRACE("[STOP_XYZ]\n");
|
||
|
||
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);
|
||
g_machine.s_status._bXYZZMIdle=true;
|
||
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]);
|
||
}
|
||
pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[9]=(g_machine.x._MoveTo_Speed_Gear);
|
||
pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[10]=(g_machine.y._MoveTo_Speed_Gear);
|
||
pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[11]=(g_machine.z._MoveTo_Speed_Gear);
|
||
ep_buff[EP_02_CMD_IDX]._size = 0x0E;
|
||
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[1];
|
||
pSO7_CMD_02->s_SO7_CMD_SET_LIGHT._inner_ring_light_switch =g_machine.s_lights_value.segment[0];
|
||
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);
|
||
|
||
if (g_so7_config.m_bDebugOutputEnable>=1)
|
||
{
|
||
g_pLogger->SendAndFlushWithTime(_T("SEND_SYS_COMMAND:Cmd:%d,SubCmd:%d,Type:%d,Data:%d.\n")
|
||
,Cmd,SubCmd,Type,Data);
|
||
}
|
||
|
||
*(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_CONSTANT_SPEED(int iSpeed,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);
|
||
char _speed_base(0);
|
||
char _speed_fresh(0);
|
||
char _speed_start(0);
|
||
char _speed_max(0);
|
||
if (g_machine.FirmwareVer>=FirmwareVer_6_X)
|
||
{
|
||
iDeceDistance = iSpeed;
|
||
}
|
||
else
|
||
{
|
||
if (iSpeed>255)
|
||
{
|
||
BYTE MaxSpeed(255);
|
||
_speed_start=static_cast<char>((iSpeed%256)+1);
|
||
_speed_max=static_cast<char>(MaxSpeed);
|
||
}
|
||
else
|
||
{
|
||
_speed_start= static_cast<char>(iSpeed);
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+6) = 0;
|
||
}
|
||
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;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+3) = _speed_base;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+4) = _speed_fresh;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+5) = _speed_start;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+6) = _speed_max;
|
||
char cBuffer;
|
||
cBuffer =static_cast<char>(iDeceDistance/1000);
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+7) =cBuffer;
|
||
cBuffer = static_cast<char>((iDeceDistance%1000)/100);
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+8) = cBuffer;
|
||
cBuffer = static_cast<char>((iDeceDistance%100)/10);
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+9) = cBuffer;
|
||
cBuffer = static_cast<char>(iDeceDistance%10);
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+10)= cBuffer;
|
||
|
||
|
||
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_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);
|
||
|
||
}
|
||
char cBuffer;
|
||
cBuffer =static_cast<char>(iDeceDistance/1000);
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+7) =cBuffer;
|
||
cBuffer = static_cast<char>((iDeceDistance%1000)/100);
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+8) = cBuffer;
|
||
cBuffer = static_cast<char>((iDeceDistance%100)/10);
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+9) = cBuffer;
|
||
cBuffer = static_cast<char>(iDeceDistance%10);
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+10)= cBuffer;
|
||
|
||
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::_send_cmd_SO7_CMD_READ_INPUT_PORT_STATUS(char AddrType)
|
||
{
|
||
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_IO_DAT;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+2)=AddrType;
|
||
|
||
ep_buff[EP_02_CMD_IDX]._size = 0x03;
|
||
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_ZSIGNAL_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_DATA;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_READ_SEC_REALX;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+2)=0;
|
||
|
||
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_READ_ZSIGNAL_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_DATA;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_READ_SEC_REALY;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+2)=0;
|
||
|
||
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_READ_ZSIGNAL_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_DATA;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_READ_SEC_REALZ;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+2)=0;
|
||
|
||
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_WRITE_DATA_TO_FPGA(char axis_type,char Addr,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) = CT_DATA;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_WRITE_SYSTEM;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+2)=axis_type;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+3)=Addr;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+4)=Data;
|
||
|
||
ep_buff[EP_02_CMD_IDX]._size = 0x05;
|
||
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_DATA_FROM_FPGA(char axis_type,char Addr)
|
||
{
|
||
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_SYSTEM;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+2)=axis_type;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+3)=Addr;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+4)=0;
|
||
|
||
ep_buff[EP_02_CMD_IDX]._size = 0x05;
|
||
ep_buff[EP_82_DATA_IDX]._size = 0x12;
|
||
|
||
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_FIRMWARE_VERSION_INFO()
|
||
{
|
||
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_SYSTEM_VER_INFO;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+2)=0;
|
||
|
||
ep_buff[EP_02_CMD_IDX]._size = 0x03;
|
||
ep_buff[EP_82_DATA_IDX]._size = 0x12;
|
||
|
||
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_INTERRUPT_MSG(char cType)
|
||
{
|
||
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_INTERRUPT_MSG;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+2)=cType;
|
||
|
||
ep_buff[EP_02_CMD_IDX]._size = 0x03;
|
||
ep_buff[EP_82_DATA_IDX]._size = 0x12;
|
||
|
||
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_INTERRUPT_MSG(char cType,char cValue)
|
||
{
|
||
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_INTERRUPT_MSG;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+2)=cType;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+3)=cValue;
|
||
|
||
|
||
ep_buff[EP_02_CMD_IDX]._size = 0x04;
|
||
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_SET_GET_INTERRUPT_MSG_METHOD(char Method)
|
||
{
|
||
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_GETINTERRUPTMSG_METHOD;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+2)=Method;
|
||
|
||
|
||
ep_buff[EP_02_CMD_IDX]._size = 0x03;
|
||
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_XY(char SpeedGearX,char SpeedGearY)
|
||
{
|
||
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_MOVEXY;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+2)=SpeedGearX;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+3)=SpeedGearY;
|
||
|
||
TRACE2("[MOVE_XY]:X %d;Y %d.\n",static_cast<int>(SpeedGearX),static_cast<int>(SpeedGearY));
|
||
|
||
ep_buff[EP_02_CMD_IDX]._size = 0x04;
|
||
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_SET_SEQ_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_DATA;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_WRITE_SEQ_NUMBER;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+2)=g_machine.SEQ_NUMBER;
|
||
|
||
ep_buff[EP_02_CMD_IDX]._size = 0x03;
|
||
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_GET_SEQ_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_DATA;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_READ_SEQ_NUMBER;
|
||
|
||
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_TRIG_PULSE_PARA(long ParaIndex)
|
||
{
|
||
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
|
||
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
|
||
char cBuff(0);
|
||
g_machine.TrigPara.TrigReadIndex._long_=ParaIndex;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_DATA;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_READ_TRIG_PULSE_PARA;
|
||
cBuff = (ParaIndex>>16) & 0x0ff;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+2) = cBuff;
|
||
cBuff = (ParaIndex>>8) & 0x0ff;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+3) = cBuff;
|
||
cBuff = ParaIndex & 0x0ff;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+4) = cBuff;
|
||
|
||
ep_buff[EP_02_CMD_IDX]._size = 0x05;
|
||
ep_buff[EP_82_DATA_IDX]._size = 0x011;
|
||
|
||
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_WRITE_TRIG_PULSE_PARA(char ActiveAxis,char TrigMode,long StartIndex,long ParaNumber,long* Para)
|
||
{
|
||
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
|
||
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
|
||
char cBuff(0);
|
||
long sPara(0);
|
||
int index(0);
|
||
g_machine.TrigPara.TrigPulseActiveAxis=ActiveAxis;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = CT_DATA;
|
||
index++;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = CT_WRITE_TRIG_PULSE_PARA;
|
||
index++;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = ActiveAxis;
|
||
index++;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = TrigMode;
|
||
index++;
|
||
cBuff = (StartIndex>>16) & 0x0ff;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = cBuff;
|
||
index++;
|
||
cBuff = (StartIndex>>8) & 0x0ff;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = cBuff;
|
||
index++;
|
||
cBuff = StartIndex & 0x0ff;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = cBuff;
|
||
index++;
|
||
cBuff = (ParaNumber>>16) & 0x0ff;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = cBuff;
|
||
index++;
|
||
cBuff = (ParaNumber>>8) & 0x0ff;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = cBuff;
|
||
index++;
|
||
cBuff = ParaNumber & 0x0ff;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = cBuff;
|
||
index++;
|
||
int j=index;
|
||
long lSetParaNumber(0);
|
||
if (TrigMode==E_DIS_TRIG_PULSE_EQDIS)
|
||
{
|
||
lSetParaNumber=1;
|
||
}
|
||
else if (TrigMode==E_DIS_TRIG_PULSE_EQDIS)
|
||
{
|
||
lSetParaNumber=2;
|
||
}
|
||
else
|
||
{
|
||
lSetParaNumber=ParaNumber;
|
||
}
|
||
for (long i=StartIndex;i<(StartIndex+lSetParaNumber);i++)
|
||
{
|
||
if (Para[i]<0)
|
||
{
|
||
sPara=-Para[i];
|
||
cBuff = (sPara>>16) & 0x0ff;
|
||
cBuff = cBuff | 0x80;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+j) = cBuff;
|
||
j++;
|
||
cBuff = (sPara>>8) & 0x0ff;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+j) = cBuff;
|
||
j++;
|
||
cBuff = sPara & 0x0ff;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+j) = cBuff;
|
||
j++;
|
||
}
|
||
else
|
||
{
|
||
cBuff = (Para[i]>>16) & 0x0ff;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+j) = cBuff;
|
||
j++;
|
||
cBuff = (Para[i]>>8) & 0x0ff;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+j) = cBuff;
|
||
j++;
|
||
cBuff = Para[i] & 0x0ff;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+j) = cBuff;
|
||
j++;
|
||
}
|
||
}
|
||
ep_buff[EP_02_CMD_IDX]._size = j;
|
||
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_TRIG_PULSE_START()
|
||
{
|
||
if (g_machine.FirmwareVer >= FirmwareVer_7_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_DATA;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer + 1) = CT_START_TRIG_PULSE;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer + 2) = g_machine.TrigPara.TrigPulseActiveAxis;
|
||
|
||
ep_buff[EP_02_CMD_IDX]._size = 0x03;
|
||
ep_buff[EP_81_DATA_IDX]._size = 0x00;
|
||
|
||
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_TRIG_PULSE_STOP()
|
||
{
|
||
if (g_machine.FirmwareVer >= FirmwareVer_7_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_DATA;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer + 1) = CT_STOP_TRIG_PULSE;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer + 2) = g_machine.TrigPara.TrigPulseActiveAxis;
|
||
|
||
ep_buff[EP_02_CMD_IDX]._size = 0x03;
|
||
ep_buff[EP_81_DATA_IDX]._size = 0x00;
|
||
|
||
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_IO_PURPOSE(BOOL _bEnTrigIO)
|
||
{
|
||
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_SET_IO_PURPOSE;
|
||
if (_bEnTrigIO)
|
||
{
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+2)=1;
|
||
}
|
||
else
|
||
{
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+2)=0;
|
||
}
|
||
ep_buff[EP_02_CMD_IDX]._size = 0x03;
|
||
ep_buff[EP_81_DATA_IDX]._size = 0x00;
|
||
|
||
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_MOTION_CNTS(char _Speedgear,char _StartCnts,char _StopCnts)
|
||
{
|
||
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_MOTION_FINISHED_CNTS;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+2)= _Speedgear;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+3)= _StartCnts;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+4)= _StopCnts;
|
||
|
||
ep_buff[EP_02_CMD_IDX]._size = 0x05;
|
||
ep_buff[EP_81_DATA_IDX]._size = 0x00;
|
||
|
||
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_GET_MOTION_CNTS(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_GET_MOTION_FINISHED_CNTS;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+2) = _Speedgear;
|
||
|
||
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_SET_CONTROL_MODE(char axis_type,char ControlMode)
|
||
{
|
||
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;
|
||
char cCMD(0);
|
||
if(axis_type==E_AXIS_X)
|
||
{
|
||
cCMD=CT_WRITE_X_CONTROL_MODE;
|
||
}
|
||
else if(axis_type==E_AXIS_Y)
|
||
{
|
||
cCMD=CT_WRITE_Y_CONTROL_MODE;
|
||
}
|
||
else
|
||
{
|
||
cCMD=CT_WRITE_Z_CONTROL_MODE;
|
||
}
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = cCMD;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+2)= ControlMode;
|
||
|
||
ep_buff[EP_02_CMD_IDX]._size = 0x05;
|
||
ep_buff[EP_81_DATA_IDX]._size = 0x00;
|
||
|
||
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_GET_CONTROL_MODE(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_DATA;
|
||
char cCMD(0);
|
||
if(axis_type==E_AXIS_X)
|
||
{
|
||
cCMD=CT_READ_X_CONTROL_MODE;
|
||
}
|
||
else if(axis_type==E_AXIS_Y)
|
||
{
|
||
cCMD=CT_READ_Y_CONTROL_MODE;
|
||
}
|
||
else
|
||
{
|
||
cCMD=CT_READ_Z_CONTROL_MODE;
|
||
}
|
||
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = cCMD;
|
||
|
||
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_SET_MOTION_SEGMENT_DIS(char axis_type,char _SegmentIndex,long _lDis)
|
||
{
|
||
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
|
||
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
|
||
char cBuff(0);
|
||
int index(0);
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = CT_MOTOR;
|
||
index++;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = CT_SET_MOTION_SEGMENT_DIS;
|
||
index++;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = axis_type-1;
|
||
index++;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = _SegmentIndex;
|
||
index++;
|
||
|
||
cBuff = (_lDis>>16) & 0x0ff;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = cBuff;
|
||
index++;
|
||
cBuff = (_lDis>>8) & 0x0ff;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = cBuff;
|
||
index++;
|
||
cBuff = _lDis & 0x0ff;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = cBuff;
|
||
index++;
|
||
|
||
ep_buff[EP_02_CMD_IDX]._size = index;
|
||
ep_buff[EP_81_DATA_IDX]._size = 0x00;
|
||
|
||
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_GET_MOTION_SEGMENT_DIS(char axis_type,char _SegmentIndex)
|
||
{
|
||
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_MOTION_SEGMENT_DIS;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+2) = axis_type-1;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+3) = _SegmentIndex;
|
||
|
||
ep_buff[EP_02_CMD_IDX]._size = 0x04;
|
||
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::_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;
|
||
|
||
|
||
// for rotary table
|
||
//if (g_machine.z._scale_pos._long_ > 4194304)
|
||
// g_machine.z._scale_pos._long_=g_machine.z._scale_pos._long_-8388608;
|
||
|
||
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);
|
||
char cTmp=*(ep_buff[EP_82_DATA_IDX]._buffer+1);
|
||
if (cTmp==1)
|
||
{
|
||
g_machine.IsSupportReadInterrputMsg=TRUE;
|
||
}
|
||
else
|
||
{
|
||
g_machine.IsSupportReadInterrputMsg=FALSE;
|
||
}
|
||
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;
|
||
}
|
||
//==============================================================
|
||
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_READ_INPUT_PORT_STATUS()
|
||
{
|
||
g_machine.InPortStatus=0;
|
||
g_machine.InPortStatus=*(ep_buff[EP_82_DATA_IDX]._buffer);
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
//==============================================================
|
||
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_READ_ZSIGNAL_POS_X()
|
||
{
|
||
g_machine.x._ZSignal_pos._char_[2] = *(ep_buff[EP_82_DATA_IDX]._buffer);
|
||
g_machine.x._ZSignal_pos._char_[1] = *(ep_buff[EP_82_DATA_IDX]._buffer+1);
|
||
g_machine.x._ZSignal_pos._char_[0] = *(ep_buff[EP_82_DATA_IDX]._buffer+2);
|
||
g_machine.x._ZSignal_pos._char_[3] = 0;
|
||
|
||
if (g_machine.x._ZSignal_pos._long_ > 8388608)
|
||
g_machine.x._ZSignal_pos._long_=g_machine.x._ZSignal_pos._long_-16777216;
|
||
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
//==============================================================
|
||
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_READ_ZSIGNAL_POS_Y()
|
||
{
|
||
g_machine.y._ZSignal_pos._char_[2] = *(ep_buff[EP_82_DATA_IDX]._buffer);
|
||
g_machine.y._ZSignal_pos._char_[1] = *(ep_buff[EP_82_DATA_IDX]._buffer+1);
|
||
g_machine.y._ZSignal_pos._char_[0] = *(ep_buff[EP_82_DATA_IDX]._buffer+2);
|
||
g_machine.y._ZSignal_pos._char_[3] = 0;
|
||
|
||
if (g_machine.y._ZSignal_pos._long_ > 8388608)
|
||
g_machine.y._ZSignal_pos._long_=g_machine.y._ZSignal_pos._long_-16777216;
|
||
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
//==============================================================
|
||
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_READ_ZSIGNAL_POS_Z()
|
||
{
|
||
g_machine.z._ZSignal_pos._char_[2] = *(ep_buff[EP_82_DATA_IDX]._buffer);
|
||
g_machine.z._ZSignal_pos._char_[1] = *(ep_buff[EP_82_DATA_IDX]._buffer+1);
|
||
g_machine.z._ZSignal_pos._char_[0] = *(ep_buff[EP_82_DATA_IDX]._buffer+2);
|
||
g_machine.z._ZSignal_pos._char_[3] = 0;
|
||
|
||
if (g_machine.z._ZSignal_pos._long_ > 8388608)
|
||
g_machine.z._ZSignal_pos._long_=g_machine.z._ZSignal_pos._long_-16777216;
|
||
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
//==============================================================
|
||
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_WRITE_DATA_TO_FPGA()
|
||
{
|
||
g_machine.FPGAData = *(ep_buff[EP_82_DATA_IDX]._buffer);
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
//==============================================================
|
||
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_READ_DATA_FROM_FPGA()
|
||
{
|
||
g_machine.FPGAData = *(ep_buff[EP_82_DATA_IDX]._buffer);
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
//==============================================================
|
||
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_READ_FIRMWARE_VERSION_INFO()
|
||
{
|
||
for (int i=0;i<10;i++)
|
||
{
|
||
g_machine.FirmwareInfo[i]=*(ep_buff[EP_82_DATA_IDX]._buffer+i);
|
||
}
|
||
|
||
if (g_machine.FirmwareInfo[3]=='6')
|
||
{
|
||
g_machine.FirmwareVer=FirmwareVer_6_X;
|
||
}
|
||
else if (g_machine.FirmwareInfo[3]=='7')
|
||
{
|
||
if (g_machine.FirmwareInfo[5] == '1')
|
||
{
|
||
if (g_machine.FirmwareInfo[6] >= '2')
|
||
{
|
||
g_machine.FirmwareVer = FirmwareVer_7_C;
|
||
}
|
||
else
|
||
{
|
||
g_machine.FirmwareVer = FirmwareVer_7_A;
|
||
}
|
||
}
|
||
else if (g_machine.FirmwareInfo[5]=='0' && g_machine.FirmwareInfo[6]=='9' )
|
||
{
|
||
g_machine.FirmwareVer=FirmwareVer_7_9;
|
||
}
|
||
else
|
||
{
|
||
g_machine.FirmwareVer=FirmwareVer_7_X;
|
||
}
|
||
}
|
||
else if (g_machine.FirmwareInfo[3]=='8')
|
||
{
|
||
g_machine.FirmwareVer=FirmwareVer_8_X;
|
||
}
|
||
|
||
else if (g_machine.FirmwareInfo[3]=='9')
|
||
{
|
||
g_machine.FirmwareVer=FirmwareVer_9_X;
|
||
}
|
||
else
|
||
{
|
||
g_machine.FirmwareVer=FirmwareVer_3_X;
|
||
}
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
//==============================================================
|
||
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_GET_INTERRUPT_MSG(BYTE Type)
|
||
{
|
||
g_machine.GetInterruptMsg[Type][0]=*(ep_buff[EP_82_DATA_IDX]._buffer);
|
||
g_machine.GetInterruptMsg[Type][1]=*(ep_buff[EP_82_DATA_IDX]._buffer+1);
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
//==============================================================
|
||
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_GET_SEQ_NUMBER()
|
||
{
|
||
g_machine.SEQ_NUMBER=*(ep_buff[EP_82_DATA_IDX]._buffer);
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
//==============================================================
|
||
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_READ_TRIG_PULSE_PARA()
|
||
{
|
||
int index(0);
|
||
g_machine.TrigPara.TrigPulseActiveAxis=*(ep_buff[EP_82_DATA_IDX]._buffer+index);
|
||
index++;
|
||
g_machine.TrigPara.TrigPulseMethod=*(ep_buff[EP_82_DATA_IDX]._buffer+index);
|
||
index++;
|
||
g_machine.TrigPara.TrigTotalNo._char_[2]=*(ep_buff[EP_82_DATA_IDX]._buffer+index);
|
||
index++;
|
||
g_machine.TrigPara.TrigTotalNo._char_[1]=*(ep_buff[EP_82_DATA_IDX]._buffer+index);
|
||
index++;
|
||
g_machine.TrigPara.TrigTotalNo._char_[0]=*(ep_buff[EP_82_DATA_IDX]._buffer+index);
|
||
g_machine.TrigPara.TrigTotalNo._char_[3]=0;
|
||
index++;
|
||
g_machine.TrigPara.TrigCurIndex._char_[2]=*(ep_buff[EP_82_DATA_IDX]._buffer+index);
|
||
index++;
|
||
g_machine.TrigPara.TrigCurIndex._char_[1]=*(ep_buff[EP_82_DATA_IDX]._buffer+index);
|
||
index++;
|
||
g_machine.TrigPara.TrigCurIndex._char_[0]=*(ep_buff[EP_82_DATA_IDX]._buffer+index);
|
||
g_machine.TrigPara.TrigCurIndex._char_[3]=0;
|
||
index++;
|
||
g_machine.TrigPara.TrigReadPara._char_[2]=*(ep_buff[EP_82_DATA_IDX]._buffer+index);
|
||
index++;
|
||
g_machine.TrigPara.TrigReadPara._char_[1]=*(ep_buff[EP_82_DATA_IDX]._buffer+index);
|
||
index++;
|
||
g_machine.TrigPara.TrigReadPara._char_[0]=*(ep_buff[EP_82_DATA_IDX]._buffer+index);
|
||
g_machine.TrigPara.TrigReadPara._char_[3]=0;
|
||
index++;
|
||
if (g_machine.TrigPara.TrigReadPara._char_[2]&0x80)
|
||
{
|
||
g_machine.TrigPara.TrigReadPara._char_[2]&=0x7f;
|
||
g_machine.TrigPara.TrigReadPara._long_ *=-1;
|
||
}
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
//==============================================================
|
||
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_WRITE_TRIG_PULSE_PARA()
|
||
{
|
||
int index(0);
|
||
g_machine.TrigPara.TrigTotalNo._char_[2]=*(ep_buff[EP_82_DATA_IDX]._buffer+index);
|
||
index++;
|
||
g_machine.TrigPara.TrigTotalNo._char_[1]=*(ep_buff[EP_82_DATA_IDX]._buffer+index);
|
||
index++;
|
||
g_machine.TrigPara.TrigTotalNo._char_[0]=*(ep_buff[EP_82_DATA_IDX]._buffer+index);
|
||
g_machine.TrigPara.TrigTotalNo._char_[3]=0;
|
||
index++;
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
//==============================================================
|
||
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_GET_MOTION_CNTS()
|
||
{
|
||
int index(0);
|
||
g_machine.Arm_MotionSpeedGear=*(ep_buff[EP_82_DATA_IDX]._buffer);
|
||
g_machine.Arm_MotionStartCnts[index]=*(ep_buff[EP_82_DATA_IDX]._buffer+1);
|
||
g_machine.Arm_MotionStopCnts[index]=*(ep_buff[EP_82_DATA_IDX]._buffer+2);
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
//==============================================================
|
||
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_GET_CONTROL_MODE()
|
||
{
|
||
g_machine.FPGAData = *(ep_buff[EP_82_DATA_IDX]._buffer);
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
|
||
//==============================================================
|
||
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_GET_MOTION_SEGMENT_DIS(BYTE axis_type,BYTE _SegmentIndex)
|
||
{
|
||
BYTE rBuffer[3] = {0};
|
||
rBuffer[0]=*(ep_buff[EP_82_DATA_IDX]._buffer);
|
||
rBuffer[1]=*(ep_buff[EP_82_DATA_IDX]._buffer+1);
|
||
rBuffer[2]=*(ep_buff[EP_82_DATA_IDX]._buffer+2);
|
||
if (axis_type==E_ACTIVE_AXIS_X)
|
||
{
|
||
g_machine.s_machine_config.x_axis._MotionSegmentDis[_SegmentIndex]=rBuffer[0]*65536+rBuffer[1]*256+rBuffer[2];
|
||
}
|
||
else if (axis_type==E_ACTIVE_AXIS_Y)
|
||
{
|
||
g_machine.s_machine_config.y_axis._MotionSegmentDis[_SegmentIndex]=rBuffer[0]*65536+rBuffer[1]*256+rBuffer[2];
|
||
}
|
||
else
|
||
{
|
||
g_machine.s_machine_config.z_axis._MotionSegmentDis[_SegmentIndex]=rBuffer[0]*65536+rBuffer[1]*256+rBuffer[2];
|
||
}
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
|
||
void CSO7_Proto::so7_load_ef1a_config(int _LoadType)
|
||
{
|
||
FILE *hConfigFile = NULL;
|
||
char szLine[MAX_BUFF_SIZE];
|
||
char *token = NULL;
|
||
char seps[] = " =,\t\n";
|
||
char cTemp[100]={0};
|
||
CString csAppPath;
|
||
GetAppPath(csAppPath);
|
||
CString csSO7ConfigFile(_T(""));
|
||
if (_LoadType==1)
|
||
{
|
||
csSO7ConfigFile=csAppPath+_T("\\so7_config.ini");
|
||
}
|
||
if (_LoadType==2)
|
||
{
|
||
|
||
csSO7ConfigFile = csAppPath + _T("\\Config\\so7_config.ini");
|
||
}
|
||
else
|
||
{
|
||
csSO7ConfigFile=csAppPath+_T("\\So7Config_Utility.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);
|
||
//===============AUTO ZOOM==================
|
||
if (!_stricmp(token, "IS_USER_EF1A_CONTROLLER"))
|
||
{
|
||
token = strtok(NULL, seps);
|
||
if (token)
|
||
{
|
||
strcpy_s(cTemp, 20, token);
|
||
int nIsUserEF1A = atoi(cTemp);
|
||
isEF1AController = nIsUserEF1A >= 1 ? true:false;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
fclose(hConfigFile);
|
||
}
|
||
}
|
||
|
||
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_GET_EXTRA_IO_STATUS()
|
||
{
|
||
g_machine.cIOStatus = *(ep_buff[EP_82_DATA_IDX]._buffer);
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
|
||
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_SET_EXTRA_IO_STATUS()
|
||
{
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
|
||
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_SET_EXTRA_IO(int nIONmmber,char bValue)
|
||
{
|
||
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_WRITE_EXTRA_IO;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+2) = nIONmmber;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+3) = bValue;
|
||
|
||
ep_buff[EP_02_CMD_IDX]._size = 0x08;
|
||
ep_buff[EP_81_DATA_IDX]._size = 0x00;
|
||
|
||
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_GET_EXTRA_IO(int nIONumber)
|
||
{
|
||
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_EXTRA_IO;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+2)=nIONumber;
|
||
|
||
ep_buff[EP_02_CMD_IDX]._size = 0x05;
|
||
ep_buff[EP_82_DATA_IDX]._size = 0x08;
|
||
|
||
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::_process_SO7_CMD_GET_MOTION_TYPE()
|
||
{
|
||
g_machine.bMotionType = *(ep_buff[EP_82_DATA_IDX]._buffer);
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
|
||
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_SET_MOTION_TYPE()
|
||
{
|
||
return SSI_STATUS_MOTION_NORMAL;
|
||
}
|
||
|
||
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_SET_MOTION_TYPE(BOOL 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_DATA;
|
||
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_WRITE_MOTION_TYPE;
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+2) = type;
|
||
|
||
ep_buff[EP_02_CMD_IDX]._size = 0x08;
|
||
ep_buff[EP_81_DATA_IDX]._size = 0x00;
|
||
|
||
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_GET_MOTION_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_DATA;
|
||
|
||
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_READ_MOTION_TYPE;
|
||
|
||
ep_buff[EP_02_CMD_IDX]._size = 0x05;
|
||
ep_buff[EP_82_DATA_IDX]._size = 0x08;
|
||
|
||
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;
|
||
} |