Files
EF3-Interface/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp
T
2022-12-05 10:31:18 +08:00

8138 lines
279 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#include "stdafx.h"
#include <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;
}