新增变倍时间输出,统一CMD_H文件。

This commit is contained in:
TAO Cheng
2013-11-12 14:37:21 +08:00
parent 842c95f8b1
commit 24ba06adf7
16 changed files with 912 additions and 371 deletions
+284 -265
View File
@@ -1,352 +1,350 @@
#ifndef _CMD_H_H_
#define _CMD_H_H_
enum FUN_CMD
{
CT_FUN,
CT_MOTOR,
CT_SCALE,
CT_LIGHT,
CT_INT,
CT_DATA
CT_FUN,
CT_MOTOR,
CT_SCALE,
CT_LIGHT,
CT_INT,
CT_DATA
};
enum MOTOR_CMD
{
CT_MOVEX,
CT_MOVEY,
CT_MOVEZ,
CT_MOVEX,
CT_MOVETOX,
CT_MOVETOY,
CT_MOVETOZ,
CT_MOVEY,
CT_MOVETOFX,
CT_MOVETOFY,
CT_MOVETOFZ,
CT_MOVEZ,
CT_MOVETOSX,
CT_MOVETOSY,
CT_MOVETOSZ,
CT_MOVETOAX,
CT_MOVETOAY,
CT_MOVETOAZ,
CT_MOVETOX,
CT_MOVETOY,
CT_MOVETOZ,
CT_MOVETOASX,
CT_MOVETOASY,
CT_MOVETOASZ,
CT_MOVETOFX,
CT_MOVETOFY,
CT_MOVETOFZ,
CT_MOVETOAFX,
CT_MOVETOAFY,
CT_MOVETOAFZ,
CT_MOVETOSX,
CT_MOVETOSY,
CT_MOVETOSZ,
CT_RESETXYZ,
CT_RESETX,
CT_RESETY,
CT_RESETZ,
CT_MOVETOAX,
CT_MOVETOAY,
CT_MOVETOAZ,
CT_STOPA,
CT_STOPX,
CT_STOPY,
CT_STOPZ,
CT_MOVETOASX,
CT_MOVETOASY,
CT_MOVETOASZ,
CT_STOPFA,
CT_STOPFX,
CT_STOPFY,
CT_STOPFZ,
CT_MOVETOAFX,
CT_MOVETOAFY,
CT_MOVETOAFZ,
CT_SET_SPEEDX,
CT_SET_SPEEDY,
CT_SET_SPEEDZ,
CT_RESETXYZ,
CT_RESETX,
CT_RESETY,
CT_RESETZ,
CT_READ_SPEEDX,
CT_READ_SPEEDY,
CT_READ_SPEEDZ,
CT_STOPA,
CT_STOPX,
CT_STOPY,
CT_STOPZ,
CT_SET_PRECISIONX,
CT_SET_PRECISIONY,
CT_SET_PRECISIONZ,
CT_STOPFA,
CT_STOPFX,
CT_STOPFY,
CT_STOPFZ,
CT_SET_DEFAULTX,
CT_SET_DEFAULTY,
CT_SET_DEFAULTZ,
CT_SET_SPEEDX,
CT_READ_PRECISIONX,
CT_READ_PRECISIONY,
CT_READ_PRECISIONZ,
CT_RESET,
CT_MOVEV,
CT_MOVETOV,
CT_RESETV,
CT_STOPV,
CT_SET_SPEEDV,
CT_READ_SPEEDV,
CT_SET_DEFAULTV,
CT_TESTV,
CT_TSTOPV,
CT_TEST_STOP,
CT_READ_V,
CT_SET_SPEEDY,
CT_M_SPEED,
CT_M_DIS,
CT_M_FRESH,
CT_M_CMD,
CT_M_READ_DAT,
CT_SET_MOTOR_CAL,
CT_M_SWITCH_START,
CT_M_SWITCH_CLOSE,
CT_M_SWITCH_TOP,
CT_M_SWITCH_BOM,
CT_M_SWITCH_RESET,
CT_M_SWITCH_VALUE,
CT_M_RESET_LEFT,
CT_M_RESET_RIGHT,
CT_SET_SPEEDZ,
CT_READ_SPEEDX,
CT_READ_SPEEDY,
CT_READ_SPEEDZ,
CT_SET_PRECISIONX,
CT_SET_PRECISIONY,
CT_SET_PRECISIONZ,
CT_SET_DEFAULTX,
CT_SET_DEFAULTY,
CT_SET_DEFAULTZ,
CT_READ_PRECISIONX,
CT_READ_PRECISIONY,
CT_READ_PRECISIONZ,
CT_RESET,
CT_MOVEV,
CT_MOVETOV,
CT_RESETV,
CT_STOPV,
CT_SET_SPEEDV,
CT_READ_SPEEDV,
CT_SET_DEFAULTV,
CT_TESTV,
CT_TSTOPV,
CT_TEST_STOP,
CT_READ_V,
CT_M_SPEED,
CT_M_DIS,
CT_M_FRESH,
CT_M_CMD,
CT_M_READ_DAT,
CT_SET_MOTOR_CAL,
CT_M_SWITCH_START,
CT_M_SWITCH_CLOSE,
CT_M_SWITCH_TOP,
CT_M_SWITCH_BOM,
CT_M_SWITCH_RESET,
CT_M_SWITCH_VALUE,
CT_M_RESET_LEFT,
CT_M_RESET_RIGHT,
CT_LASE_TIMMER_ON,
CT_LASE_TIMMER_OFF,
CT_M_PROBE_ON,
CT_M_PROBE_OFF,
CT_MOVETOXYZ,
CT_MOVETOXYZ_LASE,
CT_GET_LASE,
CT_MOVETOXYZV,
CT_M_LASE_ON,
CT_M_LASE_OFF,
CT_M_BCL_ON,
CT_M_BCL_OFF,
CT_MOVETOXYZ_JM,
CT_READ_MOTOR_CAL,
CT_END
CT_LASE_TIMMER_ON,
CT_LASE_TIMMER_OFF,
CT_M_PROBE_ON,
CT_M_PROBE_OFF,
CT_MOVETOXYZ,
CT_MOVETOXYZ_LASE,
CT_GET_LASE,
CT_MOVETOXYZV,
CT_M_LASE_ON,
CT_M_LASE_OFF,
CT_M_BCL_ON,
CT_M_BCL_OFF,
CT_MOVETOXYZ_JM,
CT_READ_MOTOR_CAL,
CT_MOVEXY,
CT_GET_INTERRUPT_MSG,
CT_SET_INTERRUPT_MSG,
CT_SET_GETINTERRUPTMSG_METHOD,
CT_END
};
enum SCALE_CMD
{
CT_SEC_FLAG,
CT_SEC_FLAG,
CT_SCALEX,
CT_SCALEY,
CT_SCALEZ,
CT_SCALEX,
CT_SCALEY,
CT_SCALEZ,
CT_SECTIONX,
CT_SECTIONY,
CT_SECTIONZ,
CT_SECTIONX,
CT_SECTIONY,
CT_SECTIONZ,
CT_SET_AXISX,
CT_SET_AXISY,
CT_SET_AXISZ,
CT_SET_AXISX,
CT_SET_AXISY,
CT_SET_AXISZ,
CT_SET_SECTIONX,
CT_SET_SECTIONY,
CT_SET_SECTIONZ,
CT_SET_SECTIONX,
CT_SET_SECTIONY,
CT_SET_SECTIONZ,
CT_X_BEGIN,
CT_Y_BEGIN,
CT_Z_BEGIN,
CT_X_BEGIN,
CT_Y_BEGIN,
CT_Z_BEGIN,
CT_X_SECTION_END,
CT_Y_SECTION_END,
CT_Z_SECTION_END,
CT_X_SECTION_END,
CT_Y_SECTION_END,
CT_Z_SECTION_END,
CT_X_SECTION_DEC,
CT_Y_SECTION_DEC,
CT_Z_SECTION_DEC,
CT_X_SECTION_DEC,
CT_Y_SECTION_DEC,
CT_Z_SECTION_DEC,
CT_SET_SECTION_X,
CT_SET_SECTION_Y,
CT_SET_SECTION_Z,
CT_SET_SECTION_X,
CT_SET_SECTION_Y,
CT_SET_SECTION_Z,
CT_PROBE_FLAG,
CT_SET_LINE_X,
CT_SET_LINE_Y,
CT_SET_LINE_Z,
CT_SET_PROBE_LINE,
CT_SET_PROBE_SECTION,
CT_SET_VERNO,
CT_SET_RESET_FLAG,
CT_GET_RESET_FLAG
CT_PROBE_FLAG,
CT_SET_LINE_X,
CT_SET_LINE_Y,
CT_SET_LINE_Z,
CT_SET_PROBE_LINE,
CT_SET_PROBE_SECTION,
CT_SET_VERNO,
CT_SET_RESET_FLAG,
CT_GET_RESET_FLAG,
CT_GET_SYSTEM_VER_INFO,
CT_SCALE_TOTAL=255
};
enum LIGHT_CMD
{
CT_LIGHT1_SIZE,
CT_LIGHT2_SIZE,
CT_LIGHT3_SIZE,
CT_LIGHT4_SIZE,
CT_LIGHT1_SIZE,
CT_LIGHT2_SIZE,
CT_LIGHT3_SIZE,
CT_LIGHT4_SIZE,
CT_LIGHT1_SWITCH,
CT_LIGHT2_SWITCH,
CT_LIGHT3_SWITCH,
CT_LIGHT4_SWITCH,
CT_LIGHT5_SWITCH,
CT_LIGHT_CMD
CT_LIGHT1_SWITCH,
CT_LIGHT2_SWITCH,
CT_LIGHT3_SWITCH,
CT_LIGHT4_SWITCH,
CT_LIGHT5_SWITCH,
CT_LIGHT_CMD
};
enum INT_CMD
{
CT_STOPMX,
CT_STOPMY,
CT_STOPMZ,
CT_STOPXYZ,
CT_STOPMX,
CT_STOPMY,
CT_STOPMZ,
CT_STOPXYZ,
CT_ENDXYZ,
CT_ENDXYZ,
CT_SWITCHX,
CT_SWITCHY,
CT_SWITCHZ,
CT_SWITCHX,
CT_SWITCHY,
CT_SWITCHZ,
CT_PROBE,
CT_PROBE_SWITCH,
CT_XYZLASE,
CT_SEND_XYZLASE,
CT_END1
CT_PROBE,
CT_PROBE_SWITCH,
CT_XYZLASE,
CT_SEND_XYZLASE,
CT_END1
};
enum PRO_DATA
{
CT_READ_AXISXYZ,
CT_READ_AXISX,
CT_READ_AXISY,
CT_READ_AXISZ,
CT_READ_AXISXYZ,
CT_READ_AXISX,
CT_READ_AXISY,
CT_READ_AXISZ,
CT_READ_PROBEXYZ,
CT_READ_PROBEX,
CT_READ_PROBEY,
CT_READ_PROBEZ,
CT_READ_PROBEXYZ,
CT_READ_PROBEX,
CT_READ_PROBEY,
CT_READ_PROBEZ,
CT_SAVE_MOTORX1,
CT_SAVE_MOTORX2,
CT_SAVE_MOTORX3,
CT_SAVE_MOTORX4,
CT_SAVE_MOTORX5,
CT_SAVE_MOTORX1,
CT_SAVE_MOTORX2,
CT_SAVE_MOTORX3,
CT_SAVE_MOTORX4,
CT_SAVE_MOTORX5,
CT_SAVE_MOTORY1,
CT_SAVE_MOTORY2,
CT_SAVE_MOTORY3,
CT_SAVE_MOTORY4,
CT_SAVE_MOTORY5,
CT_SAVE_MOTORY1,
CT_SAVE_MOTORY2,
CT_SAVE_MOTORY3,
CT_SAVE_MOTORY4,
CT_SAVE_MOTORY5,
CT_SAVE_MOTORZ1,
CT_SAVE_MOTORZ2,
CT_SAVE_MOTORZ3,
CT_SAVE_MOTORZ4,
CT_SAVE_MOTORZ5,
CT_SAVE_MOTORZ1,
CT_SAVE_MOTORZ2,
CT_SAVE_MOTORZ3,
CT_SAVE_MOTORZ4,
CT_SAVE_MOTORZ5,
CT_READ_MOTORX1,
CT_READ_MOTORX2,
CT_READ_MOTORX3,
CT_READ_MOTORX4,
CT_READ_MOTORX5,
CT_READ_MOTORX1,
CT_READ_MOTORX2,
CT_READ_MOTORX3,
CT_READ_MOTORX4,
CT_READ_MOTORX5,
CT_READ_MOTORY1,
CT_READ_MOTORY2,
CT_READ_MOTORY3,
CT_READ_MOTORY4,
CT_READ_MOTORY5,
CT_READ_MOTORY1,
CT_READ_MOTORY2,
CT_READ_MOTORY3,
CT_READ_MOTORY4,
CT_READ_MOTORY5,
CT_READ_MOTORZ1,
CT_READ_MOTORZ2,
CT_READ_MOTORZ3,
CT_READ_MOTORZ4,
CT_READ_MOTORZ5,
CT_READ_MOTORZ1,
CT_READ_MOTORZ2,
CT_READ_MOTORZ3,
CT_READ_MOTORZ4,
CT_READ_MOTORZ5,
CT_SAVE_SCALEX,
CT_SAVE_SCALEY,
CT_SAVE_SCALEZ,
CT_SAVE_SCALEX,
CT_SAVE_SCALEY,
CT_SAVE_SCALEZ,
CT_READ_SCALEX,
CT_READ_SCALEY,
CT_READ_SCALEZ,
CT_READ_SCALEX,
CT_READ_SCALEY,
CT_READ_SCALEZ,
CT_SAVE_SECTION_FLAGX,
CT_SAVE_SECTION_FLAGY,
CT_SAVE_SECTION_FLAGZ,
CT_SAVE_SECTION_FLAGX,
CT_SAVE_SECTION_FLAGY,
CT_SAVE_SECTION_FLAGZ,
CT_READ_SECTION_FLAGX,
CT_READ_SECTION_FLAGY,
CT_READ_SECTION_FLAGZ,
CT_READ_SECTION_FLAGX,
CT_READ_SECTION_FLAGY,
CT_READ_SECTION_FLAGZ,
CT_SAVE_PROBE,
CT_READ_PROBE,
CT_SAVE_PROBE,
CT_READ_PROBE,
CT_SAVE_SEC_REALX,
CT_SAVE_SEC_INTX,
CT_SAVE_SEC_SCALEX,
CT_SAVE_SEC_REALX,
CT_SAVE_SEC_INTX,
CT_SAVE_SEC_SCALEX,
CT_SAVE_SEC_REALY,
CT_SAVE_SEC_INTY,
CT_SAVE_SEC_SCALEY,
CT_SAVE_SEC_REALY,
CT_SAVE_SEC_INTY,
CT_SAVE_SEC_SCALEY,
CT_SAVE_SEC_REALZ,
CT_SAVE_SEC_INTZ,
CT_SAVE_SEC_SCALEZ,
CT_SAVE_SEC_REALZ,
CT_SAVE_SEC_INTZ,
CT_SAVE_SEC_SCALEZ,
CT_READ_SEC_REALX,
CT_READ_SEC_INTX,
CT_READ_SEC_SCALEX,
CT_READ_SEC_REALX,
CT_READ_SEC_INTX,
CT_READ_SEC_SCALEX,
CT_READ_SEC_REALY,
CT_READ_SEC_INTY,
CT_READ_SEC_SCALEY,
CT_READ_SEC_REALY,
CT_READ_SEC_INTY,
CT_READ_SEC_SCALEY,
CT_READ_SEC_REALZ,
CT_READ_SEC_INTZ,
CT_READ_SEC_SCALEZ,
CT_READ_SEC_REALZ,
CT_READ_SEC_INTZ,
CT_READ_SEC_SCALEZ,
CT_READ_SYSTEM,
CT_READ_XSECTION_INT,
CT_READ_XSECTION_REAL,
CT_READ_XSECTION_SCALE,
CT_READ_SYSTEM,
CT_READ_XSECTION_INT,
CT_READ_XSECTION_REAL,
CT_READ_XSECTION_SCALE,
CT_READ_YSECTION_INT,
CT_READ_YSECTION_REAL,
CT_READ_YSECTION_SCALE,
CT_READ_YSECTION_INT,
CT_READ_YSECTION_REAL,
CT_READ_YSECTION_SCALE,
CT_READ_ZSECTION_INT,
CT_READ_ZSECTION_REAL,
CT_READ_ZSECTION_SCALE,
CT_READ_ZSECTION_INT,
CT_READ_ZSECTION_REAL,
CT_READ_ZSECTION_SCALE,
CT_WRITE_SYSTEM,
CT_WRITE_XSECTION_INT,
CT_WRITE_XSECTION_REAL,
CT_WRITE_XSECTION_SCALE,
CT_WRITE_SYSTEM,
CT_WRITE_XSECTION_INT,
CT_WRITE_XSECTION_REAL,
CT_WRITE_XSECTION_SCALE,
CT_WRITE_YSECTION_INT,
CT_WRITE_YSECTION_REAL,
CT_WRITE_YSECTION_SCALE,
CT_WRITE_YSECTION_INT,
CT_WRITE_YSECTION_REAL,
CT_WRITE_YSECTION_SCALE,
CT_WRITE_ZSECTION_INT,
CT_WRITE_ZSECTION_REAL,
CT_WRITE_ZSECTION_SCALE,
CT_WRITE_ZSECTION_INT,
CT_WRITE_ZSECTION_REAL,
CT_WRITE_ZSECTION_SCALE,
CT_READ_AXISV,
CT_READ_ADC,
CT_READ_ADC_INDEX,
CT_READ_AXISV,
CT_READ_ADC,
CT_READ_ADC_INDEX,
CT_PRO_DAT_END,
CT_CLEAR_PROBE_FLAG,
CT_READ_IO_DAT,
CT_WRITE_IO_DAT
CT_PRO_DAT_END,
CT_CLEAR_PROBE_FLAG,
CT_READ_IO_DAT,
CT_WRITE_IO_DAT,
CT_DATA_TOTAL=255
};
enum EHOME_MODE
@@ -360,4 +358,25 @@ enum EHOME_MODE
CT_HOME_YZ,
CT_HOME_TOATAL=255
};
};
enum E_GET_INTERRUPT_MSG_METHOD
{
E_GET_INTERRUPT_MSG_INTERRUPT=0,
E_GET_INTERRUPT_MSG_INQUIRY,
E_GET_INTERRUPT_MSG_TOATAL=255
};
enum E_INTERRUPT_MSG
{
EMSG_STOPXYZ_1_MOVETOXYZ=0,
EMSG_STOPXYZ_6_MOVETOV,
EMSG_STOPXYZ_7_TESTV,//Home V
EMSG_XYZLASE_1_MOVETOXYZ_LASE,
EMSG_SEND_XYZLASE_1_GET_LASE,
EMSG_PROBE_SWITCH_1,
EMSG_PROBE_1,
EMSG_FINISHED_TYPE_TOATAL=20
};
#endif
@@ -200,6 +200,10 @@ void CSO7_Proto::_process_rcv_transfer_data(int iEP)
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]);
@@ -250,7 +254,9 @@ void CSO7_Proto::_process_rcv_transfer_data(int iEP)
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]);
@@ -448,6 +454,15 @@ CSO7_Proto::CSO7_Proto()
ep_buff[i]._hProtoPending = false;
ep_buff[i]._event = NULL;
};
for (int i=0;i<20;i++)
{
for (int j=0;j<2;j++)
{
g_machine.GetInterruptMsg[i][j]=0;
}
}
g_machine.GetInterruptMsgMethod=E_GET_INTERRUPT_MSG_INTERRUPT;
g_machine.IsSupportReadInterrputMsg=FALSE;
g_machine.IsOffline=TRUE;
g_machine.FPGAData=0;
g_machine.x._Move_Speed_Gear =2;
@@ -2996,14 +3011,14 @@ SSI_STATUS_MOTION CSO7_Proto::so7_motion_set_position_xyz(double dX, double dY,
const long lMaxLoopCnt = 5000/lSleep; // use max homing time of 20 seconds
long lLoopCnt = 0;
Sleep(lSleep);
while (g_machine.InterruptFlag[0]!=CT_STOPXYZ && lLoopCnt < lMaxLoopCnt)
{
BOOL IsFinished(FALSE);
do
{
so7_motion_is_finished(EMSG_STOPXYZ_1_MOVETOXYZ,IsFinished);
Sleep(lSleep);
_send_cmd_SO7_CMD_READ_INTERRUPT_MESSAGE();
++lLoopCnt;
}
g_machine.InterruptFlag[0]=0;
} while (g_machine.InterruptFlag[0]!=CT_STOPXYZ && lLoopCnt < lMaxLoopCnt);
TRACE1("Presettle Time: %lf\n", TimeInSecs());
//WaitForSettleXYZZM();
TRACE1("Postsettle Time: %lf\n", TimeInSecs());
@@ -3012,7 +3027,34 @@ SSI_STATUS_MOTION CSO7_Proto::so7_motion_set_position_xyz(double dX, double dY,
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.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
@@ -3500,8 +3542,7 @@ SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_MOVE_TO_POS_XYZ(char ProbeType)
pSO7_CMD_02->s_SO7_CMD_MOVE_TO_XYZ.data[8]=(g_machine.z._pos_fixed._char_[0]);
}
ep_buff[EP_02_CMD_IDX]._size = 0x0C;
ep_buff[EP_02_CMD_IDX]._size = 0x0E;
ep_buff[EP_82_DATA_IDX]._size = 0x45;
g_hEP02_Thread_State=THREAD_RUNNING_STATE2;
@@ -3893,7 +3934,55 @@ SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_SET_ZOOM_SPEED(char xyz_gear)
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<char>((iSpeed%256)+1);
*(ep_buff[EP_02_CMD_IDX]._buffer+6) = static_cast<char>(MaxSpeed);
}
else
{
*(ep_buff[EP_02_CMD_IDX]._buffer+5) = static_cast<char>(iSpeed);
*(ep_buff[EP_02_CMD_IDX]._buffer+6) = 0;
}
iDeceDistance =0;
*(ep_buff[EP_02_CMD_IDX]._buffer+7) =static_cast<char>(iDeceDistance/1000);
*(ep_buff[EP_02_CMD_IDX]._buffer+7) = *(ep_buff[EP_02_CMD_IDX]._buffer+7) &0x0f;
*(ep_buff[EP_02_CMD_IDX]._buffer+8) = static_cast<char>((iDeceDistance%1000)/100);
*(ep_buff[EP_02_CMD_IDX]._buffer+8) = *(ep_buff[EP_02_CMD_IDX]._buffer+8) & 0x0f;
*(ep_buff[EP_02_CMD_IDX]._buffer+9) = static_cast<char>((iDeceDistance%100)/10);
*(ep_buff[EP_02_CMD_IDX]._buffer+9) = *(ep_buff[EP_02_CMD_IDX]._buffer+9) & 0x0f;
*(ep_buff[EP_02_CMD_IDX]._buffer+10)= static_cast<char>(iDeceDistance%10);
*(ep_buff[EP_02_CMD_IDX]._buffer+10)=*(ep_buff[EP_02_CMD_IDX]._buffer+10) & 0x0f;
ep_buff[EP_02_CMD_IDX]._size = 0x0b;
ep_buff[EP_82_DATA_IDX]._size = 0x45;
g_hEP02_Thread_State=THREAD_RUNNING_STATE2;
_do_single_threaded_usb_comm(EP_02_CMD_IDX);
ReleaseMutex(g_hEP02_Serial_Mutex);
return SSI_STATUS_MOTION_NORMAL;
}
//=============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(char axis_type,char xyz_gear)
@@ -4271,6 +4360,104 @@ SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_READ_DATA_FROM_FPGA(char axis_ty
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()
@@ -4411,6 +4598,15 @@ SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_READ_V_DATA()
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;
};
@@ -4583,3 +4779,19 @@ 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);
}
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;
}
@@ -207,7 +207,11 @@ struct struct_so7_machine
char FPGAData;
char InPortStatus;
int _motor_pulse_num;
char FirmwareInfo[10];
char GetInterruptMsg[20][2];
char GetInterruptMsgMethod;
BOOL IsOffline;
BOOL IsSupportReadInterrputMsg;
struct s_so7_axis x;
struct s_so7_axis y;
struct s_so7_axis z;
@@ -232,7 +236,7 @@ struct s_SO7_CMD_BUFF_02
struct
{
BYTE uSubCmdByte;
char data[9];
char data[12];
}s_SO7_CMD_MOVE_TO_XYZ;
struct
{
@@ -355,6 +359,7 @@ public:
SSI_STATUS_MOTION so7_motion_set_speed_xyz(double dPercentSpeed);
SSI_STATUS_MOTION so7_motion_get_speed_xyz(double &dPercentSpeed);
SSI_STATUS_MOTION so7_motion_get_3D_max_speed(double &dMaxSpeed);
SSI_STATUS_MOTION so7_motion_is_finished(char MotionType,BOOL& IsFinished);
SSI_STATUS_MOTION _calculate_straightline_motion(double dSpeedMM);
@@ -413,6 +418,13 @@ public:
SSI_STATUS_MOTION _send_cmd_SO7_CMD_READ_ZSIGNAL_POS_Z();
SSI_STATUS_MOTION _send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(char axis_type,char Addr,char Data);
SSI_STATUS_MOTION _send_cmd_SO7_CMD_READ_DATA_FROM_FPGA(char axis_type,char Addr);
SSI_STATUS_MOTION _send_cmd_SO7_CMD_READ_FIRMWARE_VERSION_INFO();
SSI_STATUS_MOTION _send_cmd_SO7_CMD_GET_INTERRUPT_MSG(char cType);
SSI_STATUS_MOTION _send_cmd_SO7_CMD_SET_INTERRUPT_MSG(char cType,char cValue);
SSI_STATUS_MOTION _send_cmd_SO7_CMD_SET_GET_INTERRUPT_MSG_METHOD(char Method);
SSI_STATUS_MOTION _send_cmd_SO7_CMD_MOVE_XY(char SpeedGearX,char SpeedGearY);
SSI_STATUS_MOTION _send_cmd_SO7_CMD_SET_CONSTANT_SPEED(int iSpeed,char axis_type,char xyz_gear);
static SSI_STATUS_MOTION _process_SO7_CMD_MOVE_X();
static SSI_STATUS_MOTION _process_SO7_CMD_MOVE_Y();
@@ -448,7 +460,8 @@ public:
static SSI_STATUS_MOTION _process_SO7_CMD_READ_ZSIGNAL_POS_Z();
static SSI_STATUS_MOTION _process_SO7_CMD_WRITE_DATA_TO_FPGA();
static SSI_STATUS_MOTION _process_SO7_CMD_READ_DATA_FROM_FPGA();
static SSI_STATUS_MOTION _process_SO7_CMD_READ_FIRMWARE_VERSION_INFO();
static SSI_STATUS_MOTION _process_SO7_CMD_GET_INTERRUPT_MSG(BYTE Type);
};
#endif