#include "stdafx.h" #include "SO7_Proto.h" #include "math.h" #define MY_CONFIG 1 #define MAX_DEVPATH_LENGTH 256 #define ENDPOINT_TIMEOUT 500 #define MAX_IN_BUFF_SIZE 1024 //***** Static Data ***** static char *outBuff = NULL; struct_so7_ep_buff CSO7_Proto::ep_buff[lEPSIZE]; //================================================================ int CSO7_Proto::g_hEP8x_Thread_State=THREAD_PAUSED; HANDLE CSO7_Proto::g_hEP8x_Thread_Id=NULL; //================================================================ int CSO7_Proto::g_hEP02_Thread_State=THREAD_PAUSED; HANDLE CSO7_Proto::g_hEP02_Thread_Id=NULL; HANDLE CSO7_Proto::g_hEP02_Serial_Mutex; //================================================================ struct_so7_machine CSO7_Proto::g_machine; usb_dev_handle *CSO7_Proto::g_dev=NULL; CLogger *CSO7_Proto::g_pLogger; HANDLE CSO7_Proto::g_hHomedEvent = NULL; CLogger* g_pLog=NULL; //=========================================================================== // Worker Thread to serialize EP_S07_02 commands. //=========================================================================== unsigned __stdcall CSO7_Proto::g_EP02_Thread(LPVOID pThis) { CSO7_Proto* _This = (CSO7_Proto*)pThis; for (;;) { TRACE0("g_hEP02_Thread in loop set.\n"); if (g_hEP02_Thread_State == THREAD_EXIT) ExitThread(0); WaitForSingleObject(ep_buff[EP_02_CMD_IDX]._event,INFINITE); TRACE0("g_hEP02_Thread obtained event.\n"); switch (g_hEP02_Thread_State) { case THREAD_EXIT: { ExitThread(0); } case THREAD_PAUSED: break; case THREAD_RUNNING_STATE1: { TRACE0("g_hEP02_Thread calling _send_usb_cmd. EP_S07_02; \n"); _This->_send_usb_cmd(EP_02_CMD_IDX); TRACE0("g_hEP02_Thread return _send_usb_cmd. EP_S07_02; \n"); break; } case THREAD_RUNNING_STATE2: { TRACE0("g_hSerialUsbThread processing _write_usb_data_only();\n"); _This->_write_usb_data_only(EP_02_CMD_IDX); TRACE0("g_hSerialUsbThread return from _write_usb_data_only();\n"); break; } default: ExitThread(0); } }; g_hEP02_Thread_State = THREAD_EXIT; ExitThread(0); }; //****************************************************************************** // This is the worker thread to process USBD_TRANSFER_DIRECTION_IN //****************************************************************************** unsigned __stdcall CSO7_Proto::g_EP8x_Thread(LPVOID pThis) { CSO7_Proto* _This = (CSO7_Proto*)pThis; for (;;) { TRACE0("g_hEP8x_Thread_State in loop set.\n"); if (g_hEP8x_Thread_State == THREAD_EXIT) ExitThread(0); WaitForSingleObject(ep_buff[EP_82_DATA_IDX]._event, INFINITE); TRACE0("g_hEP8x_Thread_State obtained event.\n"); switch (g_hEP8x_Thread_State) { case THREAD_EXIT: { ExitThread(0); } case THREAD_PAUSED: break; case THREAD_RUNNING_STATE1: { _This->_read_data_8x(EP_81_DATA_IDX); break; } case THREAD_RUNNING_STATE2: { _This->_read_data_8x(EP_82_DATA_IDX); break; } default: ExitThread(0); } } } //****************************************************************************** // Parse the data received based on the index (which EP are we processing). // The CCmdObj should only have one CMD_STATUS_PROCESSING. // Update CCmdObj _ep_01_status and _ep_81_status. // Update _status to CMD_STATUS_COMPLETE when both _ep_01_status and _ep_81_status // are CMD_STATUS_COMPLETE. // //****************************************************************************** void CSO7_Proto::_process_rcv_transfer_data(int iEP) { switch (iEP) { case EP_01_CMD_IDX : TRACE0("_process_rcv_transfer_data() : Update EP_01_CMD_IDX.\r\n"); break; case EP_82_DATA_IDX : // if (ep_buff[EP_02_CMD_IDX]._save_send_cmd == CT_MOTOR) { switch (ep_buff[EP_02_CMD_IDX]._save_send_cmd0) { case CT_MOVEX: _process_SO7_CMD_MOVE_X(); break; case CT_MOVEY: _process_SO7_CMD_MOVE_Y(); break; case CT_MOVEZ: _process_SO7_CMD_MOVE_Z(); break; case CT_MOVEV: _process_SO7_CMD_MOVE_ZM(); break; case CT_RESET: _process_SO7_CMD_MOVE_RESET_XYZ(); break; case CT_MOVETOX: _process_SO7_CMD_MOVE_TO_POS_X(); break; case CT_MOVETOY: _process_SO7_CMD_MOVE_TO_POS_Y(); break; case CT_MOVETOZ: _process_SO7_CMD_MOVE_TO_POS_Z(); break; case CT_MOVETOV: _process_SO7_CMD_MOVE_TO_POS_ZM(); break; case CT_MOVETOXYZ: _process_SO7_CMD_MOVE_TO_POS_XYZ(); break; case CT_SET_SPEEDX: case CT_SET_SPEEDY: case CT_SET_SPEEDZ: _process_SO7_CMD_SET_SPEED_PARAMETER(); break; case CT_READ_SPEEDX: _process_SO7_CMD_READ_SPEED_PARAMETERX(); break; case CT_READ_SPEEDY: _process_SO7_CMD_READ_SPEED_PARAMETERY(); break; case CT_READ_SPEEDZ: _process_SO7_CMD_READ_SPEED_PARAMETERZ(); break; case CT_SET_PRECISIONX: case CT_SET_PRECISIONY: case CT_SET_PRECISIONZ: _process_SO7_CMD_SET_SPEED_PRECISION(); break; case CT_READ_PRECISIONX: _process_SO7_CMD_READ_SPEED_PRECISIONX(); break; case CT_READ_PRECISIONY: _process_SO7_CMD_READ_SPEED_PRECISIONY(); break; case CT_READ_PRECISIONZ: _process_SO7_CMD_READ_SPEED_PRECISIONZ(); break; case CT_SET_MOTOR_CAL: _process_SO7_CMD_SET_SPEED_MOTOR_WHEELBASE_PARAMETER(); break; case CT_READ_MOTOR_CAL: _process_SO7_CMD_READ_MOTOR_SPEED_WHEELBASE_PARAMETER(); break; break; case CT_TEST_STOP: _process_SO7_CMD_READ_ZOOM_MOTION_STATUS(); break; case CT_GET_INTERRUPT_MSG: _process_SO7_CMD_GET_INTERRUPT_MSG(ep_buff[EP_02_CMD_IDX]._save_send_cmd1); 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; 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 (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>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;iSend(_T("Construct Cso7_Proto.\r\n")); }; //****************************************************************************** CSO7_Proto::~CSO7_Proto() { for (int i=0;iSend(_T("Destruct Cso7_Proto.\r\n")); delete g_pLogger; g_pLogger = NULL; } #pragma warning(disable:4996) //============================================================================== //****************************************************************************** SSI_STATUS_MOTION CSO7_Proto::so7_motion_reset_controller_parameter() { for(int i=0;i<5;i++) { g_machine.s_machine_config.x_axis._speed_base[i]=0; g_machine.s_machine_config.x_axis._speed_max[i]=0; g_machine.s_machine_config.x_axis._speed_start[i]=0; g_machine.s_machine_config.x_axis._speed_fresh[i]=0; g_machine.s_machine_config.x_axis._speed_slow_dis[i]=0; g_machine.s_machine_config.y_axis._speed_base[i]=0; g_machine.s_machine_config.y_axis._speed_max[i]=0; g_machine.s_machine_config.y_axis._speed_start[i]=0; g_machine.s_machine_config.y_axis._speed_fresh[i]=0; g_machine.s_machine_config.y_axis._speed_slow_dis[i]=0; g_machine.s_machine_config.z_axis._speed_base[i]=0; g_machine.s_machine_config.z_axis._speed_max[i]=0; g_machine.s_machine_config.z_axis._speed_start[i]=0; g_machine.s_machine_config.z_axis._speed_fresh[i]=0; g_machine.s_machine_config.z_axis._speed_slow_dis[i]=0; } g_machine.s_machine_config.x_axis._motor_wheelbase=0; g_machine.s_machine_config.y_axis._motor_wheelbase=0; g_machine.s_machine_config.z_axis._motor_wheelbase=0; g_machine._motor_pulse_num=10000; g_machine.s_machine_config.x_axis._motor_precision=0; g_machine.s_machine_config.y_axis._motor_precision=0; g_machine.s_machine_config.z_axis._motor_precision=0; return SSI_STATUS_MOTION_NORMAL; } //========================================================================================= SSI_STATUS_MOTION CSO7_Proto::Save_SevenOcean_Inifile(CString path_and_fileName) { FILE* m_pOutFile; char *outBuff = NULL; char tmp; _wfopen_s(&m_pOutFile, path_and_fileName, _T("wt")); if (!m_pOutFile) { free(outBuff); } else { outBuff="[HARDWARE]"; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile, "\n"); outBuff="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="SPEED_BASE_X1="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.x_axis._speed_base[0]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_MAX_X1="; fprintf(m_pOutFile,"%s", outBuff); tmp= g_machine.s_machine_config.x_axis._speed_max[0]; fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.x_axis._speed_max[0]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_START_X1="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.x_axis._speed_start[0]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_FRESH_X1="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.x_axis._speed_fresh[0]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_SLOW_X1="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.x_axis._speed_slow_dis[0]); fprintf(m_pOutFile, "\n"); fprintf(m_pOutFile,"%s", ";\n"); outBuff="SPEED_BASE_X2="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.x_axis._speed_base[1]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_MAX_X2="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", g_machine.s_machine_config.x_axis._speed_max[1]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_START_X2="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.x_axis._speed_start[1]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_FRESH_X2="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.x_axis._speed_fresh[1]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_SLOW_X2="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.x_axis._speed_slow_dis[1]); fprintf(m_pOutFile, "\n"); fprintf(m_pOutFile,"%s", ";\n"); outBuff="SPEED_BASE_X3="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d",(byte) g_machine.s_machine_config.x_axis._speed_base[2]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_MAX_X3="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.x_axis._speed_max[2]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_START_X3="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.x_axis._speed_start[2]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_FRESH_X3="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.x_axis._speed_fresh[2]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_SLOW_X3="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.x_axis._speed_slow_dis[2]); fprintf(m_pOutFile, "\n"); fprintf(m_pOutFile,"%s", ";\n"); outBuff="SPEED_BASE_X4="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.x_axis._speed_base[3]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_MAX_X4="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.x_axis._speed_max[3]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_START_X4="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.x_axis._speed_start[3]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_FRESH_X4="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.x_axis._speed_fresh[3]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_SLOW_X4="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.x_axis._speed_slow_dis[3]); fprintf(m_pOutFile, "\n"); fprintf(m_pOutFile,"%s", ";\n"); outBuff="SPEED_BASE_X5="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.x_axis._speed_base[4]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_MAX_X5="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.x_axis._speed_max[4]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_START_X5="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.x_axis._speed_start[4]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_FRESH_X5="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.x_axis._speed_fresh[4]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_SLOW_X5="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.x_axis._speed_slow_dis[4]); fprintf(m_pOutFile, "\n"); fprintf(m_pOutFile,"%s", ";\n"); outBuff="SPEED_BASE_Y1="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.y_axis._speed_base[0]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_MAX_Y1="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.y_axis._speed_max[0]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_START_Y1="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.y_axis._speed_start[0]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_FRESH_Y1="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.y_axis._speed_fresh[0]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_SLOW_Y1="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.y_axis._speed_slow_dis[0]); fprintf(m_pOutFile, "\n"); fprintf(m_pOutFile,"%s", ";\n"); outBuff="SPEED_BASE_Y2="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.y_axis._speed_base[1]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_MAX_Y2="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.y_axis._speed_max[1]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_START_Y2="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.y_axis._speed_start[1]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_FRESH_Y2="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.y_axis._speed_fresh[1]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_SLOW_Y2="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.y_axis._speed_slow_dis[1]); fprintf(m_pOutFile, "\n"); fprintf(m_pOutFile,"%s", ";\n"); outBuff="SPEED_BASE_Y3="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.y_axis._speed_base[2]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_MAX_Y3="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.y_axis._speed_max[2]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_START_Y3="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.y_axis._speed_start[2]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_FRESH_Y3="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.y_axis._speed_fresh[2]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_SLOW_Y3="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.y_axis._speed_slow_dis[2]); fprintf(m_pOutFile, "\n"); fprintf(m_pOutFile,"%s", ";\n"); outBuff="SPEED_BASE_Y4="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.y_axis._speed_base[3]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_MAX_Y4="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.y_axis._speed_max[3]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_START_Y4="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.y_axis._speed_start[3]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_FRESH_Y4="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.y_axis._speed_fresh[3]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_SLOW_Y4="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.y_axis._speed_slow_dis[3]); fprintf(m_pOutFile, "\n"); fprintf(m_pOutFile,"%s", ";\n"); outBuff="SPEED_BASE_Y5="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.y_axis._speed_base[4]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_MAX_Y5="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", g_machine.s_machine_config.y_axis._speed_max[4]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_START_Y5="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.y_axis._speed_start[4]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_FRESH_Y5="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.y_axis._speed_fresh[4]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_SLOW_Y5="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.y_axis._speed_slow_dis[4]); fprintf(m_pOutFile, "\n"); fprintf(m_pOutFile,"%s", ";\n"); outBuff="SPEED_BASE_Z1="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.z_axis._speed_base[0]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_MAX_Z1="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.z_axis._speed_max[0]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_START_Z1="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.z_axis._speed_start[0]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_FRESH_Z1="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.z_axis._speed_fresh[0]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_SLOW_Z1="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.z_axis._speed_slow_dis[0]); fprintf(m_pOutFile, "\n"); fprintf(m_pOutFile,"%s", ";\n"); outBuff="SPEED_BASE_Z2="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.z_axis._speed_base[1]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_MAX_Z2="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.z_axis._speed_max[1]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_START_Z2="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.z_axis._speed_start[1]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_FRESH_Z2="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.z_axis._speed_fresh[1]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_SLOW_Z2="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.z_axis._speed_slow_dis[1]); fprintf(m_pOutFile, "\n"); fprintf(m_pOutFile,"%s", ";\n"); outBuff="SPEED_BASE_Z3="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.z_axis._speed_base[2]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_MAX_Z3="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.z_axis._speed_max[2]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_START_Z3="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.z_axis._speed_start[2]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_FRESH_Z3="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.z_axis._speed_fresh[2]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_SLOW_Z3="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.z_axis._speed_slow_dis[2]); fprintf(m_pOutFile, "\n"); fprintf(m_pOutFile,"%s", ";\n"); outBuff="SPEED_BASE_Z4="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.z_axis._speed_base[3]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_MAX_Z4="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.z_axis._speed_max[3]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_START_Z4="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.z_axis._speed_start[3]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_FRESH_Z4="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.z_axis._speed_fresh[3]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_SLOW_Z4="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.z_axis._speed_slow_dis[3]); fprintf(m_pOutFile, "\n"); fprintf(m_pOutFile,"%s", ";\n"); outBuff="SPEED_BASE_Z5="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.z_axis._speed_base[4]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_MAX_Z5="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", (byte)g_machine.s_machine_config.z_axis._speed_max[4]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_START_Z5="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.z_axis._speed_start[4]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_FRESH_Z5="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d",(byte)g_machine.s_machine_config.z_axis._speed_fresh[4]); fprintf(m_pOutFile, "\n"); outBuff="SPEED_SLOW_Z5="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.z_axis._speed_slow_dis[4]); fprintf(m_pOutFile, "\n"); fprintf(m_pOutFile,"%s", ";\n"); outBuff="X_MOTOR_PRECISION="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.x_axis._motor_precision); fprintf(m_pOutFile, "\n"); outBuff="Y_MOTOR_PRECISION="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.y_axis._motor_precision); fprintf(m_pOutFile, "\n"); outBuff="Z_MOTOR_PRECISION="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.z_axis._motor_precision); fprintf(m_pOutFile, "\n"); fprintf(m_pOutFile,"%s", ";\n"); outBuff="X_MOTOR_WHEELBASE="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.x_axis._motor_wheelbase); fprintf(m_pOutFile, "\n"); outBuff="Y_MOTOR_WHEELBASE="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.y_axis._motor_wheelbase); fprintf(m_pOutFile, "\n"); outBuff="Z_MOTOR_WHEELBASE="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.3f",g_machine.s_machine_config.z_axis._motor_wheelbase); fprintf(m_pOutFile, "\n"); fprintf(m_pOutFile,"%s", ";\n"); outBuff="MOTOR_PULSE_NUM="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d",g_machine._motor_pulse_num); fprintf(m_pOutFile, "\n"); fprintf(m_pOutFile,"%s", ";\n"); //===========worktable===================== outBuff="[WORKTABLE]"; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile, "\n"); outBuff="X_SCALE_RESOLUTION="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.3f", g_machine.s_machine_config.x_axis._scale_resolution); fprintf(m_pOutFile, "\n"); outBuff="Y_SCALE_RESOLUTION="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.3f", g_machine.s_machine_config.y_axis._scale_resolution); fprintf(m_pOutFile, "\n"); outBuff="Z_SCALE_RESOLUTION="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.3f", g_machine.s_machine_config.z_axis._scale_resolution); fprintf(m_pOutFile, "\n"); fprintf(m_pOutFile,"%s", ";\n"); outBuff="X_NEG_WORKING_LIMIT="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.3f", g_machine.s_machine_config.x_axis._neg_working_limit); fprintf(m_pOutFile, "\n"); outBuff="Y_NEG_WORKING_LIMIT="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.3f", g_machine.s_machine_config.y_axis._neg_working_limit); fprintf(m_pOutFile, "\n"); outBuff="Z_NEG_WORKING_LIMIT="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.3f", g_machine.s_machine_config.z_axis._neg_working_limit); fprintf(m_pOutFile, "\n"); fprintf(m_pOutFile,"%s", ";\n"); outBuff="X_POS_WORKING_LIMIT="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.3f", g_machine.s_machine_config.x_axis._pos_working_limit); fprintf(m_pOutFile, "\n"); outBuff="Y_POS_WORKING_LIMIT="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.3f", g_machine.s_machine_config.y_axis._pos_working_limit); fprintf(m_pOutFile, "\n"); outBuff="Z_POS_WORKING_LIMIT="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.3f", g_machine.s_machine_config.z_axis._pos_working_limit); fprintf(m_pOutFile, "\n"); outBuff="ROTARY_CIR_DIS="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.3f", g_machine.dRotaryCirclDis); fprintf(m_pOutFile, "\n"); fprintf(m_pOutFile,"%s", ";\n"); fclose(m_pOutFile); } return SSI_STATUS_MOTION_NORMAL; } //****************************************************************************** //log file shows the machine speed data SSI_STATUS_MOTION CSO7_Proto::Load_SevenOcean_Inifile(CString cso7IniFile) { FILE *hConfigFile = NULL; char szLine[MAX_BUFF_SIZE]; char *token = NULL; char seps[] = " =,\t\n"; char cTemp[20]={0}; CString csSO7ConfigFile =cso7IniFile;//csAppPath+_T("\\so7_config.ini"); _wfopen_s(&hConfigFile,csSO7ConfigFile,_T("rt")); if(hConfigFile) { while (!feof(hConfigFile)) { fgets(szLine,MAX_BUFF_SIZE,hConfigFile);//read a line if((szLine[0]!=';')&&(strlen(szLine)>2)) { token = strtok(szLine,seps); 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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(atoi(cTemp)); } } else if(!_stricmp(token, "SPEED_SLOW_Z5"))//SPEED_SLOW_Z5 { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.z_axis._speed_slow_dis[4]=atof(cTemp); } } //XZY_MOTOR_PRECISION else if(!_stricmp(token, "X_MOTOR_PRECISION"))//SET MOTOR PRECISION { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.x_axis._motor_precision=atof(cTemp); } } else if(!_stricmp(token, "Y_MOTOR_PRECISION")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.y_axis._motor_precision=atof(cTemp); } } else if(!_stricmp(token, "Z_MOTOR_PRECISION")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.z_axis._motor_precision=atof(cTemp); } } else if(!_stricmp(token, "X_MOTOR_WHEELBASE"))//SET MOTOR WHEELBASE { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.x_axis._motor_wheelbase=atof(cTemp); } } else if(!_stricmp(token, "Y_MOTOR_WHEELBASE")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.y_axis._motor_wheelbase=atof(cTemp); } } else if(!_stricmp(token, "Z_MOTOR_WHEELBASE")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.z_axis._motor_wheelbase=atof(cTemp); } } else if(!_stricmp(token, "MOTOR_PULSE_NUM")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine._motor_pulse_num=atoi(cTemp); } } //=====================[WORKTABLE]======================== else if(!_stricmp(token, "X_SCALE_RESOLUTION")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.x_axis._scale_resolution=atof(cTemp); } } else if(!_stricmp(token, "Y_SCALE_RESOLUTION")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.y_axis._scale_resolution=atof(cTemp); } } else if(!_stricmp(token, "Z_SCALE_RESOLUTION")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.z_axis._scale_resolution=atof(cTemp); } } else if(!_stricmp(token, "X_NEG_WORKING_LIMIT")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.x_axis._neg_working_limit=atof(cTemp); } } else if(!_stricmp(token, "Y_NEG_WORKING_LIMIT")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.y_axis._neg_working_limit=atof(cTemp); } } else if(!_stricmp(token, "Z_NEG_WORKING_LIMIT")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.z_axis._neg_working_limit=atof(cTemp); } } else if(!_stricmp(token, "X_POS_WORKING_LIMIT")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.x_axis._pos_working_limit=atof(cTemp); } } else if(!_stricmp(token, "Y_POS_WORKING_LIMIT")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.y_axis._pos_working_limit=atof(cTemp); } } else if(!_stricmp(token, "Z_POS_WORKING_LIMIT")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.z_axis._pos_working_limit=atof(cTemp); } } else if (!_stricmp(token,"ROTARY_CIR_DIS")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.dRotaryCirclDis=atof(cTemp); } } } } fclose(hConfigFile); } return SSI_STATUS_MOTION_NORMAL; } //========================================================================================= SSI_STATUS_MOTION CSO7_Proto::Save_So7_Config() { FILE* m_pOutFile= NULL; char *outBuff = NULL; CString csAppPath; GetAppPath(csAppPath); CString cFileName=csAppPath+_T("\\so7_config.ini"); _wfopen_s(&m_pOutFile, cFileName, _T("wt")); if (!m_pOutFile) { free(outBuff); } else { outBuff="[7OCEANAUTOZOOM]"; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile, "\n"); outBuff="ZOOM_PRODUCT_ID="; fprintf(m_pOutFile,"%s", outBuff); USES_CONVERSION; outBuff=T2A(g_machine.s_machine_config.zm_axis._ProductID); fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile, "\n"); outBuff="ZOOM_COM_PORT="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", g_machine.s_machine_config.zm_axis._ComPort); fprintf(m_pOutFile, "\n"); outBuff="ZOOM_START_DEG="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.6f", g_machine.s_machine_config.zm_axis._StartDegree); fprintf(m_pOutFile, "\n"); outBuff="ZOOM_END_DEG="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.6f", g_machine.s_machine_config.zm_axis._EndDegree); fprintf(m_pOutFile, "\n"); outBuff="ZOOM_ORG_DEG="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.6f", g_machine.s_machine_config.zm_axis._RelativeZeroDegree); fprintf(m_pOutFile, "\n"); outBuff="ZOOM_DEADBAND_DEG="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.6f", g_machine.s_machine_config.zm_axis._Deadband); fprintf(m_pOutFile, "\n"); outBuff="ZOOM_PULSE_PER_DEG="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.15f", g_machine.s_machine_config.zm_axis._PulseScale); fprintf(m_pOutFile, "\n"); outBuff="ZOOM_READING_INTERVAL_TIME="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", g_machine.s_machine_config.zm_axis._ReadingInterval); fprintf(m_pOutFile, "\n"); outBuff="ZOOM_MOTOR_SPEED_FAST="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", g_machine.s_machine_config.zm_axis._SpeedFast); fprintf(m_pOutFile, "\n"); outBuff="ZOOM_MOTOR_SPEED_SLOW="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", g_machine.s_machine_config.zm_axis._SpeedSlow); fprintf(m_pOutFile, "\n;\n"); outBuff="[HARDWARE]"; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile, "\n"); outBuff="CLOSE_LOOP_ENABLED="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", g_machine.s_machine_config.motion._EnCloseLoop); fprintf(m_pOutFile, "\n"); outBuff="MOTION_RETRY_TIMES="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", g_machine.s_machine_config.motion._RetryTimes); fprintf(m_pOutFile, "\n"); outBuff="SHIFT_POSITION_X="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.6f", g_machine.s_machine_config.motion._ShiftPositionX); fprintf(m_pOutFile, "\n"); outBuff="SHIFT_POSITION_Y="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.6f", g_machine.s_machine_config.motion._ShiftPositionY); fprintf(m_pOutFile, "\n"); outBuff="SHIFT_POSITION_Z="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%.6f", g_machine.s_machine_config.motion._ShiftPositionZ); fprintf(m_pOutFile, "\n"); outBuff="SDK3000_SLEEP_COUNT="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", g_machine.s_machine_config.motion.m_CntThreadSleepVal); fprintf(m_pOutFile, "\n"); outBuff="GET_USB_MESSAGE_METHOD="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", g_machine.s_machine_config.motion.GetInterruptMsgMethod); fprintf(m_pOutFile, "\n"); outBuff="WRITE_DATA_SLEEP_TIME="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", g_machine.s_machine_config.motion.m_WriteDataSleepTime); fprintf(m_pOutFile, "\n"); outBuff="ACCURA_ERROR_PULSE_X="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", g_machine.s_machine_config.motion.m_AccuraErrPulseX); fprintf(m_pOutFile, "\n"); outBuff="ACCURA_ERROR_PULSE_Y="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", g_machine.s_machine_config.motion.m_AccuraErrPulseY); fprintf(m_pOutFile, "\n"); outBuff="ACCURA_ERROR_PULSE_Z="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", g_machine.s_machine_config.motion.m_AccuraErrPulseZ); fprintf(m_pOutFile, "\n"); outBuff="EQUIDISTANCE_PULSE_X="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", g_machine.s_machine_config.motion.m_EQUIDIS_X); fprintf(m_pOutFile, "\n"); outBuff="EQUIDISTANCE_PULSE_Y="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", g_machine.s_machine_config.motion.m_EQUIDIS_Y); fprintf(m_pOutFile, "\n"); outBuff="EQUIDISTANCE_PULSE_Z="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", g_machine.s_machine_config.motion.m_EQUIDIS_Z); fprintf(m_pOutFile, "\n;\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_machine.s_machine_config.motion.m_MachineType); fprintf(m_pOutFile, "\n"); outBuff="MACHINE_VIDEOCARD_TYPE="; fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%d", g_machine.s_machine_config.motion.m_VideoCardType); fprintf(m_pOutFile, "\n"); fclose(m_pOutFile); } return SSI_STATUS_MOTION_NORMAL; } //****************************************************************************** SSI_STATUS_MOTION CSO7_Proto::Load_So7_Config() { FILE *hConfigFile = NULL; char szLine[MAX_BUFF_SIZE]; char *token = NULL; char seps[] = " =,\t\n"; char cTemp[30]={0}; CString csAppPath; GetAppPath(csAppPath); CString csSO7ConfigFile =csAppPath+_T("\\so7_config.ini"); _wfopen_s(&hConfigFile,csSO7ConfigFile,_T("rt")); if(hConfigFile) { while (!feof(hConfigFile)) { fgets(szLine,MAX_BUFF_SIZE,hConfigFile);//read a line if((szLine[0]!=';')&&(strlen(szLine)>2)) { token = strtok(szLine,seps); //==============7OceanAutozoom============================== if(!_stricmp(token,"ZOOM_PRODUCT_ID")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.zm_axis._ProductID=cTemp; } } else if(!_stricmp(token,"ZOOM_COM_PORT")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.zm_axis._ComPort=atoi(cTemp); } } else if(!_stricmp(token,"ZOOM_START_DEG")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.zm_axis._StartDegree=atof(cTemp); } } else if (!_stricmp(token,"ZOOM_END_DEG")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.zm_axis._EndDegree=atof(cTemp); } } else if (!_stricmp(token,"ZOOM_ORG_DEG")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.zm_axis._RelativeZeroDegree=atof(cTemp); } } else if (!_stricmp(token,"ZOOM_DEADBAND_DEG")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.zm_axis._Deadband=atof(cTemp); } } else if (!_stricmp(token,"ZOOM_PULSE_PER_DEG")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.zm_axis._PulseScale=atof(cTemp); } } else if (!_stricmp(token,"ZOOM_READING_INTERVAL_TIME")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.zm_axis._ReadingInterval=atoi(cTemp); } } else if (!_stricmp(token,"ZOOM_MOTOR_SPEED_FAST")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.zm_axis._SpeedFast=static_cast(atoi(cTemp)); } } else if (!_stricmp(token,"ZOOM_MOTOR_SPEED_SLOW")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.zm_axis._SpeedSlow=static_cast(atoi(cTemp)); } } //==============Motion===================== else if(!_stricmp(token,"CLOSE_LOOP_ENABLED")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.motion._EnCloseLoop=atoi(cTemp); } } else if (!_stricmp(token,"MOTION_RETRY_TIMES")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.motion._RetryTimes=atoi(cTemp); } } else if (!_stricmp(token,"SHIFT_POSITION_X")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.motion._ShiftPositionX=atof(cTemp); } } else if (!_stricmp(token,"SHIFT_POSITION_Y")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.motion._ShiftPositionY=atof(cTemp); } } else if (!_stricmp(token,"SHIFT_POSITION_Z")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.motion._ShiftPositionZ=atof(cTemp); } } else if (!_stricmp(token,"SDK3000_SLEEP_COUNT")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.motion.m_CntThreadSleepVal=atoi(cTemp); } } else if (!_stricmp(token,"GET_USB_MESSAGE_METHOD")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.motion.GetInterruptMsgMethod=static_cast(atoi(cTemp)); } } else if (!_stricmp(token,"WRITE_DATA_SLEEP_TIME")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.motion.m_WriteDataSleepTime=atoi(cTemp); } } else if (!_stricmp(token,"ACCURA_ERROR_PULSE_X")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.motion.m_AccuraErrPulseX=atoi(cTemp); } } else if (!_stricmp(token,"ACCURA_ERROR_PULSE_Y")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.motion.m_AccuraErrPulseY=atoi(cTemp); } } else if (!_stricmp(token,"ACCURA_ERROR_PULSE_Z")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.motion.m_AccuraErrPulseZ=atoi(cTemp); } } else if (!_stricmp(token,"EQUIDISTANCE_PULSE_X")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.motion.m_EQUIDIS_X=atoi(cTemp); } } else if (!_stricmp(token,"EQUIDISTANCE_PULSE_Y")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.motion.m_EQUIDIS_Y=atoi(cTemp); } } else if (!_stricmp(token,"EQUIDISTANCE_PULSE_Z")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.motion.m_EQUIDIS_Z=atoi(cTemp); } } //=================MSI======================== else if(!_stricmp(token,"MACHINE_CONTROLLER_TYPE")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.motion.m_MachineType=atoi(cTemp); } } else if(!_stricmp(token,"MACHINE_VIDEOCARD_TYPE")) { token = strtok( NULL, seps); if (token) { strcpy(cTemp,token); g_machine.s_machine_config.motion.m_VideoCardType=atoi(cTemp); } } } } fclose(hConfigFile); } return SSI_STATUS_MOTION_NORMAL; } //****************************************************************************** SSI_STATUS_MOTION CSO7_Proto::GetAppPath(CString &Path) { Path=_T(""); // Speed optimization - noticed slow in GlowCode if (Path.IsEmpty()) { CString tmpPath; GetModuleFileName(NULL,tmpPath.GetBuffer(255),255); tmpPath.ReleaseBuffer(); tmpPath.TrimRight(); int nLastSlash = tmpPath.ReverseFind('\\'); if (nLastSlash >= 0) tmpPath = tmpPath.Left(nLastSlash); else tmpPath.Empty(); Path=tmpPath; } return SSI_STATUS_MOTION_NORMAL; }; //****************************************************************************** SSI_STATUS_MOTION CSO7_Proto::ExtractAppPath(CString &Path) { CString tmpPath = Path; tmpPath.TrimRight(); tmpPath.TrimLeft(); int nLastSlash = tmpPath.ReverseFind('\\'); if (nLastSlash > -1) { // complete path tmpPath = Path.Left(nLastSlash); Path = tmpPath; } else { // not a complete path Path=""; }; return SSI_STATUS_MOTION_NORMAL; }; //****************************************************************************** // Replay the capture file. //****************************************************************************** SSI_STATUS_MOTION CSO7_Proto::_replay_capture(CString s_replay_file) { char *_0x4e00_cmd = "4e00"; FILE* pInFile; _wfopen_s(&pInFile, s_replay_file, _T("r")); if (pInFile == NULL) return SSI_STATUS_MOTION_REPLAY_FILE_ERROR; char *cData = (char *)malloc(MAX_BUFF_SIZE); char *inBuff = (char *)malloc(MAX_BUFF_SIZE); fgets((char *)inBuff, MAX_BUFF_SIZE, pInFile ); // pick up the first line while (!feof(pInFile)) { if (*inBuff == '>') { if (strstr(inBuff, "0x00000001")) { if (!(_strnicmp(inBuff+35, _0x4e00_cmd, 4))) break; _process_replay_capture_commands(inBuff, pInFile); } }; fgets((char *)inBuff, MAX_BUFF_SIZE, pInFile ); // pick up the first line }; fclose(pInFile); free(cData); free(inBuff); return SSI_STATUS_MOTION_NORMAL; } //****************************************************************************** // Do not send out DCC Home. We can send everything else. //****************************************************************************** SSI_STATUS_MOTION CSO7_Proto::_process_replay_capture_commands(char *inBuff, FILE* pInFile) { char x[3]; char cSize[9]; int iSendSize; int iRcvSize; if ( ((*(inBuff+35) == '4')) && (*(inBuff+36) == 'f')) { fgets((char *)inBuff, MAX_BUFF_SIZE, pInFile ); // pick up the first line return SSI_STATUS_MOTION_NORMAL; }; memset(cSize, 0 , 9); memcpy(cSize, inBuff+24, 8); sscanf_s(cSize, "%8x", &iSendSize); // get the length of the transmission memset(ep_buff[EP_02_CMD_IDX]._buffer, 0, MAX_BUFF_SIZE); for (int j=0;jnext) { for (dev = bus->devices; dev; dev = dev->next) { if (dev->descriptor.idVendor == SEVENOCEAN_VID && dev->descriptor.idProduct == SEVENOCEAN_PID) { return usb_open(dev); } } } return NULL; } //****************************************************************************** // Send is direct and async. // The receive thread will receive data and interpret it. //****************************************************************************** SSI_STATUS_MOTION CSO7_Proto::Init_SO7Usb() { //Set initial state of the machine g_machine.s_status._machine_running = false; SSI_STATUS_MOTION rStatus=SSI_STATUS_MOTION_NORMAL; g_machine.IsOffline=FALSE; int usb_status = NULL; usb_init(); // initialize the library usb_status = usb_find_busses(); // find all busses usb_status = usb_find_devices(); // find all connected devices g_dev = _open_usb_dev(); if (!g_dev) { MessageBox(NULL, _T("Unable to open device"), _T("Message"), MB_OK|MB_ICONERROR); g_pLogger->SendAndFlushPerMode(_T("Unable to open device %s \r\n"), usb_strerror()); g_machine.IsOffline=TRUE; rStatus= SSI_STATUS_MOTION_DATALINK_ERROR; } else if (usb_set_configuration(g_dev, MY_CONFIG) < 0) { MessageBox(NULL, _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); MessageBox(NULL, _T("Unable to CLAIM DEVICE"), _T("Message"), MB_OK|MB_ICONERROR); g_machine.IsOffline=TRUE; rStatus=SSI_STATUS_MOTION_DATALINK_ERROR; } g_pLogger->SendAndFlushPerMode(_T("Init:Open device succeed .\r\n")); // ******************************************************************** // This event is used to kick the Serial Usb Command process. This threading model // is important because the underlying library is not thread-safe. // ep_buff[EP_02_CMD_IDX]._event = CreateEvent(NULL, // default security attributes FALSE, // manual reset event object NULL, // signaled NULL); // unamed object g_hEP02_Thread_Id = CreateThread( (LPSECURITY_ATTRIBUTES) NULL, 0, (LPTHREAD_START_ROUTINE) g_EP02_Thread, (LPVOID) this, 0, NULL); g_hEP02_Thread_State = THREAD_RUNNING_STATE1; // ******************************************************************** // Prepare and start EP_S07_81 Thread - Use async commit. // ep_buff[EP_82_DATA_IDX]._event = CreateEvent(NULL, // default security attributes FALSE, // manual reset event object NULL, // signaled NULL); // unamed object g_hEP8x_Thread_State = THREAD_PAUSED; g_hEP8x_Thread_Id = CreateThread( (LPSECURITY_ATTRIBUTES) NULL, 0, (LPTHREAD_START_ROUTINE) g_EP8x_Thread, (LPVOID) this, 0, NULL); g_hEP02_Serial_Mutex = CreateMutex(NULL, // default security attributes FALSE, // initial owner NULL); // name // ********************************************************************* g_hHomedEvent = CreateEvent(NULL, // default security attributes TRUE, // manual reset event object FALSE, // initial state is signaled NULL); // unamed object return 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 (g_dev) { usb_release_interface(g_dev,0); usb_close(g_dev); g_dev = NULL; } SetEvent(ep_buff[EP_82_DATA_IDX]._event); CloseHandle(ep_buff[EP_82_DATA_IDX]._event); SetEvent(ep_buff[EP_02_CMD_IDX]._event); CloseHandle(ep_buff[EP_02_CMD_IDX]._event); g_hEP02_Thread_State = THREAD_EXIT; ReleaseMutex(g_hEP02_Serial_Mutex); CloseHandle(g_hEP02_Serial_Mutex); g_pLogger->SendAndFlushPerMode(_T("Exit: Exit_SO7Usb \r\n")); return Status; } //****************************************************************************** // Kick the g_hEP01_Thread_Event to get the g_EP01_Thread going. // iEP = EP_S07_01 or EP_S07_02 = 0x01 or 0x02 //****************************************************************************** SSI_STATUS_MOTION CSO7_Proto::_do_single_threaded_usb_comm(int iEP_Base) { TRACE1("=====_do_single_threaded_usb_comm(iEP) g_hEP01_Thread_Event. %x\n", iEP_Base); while ((ep_buff[iEP_Base]._hProtoPending == TRUE) || (ep_buff[iEP_Base+1]._hProtoPending == TRUE)) { ASSERT(0); Sleep(3); } ep_buff[iEP_Base]._hProtoPending = ep_buff[iEP_Base+1]._hProtoPending = TRUE; TRACE1("=====_do_single_threaded_usb_comm(iEP_Base) SetEvent(g_hEP01_Thread_Event): %X \r\n", ep_buff[iEP_Base]._save_send_cmd); if (iEP_Base == EP_01_CMD_IDX) SetEvent(ep_buff[EP_82_DATA_IDX]._event); else SetEvent(ep_buff[iEP_Base]._event); while ((ep_buff[iEP_Base]._hProtoPending == TRUE) || (ep_buff[iEP_Base+1]._hProtoPending == TRUE)) { Sleep(3); } TRACE1("=====_do_single_threaded_usb_comm(iEP) g_hProtoDoneEvents. %x\n", iEP_Base); return SSI_STATUS_MOTION_NORMAL; } //****************************************************************************** // This startup just kicks off the EP_S07_81 worker thread. //****************************************************************************** SSI_STATUS_MOTION CSO7_Proto::_start_machine() { g_hEP8x_Thread_State = THREAD_RUNNING_STATE2; g_machine.s_status._machine_running = true; g_pLogger->SendAndFlushPerMode(_T("_start_machine\n")); 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() { 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; _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]; TRACE3("_send_usb_cmd() iEP : %X - ep_buff[iEP]._save_send_cmd : %X ._buffer[0] : %X\r\n", iEP_Base, ep_buff[iEP_Base]._save_send_cmd, ep_buff[iEP_Base]._buffer[0]); _ret = usb_bulk_write(g_dev, ep_buff[iEP_Base]._ep, (char *)ep_buff[iEP_Base]._buffer,(int) ep_buff[iEP_Base]._size, 50); if (_ret < 0) { TRACE("Write Timeout \n"); ASSERT(0); return SSI_STATUS_MOTION_TIMEOUT; } SetEvent(ep_buff[iEP_Base+1]._event); ep_buff[iEP_Base]._hProtoPending = false; return SSI_STATUS_MOTION_NORMAL; } //=============================================================================== // _write_usb_data_only(iEP) sends data to the corresponding iEP channel.No need to //process the reap async // iEP = EP_S07_01 / EP_S07_02 EP_S07_01 = 0x01; EP_S07_02 = 0x02; //=============================================================================== SSI_STATUS_MOTION CSO7_Proto::_write_usb_data_only(int iEP_Base) { 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]; TRACE3("_send_usb_cmd() iEP : %X - ep_buff[iEP]._save_send_cmd : %X ._buffer[0] : %X\r\n", iEP_Base, ep_buff[iEP_Base]._save_send_cmd, ep_buff[iEP_Base]._buffer[0]); _ret = usb_bulk_write(g_dev, ep_buff[iEP_Base]._ep, (char *)ep_buff[iEP_Base]._buffer,(int) ep_buff[iEP_Base]._size, 50); if (_ret < 0) { TRACE("Write Timeout \n"); ASSERT(0); return SSI_STATUS_MOTION_TIMEOUT; } ep_buff[iEP_Base]._hProtoPending = false; ep_buff[iEP_Base+1]._hProtoPending = false; return SSI_STATUS_MOTION_NORMAL; } //================================================================= // false: probe off 当前探头为激光;true: probe on当前探头为接触式.// //================================================================= SSI_STATUS_MOTION CSO7_Proto::so7_motion_probe_on_off_(bool _bOnOff) { if (_bOnOff) _send_cmd_SO7_CMD_COMMON_COMMAND(CT_MOTOR,CT_M_PROBE_ON,0); else _send_cmd_SO7_CMD_COMMON_COMMAND(CT_MOTOR,CT_M_PROBE_OFF,1); return SSI_STATUS_MOTION_NORMAL; }; //============================================================== SSI_STATUS_MOTION CSO7_Proto::so7_motion_reset_worktable_lower_left(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; }; //**********************************************************************// //**********************************************************************// //================================================================== bool CSO7_Proto::so7_motion_is_homed() { if (g_machine.IsOffline) { g_machine.Sys_Reset_Flag =1; SetEvent(g_hHomedEvent); } _send_cmd_SO7_CMD_GET_RESET_FLAG(); if (g_machine.Sys_Reset_Flag == 1) { SetEvent(g_hHomedEvent); return true; } else return false; }; //======================================================================== // Move the stage left/right until the index location is non-zero //======================================================================== SSI_STATUS_MOTION CSO7_Proto::so7_motion_Dcc_Home() { 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(CT_HOME_XYZ); g_pLogger->SendAndFlushPerMode(_T("so7_motion_reset_worktable_lower_left.\n")); TRACE0(" - waiting for X,Y,Zm to stop moving\n"); //======================================== // Wait until X-Y-Zm stopped moving INT iRetry(0); while (g_machine.Sys_Reset_Flag != 1) { Sleep(50); _send_cmd_SO7_CMD_GET_RESET_FLAG(); iRetry++; } g_pLogger->SendAndFlushPerMode(_T("[%d]waiting for X,Y,Zm to stop moving\n"),iRetry); g_pLogger->SendAndFlushPerMode(_T("Home succeed.\n")); //_get_xyz_index(g_machine.s_machine_config.x_axis._neg_working_limit,g_machine.s_machine_config.y_axis._neg_working_limit,g_machine.s_machine_config.z_axis._neg_working_limit); _send_cmd_SO7_CMD_SET_VER_NUMBER(); m_bHomingActive = false; SetEvent(g_hHomedEvent); return SSI_STATUS_MOTION_NORMAL; } //================================================================== SSI_STATUS_MOTION CSO7_Proto::so7_motion_startup(double dScaleResolutionX, double dScaleResolutionY, double dScaleResolutionZ) { g_machine.s_machine_config.x_axis._scale_resolution = dScaleResolutionX; g_machine.s_machine_config.y_axis._scale_resolution = dScaleResolutionY; g_machine.s_machine_config.z_axis._scale_resolution = dScaleResolutionZ; _start_machine(); so7_motion_Dcc_Home(); _replay_capture(_T("Replay_Capture")); return SSI_STATUS_MOTION_NORMAL; }; //======================================================================== // read the configuration from the controller and populate the g_machine // data structure //======================================================================== SSI_STATUS_MOTION CSO7_Proto::_get_xyz_index(long & lX, long & lY, long & lZ) { _send_cmd_SO7_CMD_READ_AXIS_XYZ(); lX = g_machine.x._scale_pos._long_; lY = g_machine.y._scale_pos._long_; lZ = g_machine.z._scale_pos._long_; return SSI_STATUS_MOTION_NORMAL; }; //================================================================== SSI_STATUS_MOTION CSO7_Proto::so7_motion_get_position_xyz(double & dX, double & dY, double & dZ) { WaitForSingleObject(g_hHomedEvent, INFINITE); // machine start and homing is done long lX=0, lY=0, lZ=0; _send_cmd_SO7_CMD_READ_AXIS_XYZ(); lX = g_machine.x._scale_pos._long_; lY = g_machine.y._scale_pos._long_; lZ = g_machine.z._scale_pos._long_; dX = ScaleToMM(lX, g_machine.s_machine_config.x_axis._scale_resolution); dY = ScaleToMM(lY, g_machine.s_machine_config.y_axis._scale_resolution); dZ = ScaleToMM(lZ, g_machine.s_machine_config.z_axis._scale_resolution); dX -= g_machine.s_machine_config.x_axis._neg_working_limit; dY -= g_machine.s_machine_config.y_axis._neg_working_limit; dZ -= g_machine.s_machine_config.z_axis._neg_working_limit; return SSI_STATUS_MOTION_NORMAL; }; //================================================================== SSI_STATUS_MOTION CSO7_Proto::so7_motion_set_position_xyz(double dX, double dY, double dZ, bool bWait) { //WaitForSingleObject(g_hHomedEvent, INFINITE); // machine start and homing is done 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; X.dToMM = dX; Y.dFromMM = dYStart; Y.dToMM = dY; Z.dFromMM = dZStart; Z.dToMM = dZ; X.from = MMtoScale(dXStart, g_machine.s_machine_config.x_axis._scale_resolution); X.to = MMtoScale(dX, g_machine.s_machine_config.x_axis._scale_resolution); Y.from = MMtoScale(dYStart, g_machine.s_machine_config.y_axis._scale_resolution); Y.to = MMtoScale(dY, g_machine.s_machine_config.y_axis._scale_resolution); Z.from = MMtoScale(dZStart, g_machine.s_machine_config.z_axis._scale_resolution); Z.to = MMtoScale(dZ, g_machine.s_machine_config.z_axis._scale_resolution); // move the position to make the -X, -Y, -Z position 0,0,0 //X.to += g_machine.s_machine_config.x_axis._neg_working_limit; //Y.to += g_machine.s_machine_config.y_axis._neg_working_limit; //Z.to += g_machine.s_machine_config.z_axis._neg_working_limit; //X.from += g_machine.s_machine_config.x_axis._neg_working_limit; //Y.from += g_machine.s_machine_config.y_axis._neg_working_limit; //Z.from += g_machine.s_machine_config.z_axis._neg_working_limit; g_machine.x._pos_fixed._long_=X.to-X.from; g_machine.y._pos_fixed._long_=Y.to-Y.from; g_machine.z._pos_fixed._long_=Z.to-Z.from; // _calculate_straightline_motion(g_machine.s_machine_config._dXYZSpeed); _send_cmd_SO7_CMD_MOVE_TO_POS_XYZ(CT_MOVETOXYZ); #pragma message("Test settle wait comparing the status bit to the scale monitor") if (bWait) { const long lSleep = 20; const long lMaxLoopCnt = 5000/lSleep; // use max homing time of 20 seconds long lLoopCnt = 0; Sleep(lSleep); BOOL IsFinished(FALSE); do { so7_motion_is_finished(EMSG_STOPXYZ_1_MOVETOXYZ,IsFinished); Sleep(lSleep); ++lLoopCnt; } while (!IsFinished && lLoopCnt < lMaxLoopCnt); TRACE1("Presettle Time: %lf\n", TimeInSecs()); //WaitForSettleXYZZM(); TRACE1("Postsettle Time: %lf\n", TimeInSecs()); } 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_machine.s_machine_config.motion.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; }; //======================================================================== // This speed setting will be carried out in the next DCC move // Full Speed -> dPercentSpeed = 100% // Slow Speed -> dPercentSpeed = 20% //======================================================================== SSI_STATUS_MOTION CSO7_Proto::so7_motion_set_speed_xyz(double dPercentSpeed) { g_machine.s_machine_config._dXYZSpeed = dPercentSpeed; return SSI_STATUS_MOTION_NORMAL; } //======================================================================== SSI_STATUS_MOTION CSO7_Proto::so7_motion_get_speed_xyz(double &dPercentSpeed) { dPercentSpeed = g_machine.s_machine_config._dXYZSpeed; return SSI_STATUS_MOTION_NORMAL; } //======================================================================== SSI_STATUS_MOTION CSO7_Proto::so7_motion_get_3D_max_speed(double &dMaxSpeed) { double dMaxSpeedX = g_machine.s_machine_config.x_axis._speed_max[0]; double dMaxSpeedY = g_machine.s_machine_config.y_axis._speed_max[0]; double dMaxSpeedZ = g_machine.s_machine_config.z_axis._speed_max[0]; dMaxSpeed = sqrt(dMaxSpeedX*dMaxSpeedX + dMaxSpeedY*dMaxSpeedY + dMaxSpeedZ*dMaxSpeedZ); return SSI_STATUS_MOTION_NORMAL; } //======================================================================== SSI_STATUS_MOTION CSO7_Proto::_calculate_straightline_motion(double dSpeedMM) { CString csAppPath; GetAppPath(csAppPath); CString csSO7ConfigFile = csAppPath + _T("\\Utility_Config.ini"); Load_SevenOcean_Inifile(csSO7ConfigFile); g_machine.s_machine_config.x_axis._speed_max[0]=static_cast(g_machine.s_machine_config.x_axis._speed_max[0]*dSpeedMM); g_machine.s_machine_config.y_axis._speed_max[0]=static_cast(g_machine.s_machine_config.y_axis._speed_max[0]*dSpeedMM); g_machine.s_machine_config.z_axis._speed_max[0]=static_cast(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(0xff); g_machine.s_lights_value.segment[1]=static_cast(0xff); g_machine.s_lights_value._ring_light=static_cast(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 ; ii1) { g_machine.s_lights_value.segment[ii] |= (cRingSwitchOn<((pSegments[ii * EIGHT_SEGS + jj])/100.0 * (MAXLIGHTVALUE)); } else { g_machine.s_lights_value.segment[ii] &= (cRingSwitchOff<(dTopPercent* (MAXLIGHTVALUE)/100.0 ))+1; g_machine.s_lights_value._bottom_light = (static_cast(dBottomPercent*(MAXLIGHTVALUE)/100.0))+1; g_pLog->SendAndFlushPerMode(_T("dBottomPercent: %f dTopPercent: %f\n"),dBottomPercent,dTopPercent); g_pLog->SendAndFlushPerMode(_T("so7_light_set_lamp_state bottom: %d top: %d\n"), g_machine.s_lights_value._bottom_light,g_machine.s_lights_value._top_light); TRACE2("so7_light_set_lamp_state bottom: %d top: %d\n", g_machine.s_lights_value._bottom_light,g_machine.s_lights_value._top_light); delete g_pLog; g_pLog=NULL; return SSI_STATUS_MOTION_NORMAL; }; //**********************************************************************// //**********************************************************************// //================================================================================== //============================================================== SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_MOVE_X(char SpeedGear) { WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE); memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE); *(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR; *(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_MOVEX; *(ep_buff[EP_02_CMD_IDX]._buffer+2) = SpeedGear; ep_buff[EP_02_CMD_IDX]._size = 0x03; ep_buff[EP_81_DATA_IDX]._size = 0x03; g_hEP02_Thread_State=THREAD_RUNNING_STATE2; _do_single_threaded_usb_comm(EP_02_CMD_IDX); ReleaseMutex(g_hEP02_Serial_Mutex); return SSI_STATUS_MOTION_NORMAL; }; //============================================================== SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_MOVE_Y(char SpeedGear) { WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE); memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE); *(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR; *(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_MOVEY; *(ep_buff[EP_02_CMD_IDX]._buffer+2) = SpeedGear; ep_buff[EP_02_CMD_IDX]._size = 0x03; ep_buff[EP_81_DATA_IDX]._size = 0x03; g_hEP02_Thread_State=THREAD_RUNNING_STATE2; _do_single_threaded_usb_comm(EP_02_CMD_IDX); ReleaseMutex(g_hEP02_Serial_Mutex); return SSI_STATUS_MOTION_NORMAL; }; //============================================================== SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_MOVE_Z(char SpeedGear) { WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE); memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE); *(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR; *(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_MOVEZ; *(ep_buff[EP_02_CMD_IDX]._buffer+2) = SpeedGear; ep_buff[EP_02_CMD_IDX]._size = 0x03; ep_buff[EP_81_DATA_IDX]._size = 0x03; g_hEP02_Thread_State=THREAD_RUNNING_STATE2; _do_single_threaded_usb_comm(EP_02_CMD_IDX); ReleaseMutex(g_hEP02_Serial_Mutex); return SSI_STATUS_MOTION_NORMAL; }; //============================================================== SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_MOVE_ZM(char SpeedGear) { WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE); memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE); *(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR; *(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_MOVEV; *(ep_buff[EP_02_CMD_IDX]._buffer+2) = SpeedGear; ep_buff[EP_02_CMD_IDX]._size = 0x03; ep_buff[EP_81_DATA_IDX]._size = 0x03; g_hEP02_Thread_State=THREAD_RUNNING_STATE2; _do_single_threaded_usb_comm(EP_02_CMD_IDX); ReleaseMutex(g_hEP02_Serial_Mutex); return SSI_STATUS_MOTION_NORMAL; }; //============================================================== SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_STOP_MOVE_XYZ() { WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE); memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE); *(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR; *(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_STOPA; *(ep_buff[EP_02_CMD_IDX]._buffer+2)=0x00; ep_buff[EP_02_CMD_IDX]._size = 0x04; ep_buff[EP_81_DATA_IDX]._size = 0x04; g_hEP02_Thread_State=THREAD_RUNNING_STATE2; _do_single_threaded_usb_comm(EP_02_CMD_IDX); ReleaseMutex(g_hEP02_Serial_Mutex); return SSI_STATUS_MOTION_NORMAL; }; //============================================================== SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_RESET_XYZ() { WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE); memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE); *(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR; *(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_RESET; *(ep_buff[EP_02_CMD_IDX]._buffer+2) = 0X00; ep_buff[EP_02_CMD_IDX]._size = 0x03; ep_buff[EP_81_DATA_IDX]._size = 0x03; g_hEP02_Thread_State=THREAD_RUNNING_STATE2; _do_single_threaded_usb_comm(EP_02_CMD_IDX); ReleaseMutex(g_hEP02_Serial_Mutex); return SSI_STATUS_MOTION_NORMAL; }; //============================================================== SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_RESET_V() { WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE); memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE); *(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR; *(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_TESTV; *(ep_buff[EP_02_CMD_IDX]._buffer+2) = 0; ep_buff[EP_02_CMD_IDX]._size = 0x03; ep_buff[EP_82_DATA_IDX]._size = 0x10; g_hEP02_Thread_State=THREAD_RUNNING_STATE2; _do_single_threaded_usb_comm(EP_02_CMD_IDX); ReleaseMutex(g_hEP02_Serial_Mutex); return SSI_STATUS_MOTION_NORMAL; }; //============================================================== SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_STOP_V() { WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE); memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE); *(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR; *(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_STOPV; ep_buff[EP_02_CMD_IDX]._size = 0x02; ep_buff[EP_82_DATA_IDX]._size = 0x10; g_hEP02_Thread_State=THREAD_RUNNING_STATE2; _do_single_threaded_usb_comm(EP_02_CMD_IDX); ReleaseMutex(g_hEP02_Serial_Mutex); return SSI_STATUS_MOTION_NORMAL; }; //============================================================== SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_MOVE_TO_POS_X() { WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE); memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE); *(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR; *(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_MOVETOX; *(ep_buff[EP_02_CMD_IDX]._buffer+2)=(((g_machine.x._pos_fixed._char_[3])<0x80)?(g_machine.x._pos_fixed._char_[2]):((g_machine.x._pos_fixed._char_[2])|0x80));//最高位 *(ep_buff[EP_02_CMD_IDX]._buffer+3)=(g_machine.x._pos_fixed._char_[1]); *(ep_buff[EP_02_CMD_IDX]._buffer+4)=(g_machine.x._pos_fixed._char_[0]); ep_buff[EP_02_CMD_IDX]._size = 0x07; ep_buff[EP_81_DATA_IDX]._size = 0x45; g_hEP02_Thread_State=THREAD_RUNNING_STATE2; _do_single_threaded_usb_comm(EP_02_CMD_IDX); ReleaseMutex(g_hEP02_Serial_Mutex); return SSI_STATUS_MOTION_NORMAL; }; //============================================================== SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_MOVE_TO_POS_Y() { WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE); memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE); *(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR; *(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_MOVETOY; *(ep_buff[EP_02_CMD_IDX]._buffer+2)=(((g_machine.y._pos_fixed._char_[3])<0x80)?(g_machine.y._pos_fixed._char_[2]):((g_machine.y._pos_fixed._char_[2])|0x80));//最高位 *(ep_buff[EP_02_CMD_IDX]._buffer+3)=(g_machine.y._pos_fixed._char_[1]); *(ep_buff[EP_02_CMD_IDX]._buffer+4)=(g_machine.y._pos_fixed._char_[0]); ep_buff[EP_02_CMD_IDX]._size = 0x07; ep_buff[EP_81_DATA_IDX]._size = 0x07; g_hEP02_Thread_State=THREAD_RUNNING_STATE2; _do_single_threaded_usb_comm(EP_02_CMD_IDX); ReleaseMutex(g_hEP02_Serial_Mutex); return SSI_STATUS_MOTION_NORMAL; }; //============================================================== SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_MOVE_TO_POS_Z() { WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE); memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE); *(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR; *(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_MOVETOZ; if(g_machine.z._pos_fixed._long_<0) { g_machine.z._pos_fixed._long_=-g_machine.z._pos_fixed._long_; *(ep_buff[EP_02_CMD_IDX]._buffer+2)=((g_machine.z._pos_fixed._char_[2])|0x80);//最高位 *(ep_buff[EP_02_CMD_IDX]._buffer+3)=(g_machine.z._pos_fixed._char_[1]); *(ep_buff[EP_02_CMD_IDX]._buffer+4)=(g_machine.z._pos_fixed._char_[0]); } else { *(ep_buff[EP_02_CMD_IDX]._buffer+2)=(g_machine.z._pos_fixed._char_[2]);//最高位 *(ep_buff[EP_02_CMD_IDX]._buffer+3)=(g_machine.z._pos_fixed._char_[1]); *(ep_buff[EP_02_CMD_IDX]._buffer+4)=(g_machine.z._pos_fixed._char_[0]); } ep_buff[EP_02_CMD_IDX]._size = 0x07; ep_buff[EP_81_DATA_IDX]._size = 0x07; g_hEP02_Thread_State=THREAD_RUNNING_STATE2; _do_single_threaded_usb_comm(EP_02_CMD_IDX); ReleaseMutex(g_hEP02_Serial_Mutex); return SSI_STATUS_MOTION_NORMAL; }; //============================================================== SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_MOVE_TO_POS_ZM() { WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE); memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE); *(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR; *(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_MOVETOV; if(g_machine.zm._pos_fixed._long_<0) { g_machine.zm._pos_fixed._long_=-g_machine.zm._pos_fixed._long_; *(ep_buff[EP_02_CMD_IDX]._buffer+2)=((g_machine.zm._pos_fixed._char_[2])|0x80);//最高位 *(ep_buff[EP_02_CMD_IDX]._buffer+3)=(g_machine.zm._pos_fixed._char_[1]); *(ep_buff[EP_02_CMD_IDX]._buffer+4)=(g_machine.zm._pos_fixed._char_[0]); } else { *(ep_buff[EP_02_CMD_IDX]._buffer+2)=(g_machine.zm._pos_fixed._char_[2]);//最高位 *(ep_buff[EP_02_CMD_IDX]._buffer+3)=(g_machine.zm._pos_fixed._char_[1]); *(ep_buff[EP_02_CMD_IDX]._buffer+4)=(g_machine.zm._pos_fixed._char_[0]); } ep_buff[EP_02_CMD_IDX]._size = 0x07; ep_buff[EP_81_DATA_IDX]._size = 0x07; g_hEP02_Thread_State=THREAD_RUNNING_STATE2; _do_single_threaded_usb_comm(EP_02_CMD_IDX); ReleaseMutex(g_hEP02_Serial_Mutex); return SSI_STATUS_MOTION_NORMAL; }; //============================================================== SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_MOVE_TO_POS_XYZ(char ProbeType) { WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE); memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE); pSO7_CMD_02->uCmdByte = CT_MOTOR; pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.uSubCmdByte =ProbeType; if(g_machine.x._pos_fixed._long_<0) { g_machine.x._pos_fixed._long_=-g_machine.x._pos_fixed._long_; pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[0]=(g_machine.x._pos_fixed._char_[2] | 0x80);//最高位 pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[1]=(g_machine.x._pos_fixed._char_[1]); pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[2]=(g_machine.x._pos_fixed._char_[0]); } else { pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[0]=(g_machine.x._pos_fixed._char_[2]);//最高位 pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[1]=(g_machine.x._pos_fixed._char_[1]); pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[2]=(g_machine.x._pos_fixed._char_[0]); } if(g_machine.y._pos_fixed._long_<0) { g_machine.y._pos_fixed._long_=-g_machine.y._pos_fixed._long_; pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[3]=(g_machine.y._pos_fixed._char_[2] | 0x80);//最高位 pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[4]=(g_machine.y._pos_fixed._char_[1]); pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[5]=(g_machine.y._pos_fixed._char_[0]); } else { pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[3]=(g_machine.y._pos_fixed._char_[2]);//最高位 pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[4]=(g_machine.y._pos_fixed._char_[1]); pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[5]=(g_machine.y._pos_fixed._char_[0]); } if(g_machine.z._pos_fixed._long_<0) { g_machine.z._pos_fixed._long_=-g_machine.z._pos_fixed._long_; pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[6]=(g_machine.z._pos_fixed._char_[2] | 0x80);//最高位 pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[7]=(g_machine.z._pos_fixed._char_[1]); pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[8]=(g_machine.z._pos_fixed._char_[0]); } else { pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[6]=(g_machine.z._pos_fixed._char_[2]);//最高位 pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[7]=(g_machine.z._pos_fixed._char_[1]); pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[8]=(g_machine.z._pos_fixed._char_[0]); } ep_buff[EP_02_CMD_IDX]._size = 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[0]; pSO7_CMD_02->s_SO7_CMD_SET_LIGHT._inner_ring_light_switch =g_machine.s_lights_value.segment[1]; pSO7_CMD_02->s_SO7_CMD_SET_LIGHT.uEndCmdByte =(BYTE)0xB1; ep_buff[EP_02_CMD_IDX]._size = 0x0B; ep_buff[EP_82_DATA_IDX]._size = 0x10; g_hEP02_Thread_State=THREAD_RUNNING_STATE2; _do_single_threaded_usb_comm(EP_02_CMD_IDX); ReleaseMutex(g_hEP02_Serial_Mutex); return SSI_STATUS_MOTION_NORMAL; } //============================================================== SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_SET_VER_NUMBER() { WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE); memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE); *(ep_buff[EP_02_CMD_IDX]._buffer) = CT_SCALE; *(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_SET_VERNO; *(ep_buff[EP_02_CMD_IDX]._buffer+2) = g_machine.cVerNumber; ep_buff[EP_02_CMD_IDX]._size = 0x03; ep_buff[EP_82_DATA_IDX]._size = 0x10; g_hEP02_Thread_State=THREAD_RUNNING_STATE2; _do_single_threaded_usb_comm(EP_02_CMD_IDX); ReleaseMutex(g_hEP02_Serial_Mutex); return SSI_STATUS_MOTION_NORMAL; } //============================================================== SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_CORRECTION_SCALE(char cAxisType) { WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE); memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE); *(ep_buff[EP_02_CMD_IDX]._buffer) = CT_SCALE; if (cAxisType == 0) *(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_SET_LINE_X; else if(cAxisType == 1) *(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_SET_LINE_Y; else if(cAxisType == 2) *(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_SET_LINE_Z; *(ep_buff[EP_02_CMD_IDX]._buffer+2) = 1; ep_buff[EP_02_CMD_IDX]._size = 0x03; ep_buff[EP_82_DATA_IDX]._size = 0x10; g_hEP02_Thread_State=THREAD_RUNNING_STATE2; _do_single_threaded_usb_comm(EP_02_CMD_IDX); ReleaseMutex(g_hEP02_Serial_Mutex); return SSI_STATUS_MOTION_NORMAL; } //============================================================== SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_SET_SECTION(char cAxisType) { WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE); memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE); *(ep_buff[EP_02_CMD_IDX]._buffer) = CT_SCALE; if (cAxisType == 0) *(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_SET_SECTION_X; else if(cAxisType == 1) *(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_SET_SECTION_Y; else if(cAxisType == 2) *(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_SET_SECTION_Z; *(ep_buff[EP_02_CMD_IDX]._buffer+2) = 1; ep_buff[EP_02_CMD_IDX]._size = 0x03; ep_buff[EP_82_DATA_IDX]._size = 0x10; g_hEP02_Thread_State=THREAD_RUNNING_STATE2; _do_single_threaded_usb_comm(EP_02_CMD_IDX); ReleaseMutex(g_hEP02_Serial_Mutex); return SSI_STATUS_MOTION_NORMAL; } //============================================================== SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_COMMON_COMMAND(char Cmd,char SubCmd,char Type) { WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE); memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE); *(ep_buff[EP_02_CMD_IDX]._buffer) = Cmd; *(ep_buff[EP_02_CMD_IDX]._buffer+1) = SubCmd; *(ep_buff[EP_02_CMD_IDX]._buffer+2) = Type; *(ep_buff[EP_02_CMD_IDX]._buffer+3) = 0x00; ep_buff[EP_02_CMD_IDX]._size = 0x04; ep_buff[EP_82_DATA_IDX]._size = 0x10; g_hEP02_Thread_State=THREAD_RUNNING_STATE2; _do_single_threaded_usb_comm(EP_02_CMD_IDX); ReleaseMutex(g_hEP02_Serial_Mutex); return SSI_STATUS_MOTION_NORMAL; } //============================================================== SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_COMMON_COMMAND_DATA(char Cmd,char SubCmd,char Type,char Data) { WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE); memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE); *(ep_buff[EP_02_CMD_IDX]._buffer) = Cmd; *(ep_buff[EP_02_CMD_IDX]._buffer+1) = SubCmd; *(ep_buff[EP_02_CMD_IDX]._buffer+2) = Type; *(ep_buff[EP_02_CMD_IDX]._buffer+3) = Data; ep_buff[EP_02_CMD_IDX]._size = 0x04; ep_buff[EP_82_DATA_IDX]._size = 0x10; g_hEP02_Thread_State=THREAD_RUNNING_STATE2; _do_single_threaded_usb_comm(EP_02_CMD_IDX); ReleaseMutex(g_hEP02_Serial_Mutex); return SSI_STATUS_MOTION_NORMAL; } //============================================================= //xyz_gear=0(slow) 1 2 3(fast); SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_SET_ZOOM_SPEED(char xyz_gear) { WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE); memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE); *(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR; *(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_SET_SPEEDV; *(ep_buff[EP_02_CMD_IDX]._buffer+2) = xyz_gear; *(ep_buff[EP_02_CMD_IDX]._buffer+3) = g_machine.s_machine_config.zm_axis._speed._char_[1]; *(ep_buff[EP_02_CMD_IDX]._buffer+4) = g_machine.s_machine_config.zm_axis._speed._char_[0]; ep_buff[EP_02_CMD_IDX]._size = 0x05; ep_buff[EP_82_DATA_IDX]._size = 0x45; g_hEP02_Thread_State=THREAD_RUNNING_STATE2; _do_single_threaded_usb_comm(EP_02_CMD_IDX); ReleaseMutex(g_hEP02_Serial_Mutex); return SSI_STATUS_MOTION_NORMAL; } //============================================================= SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_SET_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; 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) = 0; *(ep_buff[EP_02_CMD_IDX]._buffer+4) = 0; if (iSpeed>255) { BYTE MaxSpeed(255); *(ep_buff[EP_02_CMD_IDX]._buffer+5) = static_cast((iSpeed%256)+1); *(ep_buff[EP_02_CMD_IDX]._buffer+6) = static_cast(MaxSpeed); } else { *(ep_buff[EP_02_CMD_IDX]._buffer+5) = static_cast(iSpeed); *(ep_buff[EP_02_CMD_IDX]._buffer+6) = 0; } iDeceDistance =0; char cBuffer; cBuffer =static_cast(iDeceDistance/1000); *(ep_buff[EP_02_CMD_IDX]._buffer+7) =cBuffer; cBuffer = static_cast((iDeceDistance%1000)/100); *(ep_buff[EP_02_CMD_IDX]._buffer+8) = cBuffer; cBuffer = static_cast((iDeceDistance%100)/10); *(ep_buff[EP_02_CMD_IDX]._buffer+9) = cBuffer; cBuffer = static_cast(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(iDeceDistance/1000); *(ep_buff[EP_02_CMD_IDX]._buffer+7) =cBuffer; cBuffer = static_cast((iDeceDistance%1000)/100); *(ep_buff[EP_02_CMD_IDX]._buffer+8) = cBuffer; cBuffer = static_cast((iDeceDistance%100)/10); *(ep_buff[EP_02_CMD_IDX]._buffer+9) = cBuffer; cBuffer = static_cast(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(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(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(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(((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(((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(((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("--MOVEXY--[X]:%d;[Y]:%d.\r\n",SpeedGearX,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::_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(((((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(((((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(((((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(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(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(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 { 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; }