diff --git a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/CMD_H.h b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/CMD_H.h index 82ca187..c66ee15 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/CMD_H.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/CMD_H.h @@ -360,6 +360,14 @@ enum PRO_DATA CT_SET_TRIG_SAMPLE_CNT, CT_GET_TRIG_SAMPLE_CNT, + + CT_READ_X_CONTROL_MODE, + CT_WRITE_X_CONTROL_MODE, + CT_READ_Y_CONTROL_MODE, + CT_WRITE_Y_CONTROL_MODE, + CT_READ_Z_CONTROL_MODE, + CT_WRITE_Z_CONTROL_MODE, + CT_DATA_TOTAL=255 }; enum EHOME_MODE diff --git a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp index 7825c36..12d465b 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp @@ -254,7 +254,11 @@ void CSO7_Proto::_process_rcv_transfer_data(int iEP) case CT_WRITE_TRIG_PULSE_PARA: _process_SO7_CMD_WRITE_TRIG_PULSE_PARA(); break; - + case CT_READ_X_CONTROL_MODE: + case CT_READ_Y_CONTROL_MODE: + case CT_READ_Z_CONTROL_MODE: + _process_SO7_CMD_GET_CONTROL_MODE(); + break; 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]); @@ -6349,6 +6353,69 @@ SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_GET_MOTION_CNTS(char _Speedgear) return SSI_STATUS_MOTION_NORMAL; } //============================================================== +SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_SET_CONTROL_MODE(char axis_type,char ControlMode) +{ + WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE); + memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE); + + *(ep_buff[EP_02_CMD_IDX]._buffer) = CT_DATA; + char cCMD(0); + if(axis_type==E_AXIS_X) + { + cCMD=CT_WRITE_X_CONTROL_MODE; + } + else if(axis_type==E_AXIS_Y) + { + cCMD=CT_WRITE_Y_CONTROL_MODE; + } + else + { + cCMD=CT_WRITE_Z_CONTROL_MODE; + } + *(ep_buff[EP_02_CMD_IDX]._buffer+1) = cCMD; + *(ep_buff[EP_02_CMD_IDX]._buffer+2)= ControlMode; + + ep_buff[EP_02_CMD_IDX]._size = 0x05; + ep_buff[EP_81_DATA_IDX]._size = 0x00; + + g_hEP02_Thread_State=THREAD_RUNNING_STATE2; + _do_single_threaded_usb_comm(EP_02_CMD_IDX); + ReleaseMutex(g_hEP02_Serial_Mutex); + return SSI_STATUS_MOTION_NORMAL; +} +//============================================================== +SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_GET_CONTROL_MODE(char axis_type) +{ + WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE); + memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE); + + *(ep_buff[EP_02_CMD_IDX]._buffer) = CT_DATA; + char cCMD(0); + if(axis_type==E_AXIS_X) + { + cCMD=CT_READ_X_CONTROL_MODE; + } + else if(axis_type==E_AXIS_Y) + { + cCMD=CT_READ_Y_CONTROL_MODE; + } + else + { + cCMD=CT_READ_Z_CONTROL_MODE; + } + + *(ep_buff[EP_02_CMD_IDX]._buffer+1) = cCMD; + + ep_buff[EP_02_CMD_IDX]._size = 0x02; + ep_buff[EP_82_DATA_IDX]._size = 0x01; + + g_hEP02_Thread_State=THREAD_RUNNING_STATE1; + g_hEP8x_Thread_State=THREAD_RUNNING_STATE2; + _do_single_threaded_usb_comm(EP_02_CMD_IDX); + ReleaseMutex(g_hEP02_Serial_Mutex); + return SSI_STATUS_MOTION_NORMAL; +} +//============================================================== SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_MOVE_X() { @@ -6764,3 +6831,9 @@ SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_GET_MOTION_CNTS() g_machine.Arm_MotionStopCnts[index]=*(ep_buff[EP_82_DATA_IDX]._buffer+2); return SSI_STATUS_MOTION_NORMAL; } +//============================================================== +SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_GET_CONTROL_MODE() +{ + g_machine.FPGAData = *(ep_buff[EP_82_DATA_IDX]._buffer); + return SSI_STATUS_MOTION_NORMAL; +} \ 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 8213029..e981b7b 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.h @@ -574,7 +574,8 @@ public: SSI_STATUS_MOTION _send_cmd_SO7_CMD_IO_PURPOSE(BOOL _bEnTrigIO); SSI_STATUS_MOTION _send_cmd_SO7_CMD_SET_MOTION_CNTS(char _Speedgear,char _StartCnts,char _StopCnts); SSI_STATUS_MOTION _send_cmd_SO7_CMD_GET_MOTION_CNTS(char _Speedgear=0); - + SSI_STATUS_MOTION _send_cmd_SO7_CMD_SET_CONTROL_MODE(char axis_type,char ControlMode); + SSI_STATUS_MOTION _send_cmd_SO7_CMD_GET_CONTROL_MODE(char axis_type); static SSI_STATUS_MOTION _process_SO7_CMD_MOVE_X(); static SSI_STATUS_MOTION _process_SO7_CMD_MOVE_Y(); @@ -616,7 +617,7 @@ public: static SSI_STATUS_MOTION _process_SO7_CMD_READ_TRIG_PULSE_PARA(); static SSI_STATUS_MOTION _process_SO7_CMD_WRITE_TRIG_PULSE_PARA(); static SSI_STATUS_MOTION _process_SO7_CMD_GET_MOTION_CNTS(); - + static SSI_STATUS_MOTION _process_SO7_CMD_GET_CONTROL_MODE(); }; #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 a8ca501..9b32ff4 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/UtilityDebug.Log +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/UtilityDebug.Log @@ -4750,3 +4750,8 @@ Usb Port Initialized. Usb Port Initialized. Usb Port Initialized. Usb Port Initialized. +Usb Port Initialized. +Usb Port Initialized. +Usb Port Initialized. +Usb Port Initialized. +Usb Port Initialized. 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 da5e420..8375494 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 @@ -11,41 +11,41 @@ MOVETOSPEED_FAST_Z=0.00000000 MOVETOSPEED_SLOW_Z=0.00000000 MOVETOSPEED_SCALE_Z=1.00000000 ; -SPEED_BASE_X1=50 +SPEED_BASE_X1=28 SPEED_MAX_X1=30 SPEED_START_X1=20 -SPEED_FRESH_X1=7 -SPEED_SLOW_X1=3.500 +SPEED_FRESH_X1=8 +SPEED_SLOW_X1=3.000 ; SPEED_BASE_X2=16 SPEED_MAX_X2=10 SPEED_START_X2=12 SPEED_FRESH_X2=10 -SPEED_SLOW_X2=0.100 +SPEED_SLOW_X2=2.000 ; SPEED_BASE_X3=2 SPEED_MAX_X3=0 SPEED_START_X3=0 -SPEED_FRESH_X3=10 +SPEED_FRESH_X3=100 SPEED_SLOW_X3=0.001 ; SPEED_BASE_X4=2 SPEED_MAX_X4=0 SPEED_START_X4=5 -SPEED_FRESH_X4=10 +SPEED_FRESH_X4=100 SPEED_SLOW_X4=0.001 ; SPEED_BASE_X5=2 SPEED_MAX_X5=0 SPEED_START_X5=50 -SPEED_FRESH_X5=10 +SPEED_FRESH_X5=100 SPEED_SLOW_X5=0.000 ; -SPEED_BASE_Y1=60 +SPEED_BASE_Y1=20 SPEED_MAX_Y1=10 SPEED_START_Y1=20 SPEED_FRESH_Y1=8 -SPEED_SLOW_Y1=3.000 +SPEED_SLOW_Y1=2.000 ; SPEED_BASE_Y2=16 SPEED_MAX_Y2=10 @@ -56,20 +56,20 @@ SPEED_SLOW_Y2=1.000 SPEED_BASE_Y3=2 SPEED_MAX_Y3=0 SPEED_START_Y3=0 -SPEED_FRESH_Y3=10 +SPEED_FRESH_Y3=100 SPEED_SLOW_Y3=0.001 ; SPEED_BASE_Y4=2 SPEED_MAX_Y4=0 SPEED_START_Y4=10 -SPEED_FRESH_Y4=10 +SPEED_FRESH_Y4=100 SPEED_SLOW_Y4=0.001 ; -SPEED_BASE_Y5=60 -SPEED_MAX_Y5=10 -SPEED_START_Y5=20 -SPEED_FRESH_Y5=8 -SPEED_SLOW_Y5=3.000 +SPEED_BASE_Y5=2 +SPEED_MAX_Y5=0 +SPEED_START_Y5=50 +SPEED_FRESH_Y5=100 +SPEED_SLOW_Y5=0.000 ; SPEED_BASE_Z1=20 SPEED_MAX_Z1=100 @@ -86,28 +86,28 @@ SPEED_SLOW_Z2=1.500 SPEED_BASE_Z3=3 SPEED_MAX_Z3=5 SPEED_START_Z3=5 -SPEED_FRESH_Z3=10 +SPEED_FRESH_Z3=100 SPEED_SLOW_Z3=0.001 ; SPEED_BASE_Z4=2 SPEED_MAX_Z4=0 SPEED_START_Z4=18 -SPEED_FRESH_Z4=10 +SPEED_FRESH_Z4=100 SPEED_SLOW_Z4=0.001 ; SPEED_BASE_Z5=2 SPEED_MAX_Z5=6 SPEED_START_Z5=133 -SPEED_FRESH_Z5=10 +SPEED_FRESH_Z5=100 SPEED_SLOW_Z5=0.000 ; X_MOTOR_PRECISION=0.008 -Y_MOTOR_PRECISION=0.004 +Y_MOTOR_PRECISION=0.009 Z_MOTOR_PRECISION=0.004 ; -X_MOTOR_WHEELBASE=3.047 -Y_MOTOR_WHEELBASE=2.971 -Z_MOTOR_WHEELBASE=1.500 +X_MOTOR_WHEELBASE=1.875 +Y_MOTOR_WHEELBASE=1.875 +Z_MOTOR_WHEELBASE=1.000 ; MOTOR_PULSE_NUM=10000 ; diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_Send_Parameter.cpp b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_Send_Parameter.cpp index 99a66d5..be3a821 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_Send_Parameter.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/SO7_Send_Parameter.cpp @@ -218,7 +218,7 @@ BOOL CSO7_Send_Parameter::OnInitDialog() ((CButton *)GetDlgItem(IDC_RADIO_CANVAS_SPEED_TIME))->SetCheck(true); if (m_pSO7_Proto->g_machine.FirmwareVer>=FirmwareVer_6_X) { - ((CStatic *)GetDlgItem(IDC_STATIC_SPEED_PARA1))->SetWindowTextW(_T("加速度(0-255)")); + ((CStatic *)GetDlgItem(IDC_STATIC_SPEED_PARA1))->SetWindowTextW(_T("加减速度(0-255)")); ((CStatic *)GetDlgItem(IDC_STATIC_SPEED_PARA2))->SetWindowTextW(_T("缓冲距离(0-255)")); ((CStatic *)GetDlgItem(IDC_STATIC_SPEED_PARA3))->SetWindowTextW(_T("最低速率(0-255)")); ((CStatic *)GetDlgItem(IDC_STATIC_SPEED_PARA4))->SetWindowTextW(_T("刷新周期(0-255)")); 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 cd69592..6d4d0a1 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 @@ -191,7 +191,7 @@ BOOL CSO7_UtilDlg::OnInitDialog() ((CButton *)GetDlgItem(IDC_RADIO_READ_OUTPUT_PORT2))->SetCheck(false); m_ReadIOStatusAddr=ESO7_CONTROLLER_LIMIT_SWITCH_ADDR; UpdateIOAddrCaption(); - + CString csTmp=_T(""); ((CComboBox *)GetDlgItem(IDC_COMBO_OUTPORT_NUMBER))->ResetContent(); int iComboxIndex(0); @@ -210,38 +210,42 @@ BOOL CSO7_UtilDlg::OnInitDialog() ((CComboBox *)GetDlgItem(IDC_COMBO_OUTPORT_NUMBER))->SetCurSel(0); ((CComboBox *)GetDlgItem(IDC_COMBO_RWDATA_ADDR))->ResetContent(); - for(int i=0;i<16;i++) + int nIndex=0; + for( nIndex=0;nIndex<16;nIndex++) { - if (i==9) + if (nIndex==9) { csTmp=_T("Flags"); } - else if (i==10) + else if (nIndex==10) { csTmp=_T("TrigLSB"); } - else if (i==11) + else if (nIndex==11) { csTmp=_T("AccErr"); } - else if (i==12) + else if (nIndex==12) { csTmp=_T("TrigMSBI"); } - else if (i==13) + else if (nIndex==13) { csTmp=_T("TrigMSBII"); } - else if (i==14) + else if (nIndex==14) { csTmp=_T("TrigHoldTime"); } else { - csTmp.Format(_T("%d"),i); + csTmp.Format(_T("%d"),nIndex); } - ((CComboBox *)GetDlgItem(IDC_COMBO_RWDATA_ADDR))->InsertString(i,csTmp); + ((CComboBox *)GetDlgItem(IDC_COMBO_RWDATA_ADDR))->InsertString(nIndex,csTmp); } + csTmp=_T("ControlMode"); + ((CComboBox *)GetDlgItem(IDC_COMBO_RWDATA_ADDR))->InsertString(nIndex,csTmp); + ((CComboBox *)GetDlgItem(IDC_COMBO_RWDATA_ADDR))->SetCurSel(10); GetDlgItem(IDC_EDIT_RWDATA_DATA)->SetWindowTextW(_T("0")); @@ -347,7 +351,7 @@ void CSO7_UtilDlg::UpdateCtrlsStatus(bool _bEnable) GetDlgItem(IDC_CHECK_CONTINUOUS_READ_IO_STATUS)->EnableWindow(_bEnable); GetDlgItem(IDC_BUTTON_SO7_TEST_Z_SIGNAL)->EnableWindow(_bEnable); GetDlgItem(IDC_BUTTON_S07_SET_IO_PURPOSE)->EnableWindow(_bEnable); - + GetDlgItem(IDC_EDIT_SET_VER_NO)->EnableWindow(_bEnable); GetDlgItem(IDC_BUTTON_SO7_CNC_PROGRAM)->EnableWindow(_bEnable); GetDlgItem(IDC_BUTTON_SO7_SENDDATATOFPGA)->EnableWindow(_bEnable); @@ -360,14 +364,14 @@ void CSO7_UtilDlg::UpdateCtrlsStatus(bool _bEnable) GetDlgItem(IDC_CHECK_SO7_RING_LIGHT_SEG_ON2)->EnableWindow(_bEnable); GetDlgItem(IDC_CHECK_SO7_COAXIAL_LIGHT_ON)->EnableWindow(_bEnable); GetDlgItem(IDC_CHECK_SO7_SPARE_LIGHT_ON)->EnableWindow(_bEnable); - + GetDlgItem(IDC_BUTTON_SO7_EXTERNAL_TRIG)->EnableWindow(_bEnable); GetDlgItem(IDC_EDIT_SET_SEQ_NO)->EnableWindow(_bEnable); GetDlgItem(IDC_BUTTON_SO7_GET_SEQ_NUMBER)->EnableWindow(_bEnable); GetDlgItem(IDC_BUTTON_SO7_SET_SEQ_NUMBER)->EnableWindow(_bEnable); GetDlgItem(IDC_BUTTON_SO7_SET_VER_NUMBER)->EnableWindow(_bEnable); GetDlgItem(IDC_BUTTON_SET_SCALE_COEFFICIENT)->EnableWindow(_bEnable); - + } //===================================================================== @@ -421,7 +425,7 @@ void CSO7_UtilDlg::OnBnClickedButtonStartSo7machine() OnBnClickedButtonInitSo7usb(); if(XBoxPlayer->IsConnected()) { - XBoxPlayer->XBoxControllerInit(); + XBoxPlayer->XBoxControllerInit(); m_OutMessage=_T("XBoxController has connected."); OutputWithScroll(m_OutMessage,m_edMSG); } @@ -437,7 +441,7 @@ void CSO7_UtilDlg::OnBnClickedButtonStartSo7machine() if(m_pSO7_Proto->g_machine.IsSupportReadInterrputMsg) { m_pSO7_Proto->_send_cmd_SO7_CMD_READ_FIRMWARE_VERSION_INFO(); - + m_pSO7_Proto->_send_cmd_SO7_CMD_READ_DATA_FROM_FPGA(E_AXIS_V,9); char cData[2]={0}; cData[0]=(m_pSO7_Proto->g_machine.FPGAData>>4)&0x0f; @@ -1197,7 +1201,15 @@ void CSO7_UtilDlg::OnBnClickedButtonSo7Senddatatofpga() GetDlgItem(IDC_EDIT_RWDATA_DATA)->GetWindowText(str); const char* cTempValue=T2A(str); char cTmpData= static_cast(atoi(cTempValue)); - m_pSO7_Proto->_send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(m_RWDataAxis,m_RWDataAddr,cTmpData); + if(m_RWDataAddr==16) + { + m_pSO7_Proto->_send_cmd_SO7_CMD_SET_CONTROL_MODE(m_RWDataAxis,cTmpData); + m_pSO7_Proto->g_machine.FPGAData=1; + } + else + { + m_pSO7_Proto->_send_cmd_SO7_CMD_WRITE_DATA_TO_FPGA(m_RWDataAxis,m_RWDataAddr,cTmpData); + } if (m_pSO7_Proto->g_machine.FPGAData>0) { m_OutMessage=_T("Write data successful."); @@ -1213,7 +1225,14 @@ void CSO7_UtilDlg::OnBnClickedButtonSo7Senddatatofpga() //================================================================================================ void CSO7_UtilDlg::OnBnClickedButtonSo7Readdatafromfpga() { - m_pSO7_Proto->_send_cmd_SO7_CMD_READ_DATA_FROM_FPGA(m_RWDataAxis,m_RWDataAddr); + if(m_RWDataAddr==16) + { + m_pSO7_Proto->_send_cmd_SO7_CMD_GET_CONTROL_MODE(m_RWDataAxis); + } + else + { + m_pSO7_Proto->_send_cmd_SO7_CMD_READ_DATA_FROM_FPGA(m_RWDataAxis,m_RWDataAddr); + } m_OutMessage.Format(_T("[Read]Data=%d ."),(BYTE)m_pSO7_Proto->g_machine.FPGAData); OutputWithScroll(m_OutMessage,m_edMSG); } 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 2685430..22f31e3 100644 Binary files a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil_VS2010.suo and b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil_VS2010.suo differ