From 24ba06adf7fe3ed0151b3df666723559ff54438d Mon Sep 17 00:00:00 2001 From: TAO Cheng Date: Tue, 12 Nov 2013 14:37:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=8F=98=E5=80=8D=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E8=BE=93=E5=87=BA=EF=BC=8C=E7=BB=9F=E4=B8=80CMD=5FH?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Base/Interfac/Msi/Hsi/SevenOcean/CMD_H.h | 549 +++++++++--------- .../Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp | 230 +++++++- .../Interfac/Msi/Hsi/SevenOcean/SO7_Proto.h | 17 +- .../Tools/UsbUtility/Debug/UtilityDebug.Log | 153 +++++ .../Tools/UsbUtility/Debug/Utility_Config.ini | 58 +- .../Tools/UsbUtility/Release/UtilityDebug.Log | 11 + .../Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.rc | 32 +- .../UsbUtility/UsbUtil/ProcessButton.cpp | 26 +- .../UsbUtility/UsbUtil/SO7_Automatic_Zoom.cpp | 64 +- .../UsbUtility/UsbUtil/SO7_Automatic_Zoom.h | 11 +- .../UsbUtility/UsbUtil/SO7_Move_Location.cpp | 91 +-- .../UsbUtility/UsbUtil/SO7_Move_Location.h | 1 + .../Tools/UsbUtility/UsbUtil/SO7_UtilDlg.cpp | 27 +- .../Tools/UsbUtility/UsbUtil/SO7_UtilDlg.h | 4 + .../Hsi/Tools/UsbUtility/UsbUtil/resource.h | 9 +- .../Hsi/Tools/UsbUtility/UsbUtil_VS2010.suo | Bin 2355712 -> 2355712 bytes 16 files changed, 912 insertions(+), 371 deletions(-) diff --git a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/CMD_H.h b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/CMD_H.h index c6031e8..82590b4 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/CMD_H.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/CMD_H.h @@ -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 -}; \ No newline at end of file +}; + +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 \ No newline at end of file diff --git a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp index 2e2340f..dfea5e9 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp @@ -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((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; + *(ep_buff[EP_02_CMD_IDX]._buffer+7) =static_cast(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((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((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(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; +} \ No newline at end of file diff --git a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.h b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.h index 8f4f3c1..a991cce 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.h @@ -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 diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/UtilityDebug.Log b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/UtilityDebug.Log index a4221e8..107e62a 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/UtilityDebug.Log +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/UtilityDebug.Log @@ -2213,3 +2213,156 @@ _start_machine Exit: Exit_SO7Usb Init:Open device succeed . _start_machine +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Init:Open device succeed . +_start_machine +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Destruct Cso7_Proto. +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Destruct Cso7_Proto. +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Init:Open device succeed . +_start_machine +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Destruct Cso7_Proto. +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Destruct Cso7_Proto. +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Destruct Cso7_Proto. +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Destruct Cso7_Proto. +Construct Cso7_Proto. +Destruct Cso7_Proto. +Construct Cso7_Proto. +Destruct Cso7_Proto. +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Destruct Cso7_Proto. +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Destruct Cso7_Proto. +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Destruct Cso7_Proto. +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Destruct Cso7_Proto. +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Destruct Cso7_Proto. +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Destruct Cso7_Proto. +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Destruct Cso7_Proto. +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Destruct Cso7_Proto. +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Destruct Cso7_Proto. +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Destruct Cso7_Proto. diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/Utility_Config.ini b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/Utility_Config.ini index 9799746..5fee9ed 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/Utility_Config.ini +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/Utility_Config.ini @@ -1,27 +1,27 @@ [HARDWARE] -MOVETOSPEED_FAST_X=20.00000000 -MOVETOSPEED_SLOW_X=10.00000000 +MOVETOSPEED_FAST_X=0.00000000 +MOVETOSPEED_SLOW_X=100.00000000 MOVETOSPEED_SCALE_X=1.00000000 ; -MOVETOSPEED_FAST_Y=20.00000000 -MOVETOSPEED_SLOW_Y=10.00000000 +MOVETOSPEED_FAST_Y=0.00000000 +MOVETOSPEED_SLOW_Y=0.00000000 MOVETOSPEED_SCALE_Y=1.00000000 ; -MOVETOSPEED_FAST_Z=20.00000000 -MOVETOSPEED_SLOW_Z=10.00000000 +MOVETOSPEED_FAST_Z=0.00000000 +MOVETOSPEED_SLOW_Z=0.00000000 MOVETOSPEED_SCALE_Z=1.00000000 ; -SPEED_BASE_X1=0 -SPEED_MAX_X1=0 -SPEED_START_X1=10 -SPEED_FRESH_X1=0 -SPEED_SLOW_X1=0.000 +SPEED_BASE_X1=5 +SPEED_MAX_X1=168 +SPEED_START_X1=28 +SPEED_FRESH_X1=10 +SPEED_SLOW_X1=0.510 ; SPEED_BASE_X2=3 SPEED_MAX_X2=50 SPEED_START_X2=10 SPEED_FRESH_X2=10 -SPEED_SLOW_X2=0.109 +SPEED_SLOW_X2=0.110 ; SPEED_BASE_X3=2 SPEED_MAX_X3=5 @@ -41,11 +41,11 @@ SPEED_START_X5=80 SPEED_FRESH_X5=10 SPEED_SLOW_X5=0.001 ; -SPEED_BASE_Y1=0 -SPEED_MAX_Y1=0 -SPEED_START_Y1=10 -SPEED_FRESH_Y1=0 -SPEED_SLOW_Y1=0.000 +SPEED_BASE_Y1=5 +SPEED_MAX_Y1=168 +SPEED_START_Y1=28 +SPEED_FRESH_Y1=10 +SPEED_SLOW_Y1=0.600 ; SPEED_BASE_Y2=3 SPEED_MAX_Y2=60 @@ -71,17 +71,17 @@ SPEED_START_Y5=80 SPEED_FRESH_Y5=10 SPEED_SLOW_Y5=0.001 ; -SPEED_BASE_Z1=0 -SPEED_MAX_Z1=0 -SPEED_START_Z1=10 -SPEED_FRESH_Z1=0 -SPEED_SLOW_Z1=0.000 +SPEED_BASE_Z1=5 +SPEED_MAX_Z1=130 +SPEED_START_Z1=28 +SPEED_FRESH_Z1=10 +SPEED_SLOW_Z1=0.510 ; SPEED_BASE_Z2=3 SPEED_MAX_Z2=60 SPEED_START_Z2=10 SPEED_FRESH_Z2=10 -SPEED_SLOW_Z2=0.109 +SPEED_SLOW_Z2=0.110 ; SPEED_BASE_Z3=2 SPEED_MAX_Z3=5 @@ -101,20 +101,20 @@ SPEED_START_Z5=80 SPEED_FRESH_Z5=10 SPEED_SLOW_Z5=0.001 ; -X_MOTOR_PRECISION=0.009 -Y_MOTOR_PRECISION=0.009 +X_MOTOR_PRECISION=0.010 +Y_MOTOR_PRECISION=0.010 Z_MOTOR_PRECISION=0.100 ; X_MOTOR_WHEELBASE=19.990 Y_MOTOR_WHEELBASE=20.000 -Z_MOTOR_WHEELBASE=2.999 +Z_MOTOR_WHEELBASE=3.000 ; MOTOR_PULSE_NUM=10000 ; [WORKTABLE] -X_SCALE_RESOLUTION=0.400 -Y_SCALE_RESOLUTION=0.400 -Z_SCALE_RESOLUTION=0.400 +X_SCALE_RESOLUTION=0.500 +Y_SCALE_RESOLUTION=0.500 +Z_SCALE_RESOLUTION=0.500 ; X_NEG_WORKING_LIMIT=-0.000 Y_NEG_WORKING_LIMIT=0.000 diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Release/UtilityDebug.Log b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Release/UtilityDebug.Log index 92ffdf4..50fc5df 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Release/UtilityDebug.Log +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Release/UtilityDebug.Log @@ -127,3 +127,14 @@ Init:Open device succeed . _start_machine Exit: Exit_SO7Usb Destruct Cso7_Proto. +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Destruct Cso7_Proto. +Construct Cso7_Proto. +Destruct Cso7_Proto. +Construct Cso7_Proto. +Destruct Cso7_Proto. +Construct Cso7_Proto. +Destruct Cso7_Proto. diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.rc b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.rc index 9068971..6564df8 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.rc +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.rc @@ -55,12 +55,12 @@ BEGIN PUSHBUTTON "Motion",IDC_BUTTON_LOAD_SO7CONFIG,20,143,44,23,BS_MULTILINE PUSHBUTTON "V+",IDC_BUTTON_SO7_MOVE_ZOOM_IN,77,159,25,12 PUSHBUTTON "V-",IDC_BUTTON_SO7_MOVE_ZOOM_OUT,77,180,25,12 - PUSHBUTTON "Z+",IDC_BUTTON_SO7_MOVE_Z_UP,112,152,25,12 - PUSHBUTTON "Z-",IDC_BUTTON_SO7_MOVE_Z_DOWN,112,186,25,12 + PUSHBUTTON "Z+",IDC_BUTTON_SO7_MOVE_Z_UP,101,140,25,12 + PUSHBUTTON "Z-",IDC_BUTTON_SO7_MOVE_Z_DOWN,103,196,25,12 PUSHBUTTON "X-",IDC_BUTTON_SO7_MOVE_X_LEFT,128,169,25,12 - PUSHBUTTON "Y+",IDC_BUTTON_SO7_MOVE_Y_FRONT,154,159,25,12 - PUSHBUTTON "Y-",IDC_BUTTON_SO7_MOVE_Y_BACK,154,180,25,12 - PUSHBUTTON "X+",IDC_BUTTON_SO7_MOVE_X_RIGHT,180,169,25,12 + PUSHBUTTON "Y+",IDC_BUTTON_SO7_MOVE_Y_FRONT,154,156,25,12 + PUSHBUTTON "Y-",IDC_BUTTON_SO7_MOVE_Y_BACK,154,182,25,12 + PUSHBUTTON "X+",IDC_BUTTON_SO7_MOVE_X_RIGHT,179,169,25,12 PUSHBUTTON "Home XYZ",IDC_BUTTON_SO7_RESET_XYZ,277,154,76,14,BS_MULTILINE PUSHBUTTON "Hoom Manual",IDC_BUTTON_MANUAL_HOME,277,135,76,14 PUSHBUTTON "Home DCC",IDC_BUTTON_RESET_WORKTABLE,277,192,40,14 @@ -156,6 +156,10 @@ BEGIN LTEXT "Data",IDC_STATIC,287,373,16,8 COMBOBOX IDC_COMBO_RWDATA_ADDR,307,348,45,30,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP COMBOBOX IDC_COMBO_SO7_HOMEMODE,324,192,27,30,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "◥",IDC_BUTTON_SO7_MOVE_XR_YF,179,156,25,12 + PUSHBUTTON "◢",IDC_BUTTON_SO7_MOVE_XR_YB,179,182,25,12 + PUSHBUTTON "◤",IDC_BUTTON_SO7_MOVE_XL_YF,128,156,25,12 + PUSHBUTTON "◣",IDC_BUTTON_SO7_MOVE_XL_YB,128,182,25,12 END IDD_S07_UTIL_SEND_PARAMETER DIALOGEX 0, 0, 753, 481 @@ -328,7 +332,7 @@ BEGIN EDITTEXT IDC_EDIT_DATASEND,86,316,191,16,ES_MULTILINE | ES_AUTOHSCROLL | ES_WANTRETURN PUSHBUTTON "Clear",IDC_BUTTON_CLEARMESSAGE,284,363,50,17 GROUPBOX "Serial Communication",IDC_STATIC,11,300,398,117 - GROUPBOX "Move Test",IDC_STATIC,13,28,393,247 + GROUPBOX "Move Test",IDC_STATIC,13,28,406,247 EDITTEXT IDC_EDIT_ZOOM_ANGLE,129,137,81,14,ES_RIGHT | ES_AUTOHSCROLL | ES_READONLY LTEXT "Zm",IDC_STATIC,109,140,10,8 CTEXT "°",IDC_STATIC,213,136,8,8 @@ -337,17 +341,17 @@ BEGIN PUSHBUTTON "Zero Set",IDC_BUTTON_ZOOM_SETZERO,263,138,50,14,NOT WS_VISIBLE EDITTEXT IDC_EDIT_REPETEST_PAUSE,179,100,54,14,ES_AUTOHSCROLL CTEXT "ms",IDC_STATIC,235,101,11,8 - EDITTEXT IDC_EDIT_ZOOM_LOG,47,159,250,110,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL - PUSHBUTTON "Save as...",IDC_BUTTON_SAVELOG,320,209,39,19 + EDITTEXT IDC_EDIT_ZOOM_LOG,129,158,249,110,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL + PUSHBUTTON "Save as...",IDC_BUTTON_SAVELOG,380,212,39,19 COMBOBOX IDC_COMBO_REPETEST_FROM,85,80,54,30,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_COMBO_REPETEST_TO,179,76,54,30,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_COMBO_REPETEST_TO,179,80,54,30,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP PUSHBUTTON "Begin",IDC_BUTTON_REPETEST_BEGIN,263,89,50,14 EDITTEXT IDC_EDIT_REPETEST_TIMES,85,100,54,14,ES_AUTOHSCROLL GROUPBOX "Repeatability Test",IDC_STATIC,47,69,268,64 LTEXT "Times",IDC_STATIC,59,104,19,8 LTEXT "Pause",IDC_STATIC,155,102,20,8 - LTEXT "To",IDC_STATIC,165,80,9,8 - LTEXT "From",IDC_STATIC,61,85,17,8 + LTEXT "To",IDC_STATIC,165,83,9,8 + LTEXT "From",IDC_STATIC,61,83,17,8 CONTROL "Continue",IDC_CHECK_AUTOZOOM_CONTINUE_READ,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,61,140,40,10 PUSHBUTTON "V+",IDC_BUTTON_MOVEV_IN,48,235,50,14,NOT WS_VISIBLE PUSHBUTTON "V-",IDC_BUTTON_MOVEV_OUT,48,252,50,14,NOT WS_VISIBLE @@ -371,6 +375,7 @@ BEGIN EDITTEXT IDC_EDIT_TESTZOOM_PRODUCTID,159,16,124,14,ES_AUTOHSCROLL | ES_READONLY LTEXT "变倍镜头产品编号:",IDC_STATIC,80,18,73,8 PUSHBUTTON "MoveTo",IDC_BUTTON_ZOOM_MOVETO,263,43,50,14 + EDITTEXT IDC_EDIT_ZOOM_TIME,14,159,112,112,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL END IDD_S07_OPTION_DIALOG DIALOGEX 0, 0, 298, 166 @@ -486,6 +491,9 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSM CAPTION "Move To Location(SO7)" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN + CONTROL "System",IDC_RADIO_SPEED_SYSTEM,"Button",BS_AUTORADIOBUTTON | WS_GROUP,179,20,39,10 + CONTROL "Fast",IDC_RADIO_SPEED_FAST,"Button",BS_AUTORADIOBUTTON,179,31,30,10 + CONTROL "Slow",IDC_RADIO_SPEED_SLOW,"Button",BS_AUTORADIOBUTTON,179,42,31,10 EDITTEXT IDC_EDIT_MOVE_TO_X,41,78,53,12,ES_AUTOHSCROLL EDITTEXT IDC_EDIT_MOVE_TO_Y,41,99,53,12,ES_AUTOHSCROLL EDITTEXT IDC_EDIT_MOVE_TO_Z,41,120,53,12,ES_AUTOHSCROLL @@ -510,8 +518,6 @@ BEGIN CONTROL "Relative",IDC_RADIO_MOVE_RELATIVE,"Button",BS_AUTORADIOBUTTON | WS_GROUP,107,22,42,10 CONTROL "Absolute",IDC_RADIO_MOVE_ABSOLUTE,"Button",BS_AUTORADIOBUTTON,107,38,44,10 GROUPBOX "Move Speed",IDC_STATIC,168,9,330,46 - CONTROL "Fast",IDC_RADIO_SPEED_FAST,"Button",BS_AUTORADIOBUTTON | WS_GROUP,180,22,30,10 - CONTROL "Slow",IDC_RADIO_SPEED_SLOW,"Button",BS_AUTORADIOBUTTON,180,36,31,10 PUSHBUTTON "EXIT",IDCANCEL,454,333,50,14 LTEXT "x",IDC_STATIC,29,78,8,8 LTEXT "y",IDC_STATIC,29,99,8,8 diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/ProcessButton.cpp b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/ProcessButton.cpp index 7ebc872..3a3f6e5 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/ProcessButton.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/ProcessButton.cpp @@ -50,6 +50,26 @@ void CProcessButton::OnLButtonDown(UINT nFlags, CPoint point) switch (iCtrlID) { + case IDC_BUTTON_SO7_MOVE_XR_YF: + { + m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_XY(m_pSO7_Proto->g_machine.x._Move_Speed_Gear,m_pSO7_Proto->g_machine.y._Move_Speed_Gear); + break; + } + case IDC_BUTTON_SO7_MOVE_XR_YB: + { + m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_XY(m_pSO7_Proto->g_machine.x._Move_Speed_Gear,-m_pSO7_Proto->g_machine.y._Move_Speed_Gear); + break; + } + case IDC_BUTTON_SO7_MOVE_XL_YF: + { + m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_XY(-m_pSO7_Proto->g_machine.x._Move_Speed_Gear,m_pSO7_Proto->g_machine.y._Move_Speed_Gear); + break; + } + case IDC_BUTTON_SO7_MOVE_XL_YB: + { + m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_XY(-m_pSO7_Proto->g_machine.x._Move_Speed_Gear,-m_pSO7_Proto->g_machine.y._Move_Speed_Gear); + break; + } //====================================================================================== case IDC_BUTTON_SO7_MOVE_X_LEFT: { @@ -177,8 +197,12 @@ void CProcessButton::OnLButtonUp(UINT /*nFlags*/, CPoint/* point*/) case IDC_BUTTON_SO7_MOVE_X_RIGHT: case IDC_BUTTON_SO7_MOVE_Y_FRONT: case IDC_BUTTON_SO7_MOVE_Y_BACK: - case IDC_BUTTON_SO7_MOVE_Z_UP: + case IDC_BUTTON_SO7_MOVE_Z_UP: case IDC_BUTTON_SO7_MOVE_Z_DOWN: + case IDC_BUTTON_SO7_MOVE_XR_YF: + case IDC_BUTTON_SO7_MOVE_XR_YB: + case IDC_BUTTON_SO7_MOVE_XL_YF: + case IDC_BUTTON_SO7_MOVE_XL_YB: { m_pSO7_Proto->_send_cmd_SO7_CMD_STOP_MOVE_XYZ(); break; diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_Automatic_Zoom.cpp b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_Automatic_Zoom.cpp index d462237..dadbf2b 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_Automatic_Zoom.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_Automatic_Zoom.cpp @@ -45,6 +45,8 @@ void CSO7_Automatic_Zoom::DoDataExchange(CDataExchange* pDX) DDX_Control(pDX, IDC_COMBO_REPETEST_FROM, m_cmbRepeTestFrom); DDX_Control(pDX, IDC_COMBO_REPETEST_TO, m_cmbRepeTestTo); DDX_Control(pDX, IDC_EDIT_ZOOM_LOG, m_edit_Log); + DDX_Control(pDX, IDC_EDIT_ZOOM_TIME, m_edit_Time); + DDX_Control(pDX, IDC_BUTTON_MOVEV_IN, m_Button_MoveV_Zoom_In); DDX_Control(pDX, IDC_BUTTON_MOVEV_OUT, m_Button_MoveV_Zoom_Out); @@ -270,6 +272,7 @@ void CSO7_Automatic_Zoom::OnBnClickedButtonRepetestBegin() bBeginFlag=false; bRepeTestDone=true; ((CButton*)GetDlgItem(IDC_BUTTON_REPETEST_BEGIN))->SetWindowTextW(_T("Begin")); + SetTimer(1,200,NULL); } else { @@ -289,7 +292,7 @@ void CSO7_Automatic_Zoom::OnBnClickedButtonRepetestBegin() m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_TO_POS_ZM(); bRepeTestDone=false; ((CButton*)GetDlgItem(IDC_BUTTON_REPETEST_BEGIN))->SetWindowTextW(_T("Stop")); - SetTimer(1,200,NULL); + //SetTimer(1,200,NULL); SetTimer(2,100,NULL); } @@ -297,7 +300,6 @@ void CSO7_Automatic_Zoom::OnBnClickedButtonRepetestBegin() //==================================================== BOOL CSO7_Automatic_Zoom::RepeTest() { - KillTimer(1); UpdateData(TRUE); CString csTemp; m_pSO7_Proto->g_machine.zm._d_cur_pos_=GetZoomCurPos(); @@ -398,8 +400,9 @@ BOOL CSO7_Automatic_Zoom::RepeTest() OutputWithScroll(m_OutMessage,m_edit_Log); bBeginFlag=false; ((CButton*)GetDlgItem(IDC_BUTTON_REPETEST_BEGIN))->SetWindowTextW(_T("Begin")); + SetTimer(1,200,NULL); + } - SetTimer(1,200,NULL); return TRUE; } @@ -455,10 +458,34 @@ void CSO7_Automatic_Zoom::OnTimer(UINT_PTR nIDEvent) bRepeTestDone=true; m_OutMessage=_T(""); ((CButton*)GetDlgItem(IDC_BUTTON_BEGIN_REPE_TEST))->SetWindowTextW(_T("Begin")); + SetTimer(1,200,NULL); + } } m_pSO7_Proto->g_machine.InterruptFlag[0]=0; } + else + { + m_pSO7_Proto->_send_cmd_SO7_CMD_READ_ZOOM_MOTION_STATUS(); + if (m_pSO7_Proto->g_machine.s_status._bIsZMMotionFinished) + { + if (!bRepeTestDone) + { + if (bBeginFlag) + { + SetTimer(3,m_iZoom_Pause_Time,NULL); + } + else + { + bRepeTestDone=true; + m_OutMessage=_T(""); + ((CButton*)GetDlgItem(IDC_BUTTON_BEGIN_REPE_TEST))->SetWindowTextW(_T("Begin")); + SetTimer(1,200,NULL); + + } + } + } + } } } break; @@ -475,6 +502,7 @@ void CSO7_Automatic_Zoom::OnTimer(UINT_PTR nIDEvent) bRepeTestDone=true; m_OutMessage=_T(""); ((CButton*)GetDlgItem(IDC_BUTTON_REPETEST_BEGIN))->SetWindowTextW(_T("Begin")); + SetTimer(1,200,NULL); } KillTimer(3); break; @@ -500,6 +528,28 @@ void CSO7_Automatic_Zoom::OutputWithScroll(const CString &strText,CEdit &edtOutp edtOutput.SetSel(iCount, iCount); edtOutput.SetRedraw(TRUE); } + +//===================================================================================== +//Print message on edit control +void CSO7_Automatic_Zoom::OutputWithScroll_Auto(const CString &strNewText,CEdit &edtOutput) +{ + CString strOutput; + edtOutput.GetWindowText(strOutput); + strOutput += strNewText; + if ("\r\n" != strOutput.Right(2)) + { + strOutput += "\r\n"; + } + + int iCount = strOutput.GetLength(); + + edtOutput.SetRedraw(FALSE); + edtOutput.SetWindowText(strOutput); + int iLine = edtOutput.GetLineCount(); + edtOutput.LineScroll(iLine, 0); + edtOutput.SetSel(iCount, iCount); + edtOutput.SetRedraw(TRUE); +} //===================================================================================== void CSO7_Automatic_Zoom::OnBnClickedButtonSavelog() { USES_CONVERSION; @@ -729,6 +779,14 @@ double CSO7_Automatic_Zoom::GetZoomCurPos() { dZoomPos=dZoomPos/(iCnt2); } + CTime t = CTime::GetCurrentTime(); + int hh=t.GetHour(); + int mm=t.GetMinute(); + int s=t.GetSecond(); + CString csTime; + csTime.Format(_T("[%2d:%2d:%2d] %.4f°\r\n"),hh,mm,s,dZoomPos); + OutputWithScroll_Auto(csTime,m_edit_Time); + return dZoomPos; } diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_Automatic_Zoom.h b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_Automatic_Zoom.h index 487c849..280f161 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_Automatic_Zoom.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_Automatic_Zoom.h @@ -19,7 +19,8 @@ protected: DECLARE_MESSAGE_MAP() public: CStatusBarCtrl m_StatusBar; - CEdit m_edit_Log; + CEdit m_edit_Log; + CEdit m_edit_Time; int Port; int Baud; char Parity; @@ -54,11 +55,17 @@ public: INT iRetryCnt,iRetryCntTo,iRetryCntFrom; INT iFrom,iTo; BOOL m_bZMHoming; + + + + double ReadZoomAngle(); BOOL CalibrateEncoder(); double GetZoomCurPos(); BOOL RepeTest(); - void OutputWithScroll(const CString &strText,CEdit &edtOutput); + void OutputWithScroll(const CString &strText,CEdit &edtOutput); + void OutputWithScroll_Auto(const CString &strText,CEdit &edtOutput); + afx_msg void OnTimer(UINT_PTR nIDEvent); afx_msg void OnBnClickedCancel(); afx_msg void OnBnClickedButtonSendData(); diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_Move_Location.cpp b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_Move_Location.cpp index fca07f4..a995c44 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_Move_Location.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_Move_Location.cpp @@ -1,4 +1,4 @@ -// SO7_Move_Location.cpp : 实现文件 +7// SO7_Move_Location.cpp : 实现文件 // #include "stdafx.h" #include "afxdialogex.h" @@ -76,6 +76,7 @@ BEGIN_MESSAGE_MAP(CSO7_Move_Location, CDialog) ON_EN_KILLFOCUS(IDC_EDIT_MOTION_SPEEDZ, &CSO7_Move_Location::OnEnKillfocusEditMotionSpeedz) ON_BN_CLICKED(IDC_RADIO_SPEED_FAST, &CSO7_Move_Location::OnBnClickedRadioSpeedFast) ON_BN_CLICKED(IDC_RADIO_SPEED_SLOW, &CSO7_Move_Location::OnBnClickedRadioSpeedSlow) + ON_BN_CLICKED(IDC_RADIO_SPEED_SYSTEM, &CSO7_Move_Location::OnBnClickedRadioSpeedSystem) END_MESSAGE_MAP() @@ -92,12 +93,15 @@ BOOL CSO7_Move_Location::OnInitDialog() ((CButton *)GetDlgItem(IDC_RADIO_MM))->SetCheck(1); ((CButton *)GetDlgItem(IDC_RADIO_SCALE))->SetCheck(0); ((CButton *)GetDlgItem(IDC_RADIO_SPEED_FAST))->SetCheck(0); - ((CButton *)GetDlgItem(IDC_RADIO_SPEED_SLOW))->SetCheck(1); + ((CButton *)GetDlgItem(IDC_RADIO_SPEED_SLOW))->SetCheck(0); + ((CButton *)GetDlgItem(IDC_RADIO_SPEED_SYSTEM))->SetCheck(1); + (GetDlgItem(IDC_EDIT_MOTION_SPEEDX))->EnableWindow(FALSE); + (GetDlgItem(IDC_EDIT_MOTION_SPEEDY))->EnableWindow(FALSE); + (GetDlgItem(IDC_EDIT_MOTION_SPEEDZ))->EnableWindow(FALSE); + ((CButton *)GetDlgItem(IDC_RADIO_MOVE_RELATIVE))->SetCheck(1); ((CButton *)GetDlgItem(IDC_RADIO_MOVE_ABSOLUTE))->SetCheck(0); GetDlgItem(IDC_EDIT_REPETEST_ERRORRANGE)->EnableWindow(false); - - OnBnClickedRadioSpeedSlow(); if (((CButton *)GetDlgItem(IDC_RADIO_SCALE))->GetCheck()) {// scale @@ -602,8 +606,23 @@ void CSO7_Move_Location::OnEnKillfocusEditMotionSpeedz() m_pSO7_Proto->_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(2,0); } //===================================================================================== +void CSO7_Move_Location::OnBnClickedRadioSpeedSystem() +{ + (GetDlgItem(IDC_EDIT_MOTION_SPEEDX))->EnableWindow(FALSE); + (GetDlgItem(IDC_EDIT_MOTION_SPEEDY))->EnableWindow(FALSE); + (GetDlgItem(IDC_EDIT_MOTION_SPEEDZ))->EnableWindow(FALSE); + m_pSO7_Proto->_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(0,0); + Sleep(20); + m_pSO7_Proto->_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(1,0); + Sleep(20); + m_pSO7_Proto->_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(2,0); +} +//===================================================================================== void CSO7_Move_Location::OnBnClickedRadioSpeedFast() { + (GetDlgItem(IDC_EDIT_MOTION_SPEEDX))->EnableWindow(TRUE); + (GetDlgItem(IDC_EDIT_MOTION_SPEEDY))->EnableWindow(TRUE); + (GetDlgItem(IDC_EDIT_MOTION_SPEEDZ))->EnableWindow(TRUE); CString cStr(""); cStr.Format(_T("%.3f"),(m_pSO7_Proto->g_machine.s_machine_config.x_axis._MoveToSpeed[0])); GetDlgItem(IDC_EDIT_MOTION_SPEEDX)->SetWindowTextW(cStr); @@ -615,32 +634,23 @@ void CSO7_Move_Location::OnBnClickedRadioSpeedFast() double dSpeedX=m_pSO7_Proto->g_machine.s_machine_config.x_axis._MoveToSpeed[0]; double dSpeedY=m_pSO7_Proto->g_machine.s_machine_config.y_axis._MoveToSpeed[0]; double dSpeedZ=m_pSO7_Proto->g_machine.s_machine_config.z_axis._MoveToSpeed[0]; - - m_pSO7_Proto->g_machine.s_machine_config.x_axis._speed_base[0]=0; - m_pSO7_Proto->g_machine.s_machine_config.x_axis._speed_max[0]=0; - m_pSO7_Proto->g_machine.s_machine_config.x_axis._speed_start[0]=static_cast(dSpeedX*m_pSO7_Proto->g_machine.s_machine_config.x_axis._MotionSpeedScale); - m_pSO7_Proto->g_machine.s_machine_config.x_axis._speed_fresh[0]=10; - m_pSO7_Proto->g_machine.s_machine_config.x_axis._speed_slow_dis[0]=0.0; - m_pSO7_Proto->_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(0,0); + int iSpeed(0); + iSpeed=static_cast(dSpeedX*m_pSO7_Proto->g_machine.s_machine_config.x_axis._MotionSpeedScale); + m_pSO7_Proto->_send_cmd_SO7_CMD_SET_CONSTANT_SPEED(iSpeed,0,0); Sleep(20); - m_pSO7_Proto->g_machine.s_machine_config.y_axis._speed_base[0]=0; - m_pSO7_Proto->g_machine.s_machine_config.y_axis._speed_max[0]=0; - m_pSO7_Proto->g_machine.s_machine_config.y_axis._speed_start[0]=static_cast(dSpeedY*m_pSO7_Proto->g_machine.s_machine_config.y_axis._MotionSpeedScale); - m_pSO7_Proto->g_machine.s_machine_config.y_axis._speed_fresh[0]=10; - m_pSO7_Proto->g_machine.s_machine_config.y_axis._speed_slow_dis[0]=0.0; - m_pSO7_Proto->_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(1,0); + iSpeed=static_cast(dSpeedY*m_pSO7_Proto->g_machine.s_machine_config.y_axis._MotionSpeedScale); + m_pSO7_Proto->_send_cmd_SO7_CMD_SET_CONSTANT_SPEED(iSpeed,1,0); Sleep(20); - m_pSO7_Proto->g_machine.s_machine_config.z_axis._speed_base[0]=0; - m_pSO7_Proto->g_machine.s_machine_config.z_axis._speed_max[0]=0; - m_pSO7_Proto->g_machine.s_machine_config.z_axis._speed_start[0]=static_cast(dSpeedZ*m_pSO7_Proto->g_machine.s_machine_config.z_axis._MotionSpeedScale); - m_pSO7_Proto->g_machine.s_machine_config.z_axis._speed_fresh[0]=10; - m_pSO7_Proto->g_machine.s_machine_config.z_axis._speed_slow_dis[0]=0.0; - m_pSO7_Proto->_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(2,0); + iSpeed=static_cast(dSpeedZ*m_pSO7_Proto->g_machine.s_machine_config.z_axis._MotionSpeedScale); + m_pSO7_Proto->_send_cmd_SO7_CMD_SET_CONSTANT_SPEED(iSpeed,2,0); Sleep(20); } //===================================================================================== void CSO7_Move_Location::OnBnClickedRadioSpeedSlow() { + (GetDlgItem(IDC_EDIT_MOTION_SPEEDX))->EnableWindow(TRUE); + (GetDlgItem(IDC_EDIT_MOTION_SPEEDY))->EnableWindow(TRUE); + (GetDlgItem(IDC_EDIT_MOTION_SPEEDZ))->EnableWindow(TRUE); CString cStr(""); cStr.Format(_T("%.3f"),(m_pSO7_Proto->g_machine.s_machine_config.x_axis._MoveToSpeed[1])); GetDlgItem(IDC_EDIT_MOTION_SPEEDX)->SetWindowTextW(cStr); @@ -652,27 +662,15 @@ void CSO7_Move_Location::OnBnClickedRadioSpeedSlow() double dSpeedX=m_pSO7_Proto->g_machine.s_machine_config.x_axis._MoveToSpeed[1]; double dSpeedY=m_pSO7_Proto->g_machine.s_machine_config.y_axis._MoveToSpeed[1]; double dSpeedZ=m_pSO7_Proto->g_machine.s_machine_config.z_axis._MoveToSpeed[1]; - - m_pSO7_Proto->g_machine.s_machine_config.x_axis._speed_base[0]=0; - m_pSO7_Proto->g_machine.s_machine_config.x_axis._speed_max[0]=0; - m_pSO7_Proto->g_machine.s_machine_config.x_axis._speed_start[0]=static_cast(dSpeedX*m_pSO7_Proto->g_machine.s_machine_config.x_axis._MotionSpeedScale); - m_pSO7_Proto->g_machine.s_machine_config.x_axis._speed_fresh[0]=10; - m_pSO7_Proto->g_machine.s_machine_config.x_axis._speed_slow_dis[0]=0.0; - m_pSO7_Proto->_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(0,0); + int iSpeed(0); + iSpeed=static_cast(dSpeedX*m_pSO7_Proto->g_machine.s_machine_config.x_axis._MotionSpeedScale); + m_pSO7_Proto->_send_cmd_SO7_CMD_SET_CONSTANT_SPEED(iSpeed,0,0); Sleep(20); - m_pSO7_Proto->g_machine.s_machine_config.y_axis._speed_base[0]=0; - m_pSO7_Proto->g_machine.s_machine_config.y_axis._speed_max[0]=0; - m_pSO7_Proto->g_machine.s_machine_config.y_axis._speed_start[0]=static_cast(dSpeedY*m_pSO7_Proto->g_machine.s_machine_config.y_axis._MotionSpeedScale); - m_pSO7_Proto->g_machine.s_machine_config.y_axis._speed_fresh[0]=10; - m_pSO7_Proto->g_machine.s_machine_config.y_axis._speed_slow_dis[0]=0.0; - m_pSO7_Proto->_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(1,0); + iSpeed=static_cast(dSpeedY*m_pSO7_Proto->g_machine.s_machine_config.y_axis._MotionSpeedScale); + m_pSO7_Proto->_send_cmd_SO7_CMD_SET_CONSTANT_SPEED(iSpeed,1,0); Sleep(20); - m_pSO7_Proto->g_machine.s_machine_config.z_axis._speed_base[0]=0; - m_pSO7_Proto->g_machine.s_machine_config.z_axis._speed_max[0]=0; - m_pSO7_Proto->g_machine.s_machine_config.z_axis._speed_start[0]=static_cast(dSpeedZ*m_pSO7_Proto->g_machine.s_machine_config.z_axis._MotionSpeedScale); - m_pSO7_Proto->g_machine.s_machine_config.z_axis._speed_fresh[0]=10; - m_pSO7_Proto->g_machine.s_machine_config.z_axis._speed_slow_dis[0]=0.0; - m_pSO7_Proto->_send_cmd_SO7_CMD_SET_SPEED_PARAMETER(2,0); + iSpeed=static_cast(dSpeedZ*m_pSO7_Proto->g_machine.s_machine_config.z_axis._MotionSpeedScale); + m_pSO7_Proto->_send_cmd_SO7_CMD_SET_CONSTANT_SPEED(iSpeed,2,0); Sleep(20); } //========================================================================================= @@ -2385,8 +2383,9 @@ void CSO7_Move_Location::OnTimer(UINT_PTR nIDEvent) { if (m_pSO7_Proto->g_machine.s_status._machine_running) { - m_pSO7_Proto->_send_cmd_SO7_CMD_READ_INTERRUPT_MESSAGE(); - if (m_pSO7_Proto->g_machine.InterruptFlag[0] == CT_STOPXYZ) + BOOL IsFinished(FALSE); + m_pSO7_Proto->so7_motion_is_finished(EMSG_STOPXYZ_1_MOVETOXYZ,IsFinished); + if (IsFinished) { if (!bRepeTestDone) { @@ -2404,7 +2403,6 @@ void CSO7_Move_Location::OnTimer(UINT_PTR nIDEvent) ((CButton*)GetDlgItem(IDC_BUTTON_BEGIN_REPE_TEST))->SetWindowTextW(_T("Begin")); } } - m_pSO7_Proto->g_machine.InterruptFlag[0]=0; } } } @@ -2524,3 +2522,6 @@ void CSO7_Move_Location::OnBnClickedCheckSo7MotionOutputTime() } } + + + diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_Move_Location.h b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_Move_Location.h index 0f2bb6a..1bbab19 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_Move_Location.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_Move_Location.h @@ -97,4 +97,5 @@ public: afx_msg void OnEnKillfocusEditMotionSpeedz(); afx_msg void OnBnClickedRadioSpeedFast(); afx_msg void OnBnClickedRadioSpeedSlow(); + afx_msg void OnBnClickedRadioSpeedSystem(); }; diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_UtilDlg.cpp b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_UtilDlg.cpp index d4177cf..4a1786d 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_UtilDlg.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_UtilDlg.cpp @@ -80,6 +80,10 @@ void CSO7_UtilDlg::DoDataExchange(CDataExchange* pDX) DDX_Control(pDX, IDC_BUTTON_SO7_MOVE_Z_DOWN, m_Button_MoveZ_Down); DDX_Control(pDX, IDC_BUTTON_SO7_MOVE_ZOOM_IN, m_Button_MoveV_Zoom_In); DDX_Control(pDX, IDC_BUTTON_SO7_MOVE_ZOOM_OUT, m_Button_MoveV_Zoom_Out); + DDX_Control(pDX, IDC_BUTTON_SO7_MOVE_XR_YF, m_Button_MoveXRYF); + DDX_Control(pDX, IDC_BUTTON_SO7_MOVE_XR_YB, m_Button_MoveXRYB); + DDX_Control(pDX, IDC_BUTTON_SO7_MOVE_XL_YF, m_Button_MoveXLYF); + DDX_Control(pDX, IDC_BUTTON_SO7_MOVE_XL_YB, m_Button_MoveXLYB); DDX_Control(pDX, IDC_EDIT_STATUS, m_edMSG); @@ -195,6 +199,10 @@ BOOL CSO7_UtilDlg::OnInitDialog() GetDlgItem(IDC_BUTTON_SO7_MOVE_X_RIGHT)->EnableWindow(false); GetDlgItem(IDC_BUTTON_SO7_MOVE_Y_BACK)->EnableWindow(false); GetDlgItem(IDC_BUTTON_SO7_MOVE_Y_FRONT)->EnableWindow(false); + GetDlgItem(IDC_BUTTON_SO7_MOVE_XR_YF)->EnableWindow(false); + GetDlgItem(IDC_BUTTON_SO7_MOVE_XR_YB)->EnableWindow(false); + GetDlgItem(IDC_BUTTON_SO7_MOVE_XL_YF)->EnableWindow(false); + GetDlgItem(IDC_BUTTON_SO7_MOVE_XL_YB)->EnableWindow(false); GetDlgItem(IDC_BUTTON_SO7_RESET_XYZ)->EnableWindow(false); GetDlgItem(IDC_BUTTON_RESET_V)->EnableWindow(false); GetDlgItem(IDC_BUTTON_RESET_WORKTABLE)->EnableWindow(false); @@ -347,7 +355,16 @@ void CSO7_UtilDlg::OnBnClickedButtonStartSo7machine() OnBnClickedButtonInitSo7usb(); //m_pSO7_Proto->so7_motion_startup(0.5, 0.5, 0.5); m_pSO7_Proto->_start_machine(); - + m_pSO7_Proto->_send_cmd_SO7_CMD_GET_RESET_FLAG(); + if(m_pSO7_Proto->g_machine.IsSupportReadInterrputMsg) + { + m_pSO7_Proto->_send_cmd_SO7_CMD_READ_FIRMWARE_VERSION_INFO(); + CStringA csTmp(""); + csTmp.Format(("Firmware Version:[%s]"),m_pSO7_Proto->g_machine.FirmwareInfo); + m_OutMessage=csTmp; + OutputWithScroll(m_OutMessage,m_edMSG); + m_pSO7_Proto->_send_cmd_SO7_CMD_SET_GET_INTERRUPT_MSG_METHOD(E_GET_INTERRUPT_MSG_INQUIRY); + } ((CButton*)GetDlgItem(IDC_BUTTON_PROBE_ONOFF))->SetWindowTextW(_T("当前探头:激光")); ((CButton*)GetDlgItem(IDC_BUTTON_FIXTURE_ONOFF))->SetWindowTextW(_T("当前状态:夹具开")); ((CButton*)GetDlgItem(IDC_BUTTON_FIXTURE_UPDOWN))->SetWindowTextW(_T("当前状态:夹具上")); @@ -379,6 +396,10 @@ void CSO7_UtilDlg::OnBnClickedButtonStartSo7machine() GetDlgItem(IDC_BUTTON_SO7_MOVE_X_RIGHT)->EnableWindow(true); GetDlgItem(IDC_BUTTON_SO7_MOVE_Y_BACK)->EnableWindow(true); GetDlgItem(IDC_BUTTON_SO7_MOVE_Y_FRONT)->EnableWindow(true); + GetDlgItem(IDC_BUTTON_SO7_MOVE_XR_YF)->EnableWindow(true); + GetDlgItem(IDC_BUTTON_SO7_MOVE_XR_YB)->EnableWindow(true); + GetDlgItem(IDC_BUTTON_SO7_MOVE_XL_YF)->EnableWindow(true); + GetDlgItem(IDC_BUTTON_SO7_MOVE_XL_YB)->EnableWindow(true); GetDlgItem(IDC_BUTTON_SO7_RESET_XYZ)->EnableWindow(true); GetDlgItem(IDC_BUTTON_RESET_V)->EnableWindow(true); GetDlgItem(IDC_BUTTON_RESET_WORKTABLE)->EnableWindow(true); @@ -448,6 +469,10 @@ void CSO7_UtilDlg::OnBnClickedButtonStopSo7machine() GetDlgItem(IDC_BUTTON_SO7_MOVE_X_RIGHT)->EnableWindow(false); GetDlgItem(IDC_BUTTON_SO7_MOVE_Y_BACK)->EnableWindow(false); GetDlgItem(IDC_BUTTON_SO7_MOVE_Y_FRONT)->EnableWindow(false); + GetDlgItem(IDC_BUTTON_SO7_MOVE_XR_YF)->EnableWindow(false); + GetDlgItem(IDC_BUTTON_SO7_MOVE_XR_YB)->EnableWindow(false); + GetDlgItem(IDC_BUTTON_SO7_MOVE_XL_YF)->EnableWindow(false); + GetDlgItem(IDC_BUTTON_SO7_MOVE_XL_YB)->EnableWindow(false); GetDlgItem(IDC_BUTTON_SO7_RESET_XYZ)->EnableWindow(false); GetDlgItem(IDC_BUTTON_RESET_V)->EnableWindow(false); GetDlgItem(IDC_BUTTON_RESET_WORKTABLE)->EnableWindow(false); diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_UtilDlg.h b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_UtilDlg.h index f50c62a..79d20ef 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_UtilDlg.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_UtilDlg.h @@ -51,6 +51,10 @@ public: CProcessButton m_Button_MoveZ_Down; CProcessButton m_Button_MoveV_Zoom_In; CProcessButton m_Button_MoveV_Zoom_Out; + CProcessButton m_Button_MoveXRYF; + CProcessButton m_Button_MoveXLYF; + CProcessButton m_Button_MoveXRYB; + CProcessButton m_Button_MoveXLYB; char m_ReadIOStatusAddr; BOOL m_BeginReadIO; BOOL m_TestZSignalNow; diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/resource.h b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/resource.h index 46af8f2..af39552 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/resource.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/resource.h @@ -151,6 +151,8 @@ #define IDC_RADIO_FAST 1093 #define IDC_RADIO_SPEED_FAST 1094 #define IDC_EDIT_DECEL_X 1095 +#define IDC_RADIO_SPEED_FAST2 1095 +#define IDC_RADIO_SPEED_SYSTEM 1095 #define IDC_EDIT_DECEL_Y 1096 #define IDC_EDIT_DECEL_Z 1097 #define IDC_BUTTON_ALL_ON 1101 @@ -291,13 +293,17 @@ #define IDC_BUTTON_SO7_MOVE_Z_DOWN 1232 #define IDC_EDIT_LASER_LK_H_VALUE2 1232 #define IDC_BUTTON_READ_PROBE 1233 +#define IDC_BUTTON_SO7_MOVE_XR_YF 1234 +#define IDC_BUTTON_SO7_MOVE_XR_YB 1235 #define IDC_BUTTON_SO7_MOVE_ZOOM_IN 1236 #define IDC_BUTTON_SO7_MOVE_ZOOM_OUT 1237 #define IDC_BUTTON_MOVE_TO_ZOOM 1238 +#define IDC_BUTTON_SO7_MOVE_XL_YF 1238 #define IDC_BUTTON_MOVE_TO_XYZ_LASER 1239 #define IDC_BUTTON_SO7_READ_AXIS_V 1239 #define IDC_BUTTON_MOVE_TO_XYZ_JM 1240 #define IDC_BUTTON_SO7_READ_ADC 1240 +#define IDC_BUTTON_SO7_MOVE_XL_YB 1240 #define IDC_BUTTON_MOVE_TO_XYZV 1241 #define IDC_BUTTON_SO7_GET_RESET_FLAG 1241 #define IDC_EDIT_RING_LIGHT 1242 @@ -849,6 +855,7 @@ #define IDC_BUTTON_KEYENCE_LASER_GET_DATA 1801 #define IDC_COMBO1 1802 #define IDC_COMBO_SO7_HOMEMODE 1802 +#define IDC_EDIT_ZOOM_TIME 1803 // Next default values for new objects // @@ -856,7 +863,7 @@ #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 188 #define _APS_NEXT_COMMAND_VALUE 32771 -#define _APS_NEXT_CONTROL_VALUE 1803 +#define _APS_NEXT_CONTROL_VALUE 1804 #define _APS_NEXT_SYMED_VALUE 104 #endif #endif diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil_VS2010.suo b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil_VS2010.suo index 9f5aea1552079e8c58e109962daf6bd46d32819c..41c84269393057e0057b6832876fd421e531a7b1 100644 GIT binary patch delta 5034 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 l^DE4A3|lWWJcLFHf~G`>I$9dyENkkv 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