diff --git a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp index fd1ca0f..d6f6a5e 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp @@ -39,11 +39,11 @@ unsigned __stdcall CSO7_Proto::g_EP02_Thread(LPVOID pThis) CSO7_Proto* _This = (CSO7_Proto*)pThis; for (;;) { - TRACE0("g_hEP02_Thread in loop set.\n"); + //TRACE0("g_hEP02_Thread in loop set.\n"); if (g_hEP02_Thread_State == THREAD_EXIT) ExitThread(0); WaitForSingleObject(ep_buff[EP_02_CMD_IDX]._event,INFINITE); - TRACE0("g_hEP02_Thread obtained event.\n"); + //TRACE0("g_hEP02_Thread obtained event.\n"); switch (g_hEP02_Thread_State) { case THREAD_EXIT: @@ -54,16 +54,16 @@ unsigned __stdcall CSO7_Proto::g_EP02_Thread(LPVOID pThis) break; case THREAD_RUNNING_STATE1: { - TRACE0("g_hEP02_Thread calling _send_usb_cmd. EP_S07_02; \n"); + //TRACE0("g_hEP02_Thread calling _send_usb_cmd. EP_S07_02; \n"); _This->_send_usb_cmd(EP_02_CMD_IDX); - TRACE0("g_hEP02_Thread return _send_usb_cmd. EP_S07_02; \n"); + //TRACE0("g_hEP02_Thread return _send_usb_cmd. EP_S07_02; \n"); break; } case THREAD_RUNNING_STATE2: { - TRACE0("g_hSerialUsbThread processing _write_usb_data_only();\n"); + //TRACE0("g_hSerialUsbThread processing _write_usb_data_only();\n"); _This->_write_usb_data_only(EP_02_CMD_IDX); - TRACE0("g_hSerialUsbThread return from _write_usb_data_only();\n"); + //TRACE0("g_hSerialUsbThread return from _write_usb_data_only();\n"); break; } default: @@ -82,11 +82,11 @@ unsigned __stdcall CSO7_Proto::g_EP8x_Thread(LPVOID pThis) CSO7_Proto* _This = (CSO7_Proto*)pThis; for (;;) { - TRACE0("g_hEP8x_Thread_State in loop set.\n"); + //TRACE0("g_hEP8x_Thread_State in loop set.\n"); if (g_hEP8x_Thread_State == THREAD_EXIT) ExitThread(0); WaitForSingleObject(ep_buff[EP_82_DATA_IDX]._event, INFINITE); - TRACE0("g_hEP8x_Thread_State obtained event.\n"); + //TRACE0("g_hEP8x_Thread_State obtained event.\n"); switch (g_hEP8x_Thread_State) { case THREAD_EXIT: @@ -288,8 +288,7 @@ void CSO7_Proto::_process_rcv_transfer_data(int iEP) break; }; } - - TRACE0("_process_rcv_transfer_data() : Update EP_82_DATA_IDX status.\r\n"); + //TRACE0("_process_rcv_transfer_data() : Update EP_82_DATA_IDX status.\r\n"); break; case EP_02_CMD_IDX : TRACE0("_process_rcv_transfer_data() : Update EP_02_CMD_IDX.\r\n"); @@ -2833,14 +2832,14 @@ SSI_STATUS_MOTION CSO7_Proto::Exit_SO7Usb() //****************************************************************************** SSI_STATUS_MOTION CSO7_Proto::_do_single_threaded_usb_comm(int iEP_Base) { - TRACE1("=====_do_single_threaded_usb_comm(iEP) g_hEP01_Thread_Event. %x\n", iEP_Base); + //TRACE1("=====_do_single_threaded_usb_comm(iEP) g_hEP01_Thread_Event. %x\n", iEP_Base); while ((ep_buff[iEP_Base]._hProtoPending == TRUE) || (ep_buff[iEP_Base+1]._hProtoPending == TRUE)) { ASSERT(0); Sleep(3); } ep_buff[iEP_Base]._hProtoPending = ep_buff[iEP_Base+1]._hProtoPending = TRUE; - TRACE1("=====_do_single_threaded_usb_comm(iEP_Base) SetEvent(g_hEP01_Thread_Event): %X \r\n", ep_buff[iEP_Base]._save_send_cmd); + //TRACE1("=====_do_single_threaded_usb_comm(iEP_Base) SetEvent(g_hEP01_Thread_Event): %X \r\n", ep_buff[iEP_Base]._save_send_cmd); if (iEP_Base == EP_01_CMD_IDX) SetEvent(ep_buff[EP_82_DATA_IDX]._event); else @@ -2849,7 +2848,7 @@ SSI_STATUS_MOTION CSO7_Proto::_do_single_threaded_usb_comm(int iEP_Base) { Sleep(3); } - TRACE1("=====_do_single_threaded_usb_comm(iEP) g_hProtoDoneEvents. %x\n", iEP_Base); + //TRACE1("=====_do_single_threaded_usb_comm(iEP) g_hProtoDoneEvents. %x\n", iEP_Base); return SSI_STATUS_MOTION_NORMAL; } @@ -2892,7 +2891,7 @@ SSI_STATUS_MOTION CSO7_Proto::_read_data_8x(int iEP_Base) } if (iEP_Base == EP_82_DATA_IDX) { - TRACE2("_read_data_81() iEP : %X - ep_buff[iEP]._size : %X \r\n", iEP_Base, ep_buff[iEP_Base]._size); + //TRACE2("_read_data_81() iEP : %X - ep_buff[iEP]._size : %X \r\n", iEP_Base, ep_buff[iEP_Base]._size); int _ret; _ret = usb_bulk_read(g_dev, ep_buff[iEP_Base]._ep, (char *)ep_buff[iEP_Base]._buffer,(int) ep_buff[iEP_Base]._size, 5000); if (_ret > 0) @@ -2910,7 +2909,7 @@ SSI_STATUS_MOTION CSO7_Proto::_read_data_8x(int iEP_Base) } else { - TRACE2("_read_data_81() iEP : %X - ep_buff[iEP]._size : %X \r\n", iEP_Base, ep_buff[iEP_Base]._size); + //TRACE2("_read_data_81() iEP : %X - ep_buff[iEP]._size : %X \r\n", iEP_Base, ep_buff[iEP_Base]._size); int _ret; _ret = usb_interrupt_read(g_dev, ep_buff[iEP_Base]._ep, (char *)ep_buff[iEP_Base]._buffer,(int) ep_buff[iEP_Base]._size, 20); if (_ret > 0) @@ -2945,7 +2944,7 @@ SSI_STATUS_MOTION CSO7_Proto::_send_usb_cmd(int iEP_Base) ep_buff[iEP_Base]._save_send_cmd0 = ep_buff[iEP_Base]._buffer[1]; ep_buff[iEP_Base]._save_send_cmd1 = ep_buff[iEP_Base]._buffer[2]; - TRACE3("_send_usb_cmd() iEP : %X - ep_buff[iEP]._save_send_cmd : %X ._buffer[0] : %X\r\n", iEP_Base, ep_buff[iEP_Base]._save_send_cmd, ep_buff[iEP_Base]._buffer[0]); + //TRACE3("_send_usb_cmd() iEP : %X - ep_buff[iEP]._save_send_cmd : %X ._buffer[0] : %X\r\n", iEP_Base, ep_buff[iEP_Base]._save_send_cmd, ep_buff[iEP_Base]._buffer[0]); _ret = usb_bulk_write(g_dev, ep_buff[iEP_Base]._ep, (char *)ep_buff[iEP_Base]._buffer,(int) ep_buff[iEP_Base]._size, 50); if (_ret < 0) @@ -2977,7 +2976,7 @@ SSI_STATUS_MOTION CSO7_Proto::_write_usb_data_only(int iEP_Base) ep_buff[iEP_Base]._save_send_cmd0 = ep_buff[iEP_Base]._buffer[1]; ep_buff[iEP_Base]._save_send_cmd1 = ep_buff[iEP_Base]._buffer[2]; - TRACE3("_send_usb_cmd() iEP : %X - ep_buff[iEP]._save_send_cmd : %X ._buffer[0] : %X\r\n", iEP_Base, ep_buff[iEP_Base]._save_send_cmd, ep_buff[iEP_Base]._buffer[0]); + //TRACE3("_send_usb_cmd() iEP : %X - ep_buff[iEP]._save_send_cmd : %X ._buffer[0] : %X\r\n", iEP_Base, ep_buff[iEP_Base]._save_send_cmd, ep_buff[iEP_Base]._buffer[0]); _ret = usb_bulk_write(g_dev, ep_buff[iEP_Base]._ep, (char *)ep_buff[iEP_Base]._buffer,(int) ep_buff[iEP_Base]._size, 50); if (_ret < 0) @@ -3464,6 +3463,8 @@ SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_MOVE_X(char SpeedGear) *(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_MOVEX; *(ep_buff[EP_02_CMD_IDX]._buffer+2) = SpeedGear; + TRACE1("[MOVE_X]:%d\n",SpeedGear); + ep_buff[EP_02_CMD_IDX]._size = 0x03; ep_buff[EP_81_DATA_IDX]._size = 0x03; @@ -3483,6 +3484,8 @@ SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_MOVE_Y(char SpeedGear) *(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_MOVEY; *(ep_buff[EP_02_CMD_IDX]._buffer+2) = SpeedGear; + TRACE1("[MOVE_Y]:%d\n",SpeedGear); + ep_buff[EP_02_CMD_IDX]._size = 0x03; ep_buff[EP_81_DATA_IDX]._size = 0x03; @@ -3502,6 +3505,8 @@ SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_MOVE_Z(char SpeedGear) *(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_MOVEZ; *(ep_buff[EP_02_CMD_IDX]._buffer+2) = SpeedGear; + TRACE1("[MOVE_Z]:%d\n",SpeedGear); + ep_buff[EP_02_CMD_IDX]._size = 0x03; ep_buff[EP_81_DATA_IDX]._size = 0x03; @@ -3539,6 +3544,8 @@ SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_STOP_MOVE_XYZ() *(ep_buff[EP_02_CMD_IDX]._buffer) = CT_MOTOR; *(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_STOPA; *(ep_buff[EP_02_CMD_IDX]._buffer+2)=0x00; + + TRACE("[STOP_XYZ]"); ep_buff[EP_02_CMD_IDX]._size = 0x04; ep_buff[EP_81_DATA_IDX]._size = 0x04; @@ -4687,7 +4694,7 @@ SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_MOVE_XY(char SpeedGearX,char Spe *(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); + TRACE2("[MOVE_XY]:X %d;Y %d.\n",SpeedGearX,SpeedGearY); ep_buff[EP_02_CMD_IDX]._size = 0x04; ep_buff[EP_81_DATA_IDX]._size = 0x45; 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 eef606f..17a91ef 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/UtilityDebug.Log +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/UtilityDebug.Log @@ -3882,3 +3882,83 @@ 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 +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 +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. +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 +Destruct Cso7_Proto. +Construct Cso7_Proto. +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 116d353..b4fcdf7 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,11 +11,11 @@ MOVETOSPEED_FAST_Z=0.00000000 MOVETOSPEED_SLOW_Z=0.00000000 MOVETOSPEED_SCALE_Z=1.00000000 ; -SPEED_BASE_X1=28 +SPEED_BASE_X1=20 SPEED_MAX_X1=20 SPEED_START_X1=20 SPEED_FRESH_X1=8 -SPEED_SLOW_X1=3.400 +SPEED_SLOW_X1=3.299 ; SPEED_BASE_X2=16 SPEED_MAX_X2=10 @@ -102,12 +102,12 @@ SPEED_FRESH_Z5=10 SPEED_SLOW_Z5=0.100 ; X_MOTOR_PRECISION=0.004 -Y_MOTOR_PRECISION=0.009 +Y_MOTOR_PRECISION=0.008 Z_MOTOR_PRECISION=0.004 ; -X_MOTOR_WHEELBASE=1.500 -Y_MOTOR_WHEELBASE=1.500 -Z_MOTOR_WHEELBASE=1.500 +X_MOTOR_WHEELBASE=1.200 +Y_MOTOR_WHEELBASE=1.200 +Z_MOTOR_WHEELBASE=1.200 ; MOTOR_PULSE_NUM=10000 ; diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Mv_MainDlg.cpp b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Mv_MainDlg.cpp index 9164d96..a1bd7d7 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Mv_MainDlg.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Mv_MainDlg.cpp @@ -18,8 +18,8 @@ #include "So7_Option.h" #include "..\..\..\Tesa\TesaStarE.h" #include "TestTesaStarEDialog.h" -#include "Mv_MainDlg.h" #include "KeyenceTM065_Dlg.h" +#include "Mv_MainDlg.h" CMv_Proto *m_pMv_Proto = NULL; CKeyenceTM065_Proto *m_pKeyenceTM065_Proto = NULL; @@ -152,10 +152,10 @@ BOOL CMv_MainDlg::OnInitDialog() { ((CButton *)GetDlgItem(IDC_RADIO_MACHINE_MITUTOYO))->SetCheck(false); ((CButton *)GetDlgItem(IDC_RADIO_MACHINE_MICROVU))->SetCheck(false); - ((CButton *)GetDlgItem(IDC_RADIO_MACHINE_SevenOcean))->SetCheck(false); + ((CButton *)GetDlgItem(IDC_RADIO_MACHINE_SevenOcean))->SetCheck(true); ((CButton *)GetDlgItem(IDC_RADIO_MACHINE_TM_065))->SetCheck(false); ((CButton *)GetDlgItem(IDC_RADIO_MACHINE_ANIMATICS))->SetCheck(false); - ((CButton *)GetDlgItem(IDC_RADIO_MACHINE_TESASTARE))->SetCheck(true); + ((CButton *)GetDlgItem(IDC_RADIO_MACHINE_TESASTARE))->SetCheck(false); ((CButton *)GetDlgItem(IDC_BUTTON_PROTOCOL_ANALYZER))->EnableWindow(true); ((CButton *)GetDlgItem(IDC_BUTTON_FILE_UTILITIES))->EnableWindow(true); 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 249b73f..a4e24de 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 @@ -21,8 +21,8 @@ #include "EditableListCtrl.h" #include "SetSo7MotionConfig.h" #include "So7_Config_Pages.h" -#include "SO7_UtilDlg.h" #include "So7_XBoxController.h" +#include "SO7_UtilDlg.h" // CSO7_UtilDlg ΆΤ»°Ώς #define HBIT0 0X01 @@ -36,10 +36,10 @@ extern CPSerial* m_pSO7_PCDSerial; extern CSO7_Proto* m_pSO7_Proto; +extern CXBOXController* XBoxPlayer; CLogger* g_pLoggerDebug=NULL; CSO7_VolComp* g_pVolComp=NULL; CAutoZoom* m_pSO7_AutoZoom=NULL; -CXBOXController* XBoxPlayer = new CXBOXController(1); IMPLEMENT_DYNAMIC(CSO7_UtilDlg, CDialog) CSO7_UtilDlg::CSO7_UtilDlg(CWnd* pParent /*=NULL*/) @@ -414,7 +414,14 @@ void CSO7_UtilDlg::OnBnClickedButtonStartSo7machine() if(XBoxPlayer->IsConnected()) { XBoxPlayer->XBoxControllerInit(); + m_OutMessage=_T("XBoxController has connected."); + OutputWithScroll(m_OutMessage,m_edMSG); } + else + { + m_OutMessage=_T("XBoxController connection fails."); + OutputWithScroll(m_OutMessage,m_edMSG); + } m_pSO7_Proto->Load_So7_Config(); //m_pSO7_Proto->so7_motion_startup(0.5, 0.5, 0.5); m_pSO7_Proto->_start_machine(); diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Option.cpp b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Option.cpp index ea8de5e..898b5eb 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Option.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Option.cpp @@ -39,6 +39,7 @@ #include "..\..\..\SevenOcean\Serial.h" #include "So7_Manual_Machine.h" +#include "So7_XBoxController.h" #include "So7_Option.h" #include "afxdialogex.h" @@ -54,6 +55,7 @@ CKeyence_Proto* m_pKeyence_Proto=NULL; CSo7_Interface* m_pSo7_Interface=NULL; CEF8000_Interface* m_pEF8000_Interface=NULL; +CXBOXController* XBoxPlayer =NULL; // CSo7_Option dialog @@ -167,9 +169,20 @@ void CSo7_Option::OnBnClickedOk() { m_pSO7_Proto = new CSO7_Proto(); } + if (!XBoxPlayer) + { + XBoxPlayer = new CXBOXController(1); + } + + CSO7_UtilDlg* pSO7_UtilDlg=new CSO7_UtilDlg(); pSO7_UtilDlg->DoModal(); delete pSO7_UtilDlg; + if (XBoxPlayer) + { + delete XBoxPlayer; + XBoxPlayer=NULL; + } if (m_pSO7_Proto) { delete m_pSO7_Proto; diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_XBoxController.cpp b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_XBoxController.cpp index 2e8dc8c..755c6e1 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_XBoxController.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_XBoxController.cpp @@ -1,30 +1,35 @@ #include "StdAfx.h" -#include "So7_XBoxController.h" +#include #include "..\..\..\SevenOcean\SO7_Proto.h" -#include "..\..\..\Animatics\Animatics_Proto.h" -#include "math.h" +#include "So7_XBoxController.h" + +#define M_PI 3.14159265358979323846 +const double XBOX_X_ANGLE=(M_PI / 180.0 * 10.0); +const double XBOX_Y_ANGLE=(M_PI / 180.0 * 80.0); +const double XBOX_XY_ANGLE_BEGIN=(M_PI / 180.0 * 35.0); +const double XBOX_XY_ANGLE_END=(M_PI / 180.0 * 55.0); extern CSO7_Proto* m_pSO7_Proto; -extern SmartMotor_Proto* pSmartMotor_Proto; HANDLE CXBOXController::XBoxhThread = NULL; HANDLE CXBOXController::XBoxThreadMutex = NULL; HANDLE CXBOXController::XBoxhTriggerEvent; -int CXBOXController::XBoxThreadState = THREAD_PAUSED; +int CXBOXController::XBoxThreadState = XBTHREAD_PAUSED; bool CXBOXController::XYWAITSTOP = false; bool CXBOXController::ZWAITSTOP = false; -short LX = 0, LY = 0, RX = 0, RY = 0; -WORD wBtns = 0; - -BYTE TopLightValue = 0; -BYTE BottomLightValue = 0; +static short LX = 0, LY = 0, RX = 0, RY = 0; +static WORD wBtns = 0; +static BYTE TopLightValue = 0; +static BYTE BottomLightValue = 0; static int TopLightBtnDown = 0; static int BottomLightBtnDown = 0; +static char MoveSpeedGear[3]={0}; CXBOXController::CXBOXController(int playerNumber) { - _controllerNum = playerNumber - 1; + m_ControllerNum = playerNumber - 1; + m_IsConnected=false; } CXBOXController::~CXBOXController() @@ -34,67 +39,73 @@ CXBOXController::~CXBOXController() void CXBOXController::XBoxControllerInit(void) { - XBoxThreadState = THREAD_RUNNING_STATE; + if (m_IsConnected) + { + XBoxThreadState = XBTHREAD_RUNNING_STATE; - XBoxhTriggerEvent = CreateEvent(NULL, FALSE, NULL, NULL); - XBoxhThread = CreateThread((LPSECURITY_ATTRIBUTES)NULL, 0, (LPTHREAD_START_ROUTINE)g_XBox_Thread, (LPVOID)this, 0, NULL); - XBoxThreadMutex = CreateMutex(NULL, FALSE, NULL); + XBoxhTriggerEvent = CreateEvent(NULL, FALSE, NULL, NULL); + XBoxhThread = CreateThread((LPSECURITY_ATTRIBUTES)NULL, 0, (LPTHREAD_START_ROUTINE)g_XBox_Thread, (LPVOID)this, 0, NULL); + XBoxThreadMutex = CreateMutex(NULL, FALSE, NULL); + } } void CXBOXController::XBoxControllerExit(void) { - XBoxThreadState = THREAD_EXIT; - - SetEvent(XBoxhTriggerEvent); - if (XBoxhThread) + if (m_IsConnected) { - DWORD dwCode = STILL_ACTIVE; - while (dwCode == STILL_ACTIVE) + XBoxThreadState = XBTHREAD_EXIT; + + SetEvent(XBoxhTriggerEvent); + if (XBoxhThread) { - GetExitCodeThread(XBoxhThread, &dwCode); - Sleep(1); + DWORD dwCode = STILL_ACTIVE; + while (dwCode == STILL_ACTIVE) + { + GetExitCodeThread(XBoxhThread, &dwCode); + Sleep(1); + } } - } - SetEvent(XBoxhTriggerEvent); - CloseHandle(XBoxhTriggerEvent); + SetEvent(XBoxhTriggerEvent); + CloseHandle(XBoxhTriggerEvent); - XBoxThreadState = THREAD_EXIT; + XBoxThreadState = XBTHREAD_EXIT; - ReleaseMutex(XBoxThreadMutex); - CloseHandle(XBoxhThread); + ReleaseMutex(XBoxThreadMutex); + CloseHandle(XBoxhThread); + } } bool CXBOXController::IsConnected() { - ZeroMemory(&_controllerState, sizeof(XINPUT_STATE)); - DWORD Result = XInputGetState(_controllerNum, &_controllerState); - + ZeroMemory(&m_ControllerState, sizeof(XINPUT_STATE)); + DWORD Result = XInputGetState(m_ControllerNum, &m_ControllerState); if (Result == ERROR_SUCCESS) { - return true; + m_IsConnected=true; } else { - return false; + m_IsConnected=false; } + return m_IsConnected; } XINPUT_STATE CXBOXController::GetState() { - ZeroMemory(&_controllerState, sizeof(XINPUT_STATE)); - XInputGetState(_controllerNum, &_controllerState); + ZeroMemory(&m_ControllerState, sizeof(XINPUT_STATE)); + XInputGetState(m_ControllerNum, &m_ControllerState); - return _controllerState; + return m_ControllerState; } void CXBOXController::Vibrate(int leftVal, int rightVal) { - XINPUT_VIBRATION Vibration; - ZeroMemory(&Vibration, sizeof(XINPUT_VIBRATION)); - Vibration.wLeftMotorSpeed = (WORD)leftVal; - Vibration.wRightMotorSpeed = (WORD)rightVal; - XInputSetState(_controllerNum, &Vibration); + XINPUT_VIBRATION Vibration; + ZeroMemory(&Vibration, sizeof(XINPUT_VIBRATION)); + Vibration.wLeftMotorSpeed = (WORD)leftVal; + Vibration.wRightMotorSpeed = (WORD)rightVal; + XInputSetState(m_ControllerNum, &Vibration); } unsigned __stdcall CXBOXController::g_XBox_Thread(LPVOID pThis) @@ -108,16 +119,21 @@ unsigned __stdcall CXBOXController::g_XBox_Thread(LPVOID pThis) RX = _This->GetState().Gamepad.sThumbRX; RY = _This->GetState().Gamepad.sThumbRY; wBtns = _This->GetState().Gamepad.wButtons; + + //TRACE2("[XBOX]LX:%d LY:%d\n",LX,LY); + //TRACE2("[XBOX]RX:%d RY:%d\n",RX,RY); //Z Direction if(LY>128 && abs(LX)_send_cmd_SO7_CMD_MOVE_Z((char)((LY - 128) / 8160 + 1)); + MoveSpeedGear[2]=static_cast((LY - 128) / 8160 + 1); + m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_Z(MoveSpeedGear[2]); ZWAITSTOP = true; } else if(LY<128 && abs(LX)<-LY/tan(XBOX_Y_ANGLE)) { - m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_Z((char)((LY + 128) / 8160.25 - 1)); + MoveSpeedGear[2]=static_cast((LY + 128) / 8160.25 - 1); + m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_Z(MoveSpeedGear[2]); ZWAITSTOP = true; } else if(ZWAITSTOP) @@ -129,46 +145,75 @@ unsigned __stdcall CXBOXController::g_XBox_Thread(LPVOID pThis) //XY Direction if(RX<128 && abs(RY)<-RX*tan(XBOX_X_ANGLE)) { - m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_X((char)((RX + 128) / 8160.25 - 1)); + MoveSpeedGear[0]=static_cast((RX + 128) / 8160.25 - 1); + MoveSpeedGear[0]=3; + m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_X(MoveSpeedGear[0]); XYWAITSTOP = true; } else if(RX<128 && RY>-RX*tan(XBOX_XY_ANGLE_BEGIN) && RY<-RX*tan(XBOX_XY_ANGLE_END)) { - m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_XY((char)((RX + 128) / 8160.25 - 1), (char)((RY - 128) / 8160 + 1)); + MoveSpeedGear[0]=static_cast((RX + 128) / 8160.25 - 1); + MoveSpeedGear[1]=static_cast((RY - 128) / 8160 + 1); + MoveSpeedGear[0]=3; + MoveSpeedGear[1]=-3; + m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_XY(MoveSpeedGear[0],MoveSpeedGear[1]); XYWAITSTOP = true; } else if(RY>128 && abs(RX)_send_cmd_SO7_CMD_MOVE_Y((char)((RY - 128) / 8160 + 1)); + MoveSpeedGear[1]=static_cast((RY - 128) / 8160 + 1); + MoveSpeedGear[1]=-3; + m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_Y(MoveSpeedGear[1]); XYWAITSTOP = true; } else if(RX>128 && RY>RX*tan(XBOX_XY_ANGLE_BEGIN) && RY_send_cmd_SO7_CMD_MOVE_XY((char)((RX - 128) / 8160 + 1), (char)((RY - 128) / 8160 +1)); + MoveSpeedGear[0]=static_cast((RX - 128) / 8160 + 1); + MoveSpeedGear[1]=static_cast((RY - 128) / 8160 +1); + + MoveSpeedGear[0]=-3; + MoveSpeedGear[1]=-3; + m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_XY(MoveSpeedGear[0],MoveSpeedGear[1]); XYWAITSTOP = true; } else if(RX>128 && abs(RY)_send_cmd_SO7_CMD_MOVE_X((char)((RX - 128) / 8160 + 1)); + MoveSpeedGear[0]=static_cast((RX - 128) / 8160 + 1); + MoveSpeedGear[0]=-3; + m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_X(MoveSpeedGear[0]); XYWAITSTOP = true; } else if(RX>128 && -RY>RX*tan(XBOX_XY_ANGLE_BEGIN) && -RY_send_cmd_SO7_CMD_MOVE_XY((char)((RX - 128) / 8160 + 1), (char)((RY + 128) / 8160.25 - 1)); + MoveSpeedGear[0]=static_cast((RX - 128) / 8160 + 1); + MoveSpeedGear[1]=static_cast((RY + 128) / 8160.25 - 1); + + MoveSpeedGear[0]=-3; + MoveSpeedGear[1]=3; + m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_XY(MoveSpeedGear[0],MoveSpeedGear[1]); XYWAITSTOP = true; } else if(RY<128 && abs(RX)<-RY/tan(XBOX_Y_ANGLE)) { - m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_Y((char)((RY + 128) / 8160.25 - 1)); + MoveSpeedGear[1]=static_cast((RY + 128) / 8160.25 - 1); + + MoveSpeedGear[0]=3; + MoveSpeedGear[1]=3; + m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_Y(MoveSpeedGear[1]); XYWAITSTOP = true; } else if(RX<128 && -RY>-RX*tan(XBOX_XY_ANGLE_BEGIN) && -RY<-RX*tan(XBOX_XY_ANGLE_END)) { - m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_XY((char)((RX + 128) / 8160.25 - 1), (char)((RY + 128) / 8160.25 - 1)); + MoveSpeedGear[0]=static_cast((RX + 128) / 8160.25 - 1); + MoveSpeedGear[1]=static_cast((RY + 128) / 8160.25 - 1); + + MoveSpeedGear[0]=3; + MoveSpeedGear[1]=3; + m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_XY(MoveSpeedGear[0],MoveSpeedGear[1]); XYWAITSTOP = true; } else if(XYWAITSTOP) - { + { m_pSO7_Proto->_send_cmd_SO7_CMD_STOP_MOVE_XYZ(); XYWAITSTOP = false; } @@ -419,33 +464,17 @@ unsigned __stdcall CXBOXController::g_XBox_Thread(LPVOID pThis) _This->Vibrate(); } - /* + /*************************************************************** + /////////////////////////////Other State//////////////////////// if(_This->GetState().Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_UP) - { - m_pSO7_Proto->_send_cmd_SO7_CMD_STOP_MOVE_XYZ(); - } - if(_This->GetState().Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_DOWN) - { - m_pSO7_Proto->_send_cmd_SO7_CMD_STOP_MOVE_XYZ(); - } - if(_This->GetState().Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_LEFT) - { - pSmartMotor_Proto->_send_cmd_SMARTMOTOR_DECEL_STOPX(); - } - if(_This->GetState().Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_RIGHT) - { - pSmartMotor_Proto->_send_cmd_SMARTMOTOR_DECEL_STOPX(); - } - if(_This->GetState().Gamepad.wButtons & XINPUT_GAMEPAD_START) - { - m_pSO7_Proto->_send_cmd_SO7_CMD_STOP_MOVE_XYZ(); - }*/ + if(_This->GetState().Gamepad.wButtons & XINPUT_GAMEPAD_BACK) + ***************************************************************/ - if(XBoxThreadState == THREAD_EXIT || _This->GetState().Gamepad.wButtons & XINPUT_GAMEPAD_BACK) + if(XBoxThreadState == XBTHREAD_EXIT || _This->GetState().Gamepad.wButtons & XINPUT_GAMEPAD_BACK) { break; } diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_XBoxController.h b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_XBoxController.h index 1d5d6af..c0e05e2 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_XBoxController.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_XBoxController.h @@ -4,10 +4,6 @@ #define XBTHREAD_PAUSED 1 #define XBTHREAD_RUNNING_STATE 0 #define XBTHREAD_EXIT -1 -#define XBOX_X_ANGLE PI / 180 * 10 -#define XBOX_Y_ANGLE PI / 180 * 80 -#define XBOX_XY_ANGLE_BEGIN PI / 180 * 35 -#define XBOX_XY_ANGLE_END PI / 180 * 55 #pragma comment(lib, "XInput.lib") @@ -19,11 +15,11 @@ protected: static HANDLE XBoxhTriggerEvent; static int XBoxThreadState; static bool XYWAITSTOP; - static bool ZWAITSTOP; - - XINPUT_STATE _controllerState; - int _controllerNum; + static bool ZWAITSTOP; + XINPUT_STATE m_ControllerState; + int m_ControllerNum; + bool m_IsConnected; public: CXBOXController(int playerNumber); ~CXBOXController(); 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 c2be507..f3471cc 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