diff --git a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp index d6f6a5e..74d9c10 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp @@ -61,7 +61,7 @@ unsigned __stdcall CSO7_Proto::g_EP02_Thread(LPVOID pThis) } case THREAD_RUNNING_STATE2: { - //TRACE0("g_hSerialUsbThread processing _write_usb_data_only();\n"); + //TRACE0("g_hSerDialUsbThread processing _write_usb_data_only();\n"); _This->_write_usb_data_only(EP_02_CMD_IDX); //TRACE0("g_hSerialUsbThread return from _write_usb_data_only();\n"); break; @@ -3463,7 +3463,7 @@ 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); + TRACE1("[MOVE_X]:%d\n",static_cast(SpeedGear)); ep_buff[EP_02_CMD_IDX]._size = 0x03; ep_buff[EP_81_DATA_IDX]._size = 0x03; @@ -3484,7 +3484,7 @@ 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); + TRACE1("[MOVE_Y]:%d\n",static_cast(SpeedGear)); ep_buff[EP_02_CMD_IDX]._size = 0x03; ep_buff[EP_81_DATA_IDX]._size = 0x03; @@ -3505,7 +3505,7 @@ 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); + TRACE1("[MOVE_Z]:%d\n",static_cast(SpeedGear)); ep_buff[EP_02_CMD_IDX]._size = 0x03; ep_buff[EP_81_DATA_IDX]._size = 0x03; @@ -3545,7 +3545,7 @@ SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_STOP_MOVE_XYZ() *(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_STOPA; *(ep_buff[EP_02_CMD_IDX]._buffer+2)=0x00; - TRACE("[STOP_XYZ]"); + TRACE("[STOP_XYZ]\n"); ep_buff[EP_02_CMD_IDX]._size = 0x04; ep_buff[EP_81_DATA_IDX]._size = 0x04; @@ -4694,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("[MOVE_XY]:X %d;Y %d.\n",SpeedGearX,SpeedGearY); + TRACE2("[MOVE_XY]:X %d;Y %d.\n",static_cast(SpeedGearX),static_cast(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/Tesa/TesaStarE.cpp b/PcDmis/Base/Interfac/Msi/Hsi/Tesa/TesaStarE.cpp index 3428588..0a8126b 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tesa/TesaStarE.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tesa/TesaStarE.cpp @@ -8,8 +8,6 @@ CTesaStarE::CTesaStarE(void) SerialComPort=1; _bReading=FALSE; bEnComm=false; - m_TesaStarEAngle[0]=(double)0.0; - m_TesaStarEAngle[1]=(double)0.0; memset(m_RecvData,0,sizeof(m_RecvData)); } //================================================================== @@ -20,6 +18,9 @@ CTesaStarE::~CTesaStarE(void) BOOL CTesaStarE::Initialization(bool _bInitConfig) { BOOL status(FALSE); + + m_TesaStarEAngle[0]=0.0; + m_TesaStarEAngle[1]=0.0; if (_bInitConfig) { LoadConfig(); 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 17a91ef..1251618 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/UtilityDebug.Log +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/UtilityDebug.Log @@ -3962,3 +3962,201 @@ Init:Open device succeed . _start_machine Exit: Exit_SO7Usb Destruct Cso7_Proto. +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +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 +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +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 +Construct Cso7_Proto. +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 +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Destruct Cso7_Proto. +Construct Cso7_Proto. +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 +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 +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +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 +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 +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. +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 b4fcdf7..1dc2fcf 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 @@ -15,13 +15,13 @@ SPEED_BASE_X1=20 SPEED_MAX_X1=20 SPEED_START_X1=20 SPEED_FRESH_X1=8 -SPEED_SLOW_X1=3.299 +SPEED_SLOW_X1=2.000 ; SPEED_BASE_X2=16 SPEED_MAX_X2=10 SPEED_START_X2=12 SPEED_FRESH_X2=10 -SPEED_SLOW_X2=2.000 +SPEED_SLOW_X2=1.000 ; SPEED_BASE_X3=2 SPEED_MAX_X3=0 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 a4e24de..0ce80ea 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 @@ -443,13 +443,8 @@ void CSO7_UtilDlg::OnBnClickedButtonStartSo7machine() //===================================================================== void CSO7_UtilDlg::OnBnClickedButtonStopSo7machine() -{ - - if(XBoxPlayer->IsConnected()) - { - XBoxPlayer->XBoxControllerExit(); - } - +{ + XBoxPlayer->XBoxControllerExit(); CString csPath; m_pSO7_Proto->GetAppPath(csPath); m_pSO7_Proto->Save_SevenOcean_Inifile(csPath+_T("\\Utility_Config.ini")); 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 898b5eb..6a3bf05 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 @@ -173,11 +173,11 @@ void CSo7_Option::OnBnClickedOk() { XBoxPlayer = new CXBOXController(1); } - - + CSO7_UtilDlg* pSO7_UtilDlg=new CSO7_UtilDlg(); pSO7_UtilDlg->DoModal(); delete pSO7_UtilDlg; + if (XBoxPlayer) { delete XBoxPlayer; 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 755c6e1..cb560eb 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 @@ -4,10 +4,10 @@ #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); +const double XBOX_X_ANGLE=(M_PI / 180.0 * 18.0); +const double XBOX_Y_ANGLE=(M_PI / 180.0 * 72.0); +const double XBOX_XY_ANGLE_BEGIN=(M_PI / 180.0 * 20.0); +const double XBOX_XY_ANGLE_END=(M_PI / 180.0 * 70.0); extern CSO7_Proto* m_pSO7_Proto; @@ -15,21 +15,19 @@ HANDLE CXBOXController::XBoxhThread = NULL; HANDLE CXBOXController::XBoxThreadMutex = NULL; HANDLE CXBOXController::XBoxhTriggerEvent; int CXBOXController::XBoxThreadState = XBTHREAD_PAUSED; -bool CXBOXController::XYWAITSTOP = false; -bool CXBOXController::ZWAITSTOP = false; -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}; +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 INT m_MoveXYZType(0); +static INT m_MoveSpeedGear[3]={0}; CXBOXController::CXBOXController(int playerNumber) { m_ControllerNum = playerNumber - 1; - m_IsConnected=false; } CXBOXController::~CXBOXController() @@ -78,6 +76,7 @@ void CXBOXController::XBoxControllerExit(void) bool CXBOXController::IsConnected() { + m_IsConnected=false; ZeroMemory(&m_ControllerState, sizeof(XINPUT_STATE)); DWORD Result = XInputGetState(m_ControllerNum, &m_ControllerState); if (Result == ERROR_SUCCESS) @@ -108,114 +107,184 @@ void CXBOXController::Vibrate(int leftVal, int rightVal) XInputSetState(m_ControllerNum, &Vibration); } +bool CXBOXController::MoveXYZ(int _EMoveType,INT* _SpeedGear) +{ + bool rStatus(true); + bool IsSameType(false); + if (m_MoveXYZType==_EMoveType) + { + rStatus=false; + IsSameType=true; + } + switch(_EMoveType) + { + case E_XBOX_STOPXYZ: + { + if (!IsSameType) + { + m_pSO7_Proto->_send_cmd_SO7_CMD_STOP_MOVE_XYZ(); + } + break; + } + case E_XBOX_MOVE_XL: + case E_XBOX_MOVE_XR: + { + if (_SpeedGear[0]!=m_MoveSpeedGear[0]) + { + m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_X(static_cast(_SpeedGear[0])); + m_MoveSpeedGear[0]=_SpeedGear[0]; + } + break; + } + case E_XBOX_MOVE_YB: + case E_XBOX_MOVE_YF: + { + if (_SpeedGear[1]!=m_MoveSpeedGear[1]) + { + m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_Y(static_cast(_SpeedGear[1])); + m_MoveSpeedGear[1]=_SpeedGear[1]; + } + break; + } + case E_XBOX_MOVE_ZU: + case E_XBOX_MOVE_ZD: + { + if (_SpeedGear[2]!=m_MoveSpeedGear[2]) + { + m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_Z(static_cast(_SpeedGear[2])); + m_MoveSpeedGear[2]=_SpeedGear[2]; + } + break; + } + case E_XBOX_MOVE_XLYB: + case E_XBOX_MOVE_XLYF: + case E_XBOX_MOVE_XRYB: + case E_XBOX_MOVE_XRYF: + { + if ((_SpeedGear[0]!=m_MoveSpeedGear[0]) || (_SpeedGear[1]!=m_MoveSpeedGear[1])) + { + m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_XY(static_cast(_SpeedGear[0]),static_cast(_SpeedGear[1])); + m_MoveSpeedGear[0]=_SpeedGear[0]; + m_MoveSpeedGear[1]=_SpeedGear[1]; + } + break; + } + default: + { + break; + } + } + m_MoveXYZType=_EMoveType; + return rStatus; +} + + unsigned __stdcall CXBOXController::g_XBox_Thread(LPVOID pThis) { CXBOXController* _This = (CXBOXController*)pThis; + bool bXYWAITSTOP(false); + bool bZWAITSTOP(false); + INT MoveSpeedGear[3]={0}; + for (;;) { + if(XBoxThreadState == XBTHREAD_EXIT) + { + ExitThread(0); + } LX = _This->GetState().Gamepad.sThumbLX; LY = _This->GetState().Gamepad.sThumbLY; 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); + //TRACE2("[XBOX]LX:%d LY:%d\n",static_cast(LX),static_cast(LY)); + //TRACE2("[XBOX]RX:%d RY:%d\n",static_cast(RX),static_cast(RY)); //Z Direction if(LY>128 && abs(LX)((LY - 128) / 8160 + 1); - m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_Z(MoveSpeedGear[2]); - ZWAITSTOP = true; + MoveSpeedGear[0]=0; + MoveSpeedGear[1]=0; + MoveSpeedGear[2]=static_cast((LY - 128) / 8160 + 1); + _This->MoveXYZ(E_XBOX_MOVE_ZU,MoveSpeedGear); + bZWAITSTOP=true; } - else if(LY<128 && abs(LX)<-LY/tan(XBOX_Y_ANGLE)) + else if(LY<-128 && abs(LX)<-LY/tan(XBOX_Y_ANGLE)) { - MoveSpeedGear[2]=static_cast((LY + 128) / 8160.25 - 1); - m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_Z(MoveSpeedGear[2]); - ZWAITSTOP = true; + MoveSpeedGear[0]=0; + MoveSpeedGear[1]=0; + MoveSpeedGear[2]=static_cast((LY + 128) / 8160.25 - 1); + _This->MoveXYZ(E_XBOX_MOVE_ZD,MoveSpeedGear); + bZWAITSTOP=true; } - else if(ZWAITSTOP) + else if(bZWAITSTOP) { - m_pSO7_Proto->_send_cmd_SO7_CMD_STOP_MOVE_XYZ(); - ZWAITSTOP = false; + _This->MoveXYZ(E_XBOX_STOPXYZ,MoveSpeedGear); + bZWAITSTOP=false; } - //XY Direction - if(RX<128 && abs(RY)<-RX*tan(XBOX_X_ANGLE)) + if(RX<-128 && abs(RY)<-RX*tan(XBOX_X_ANGLE)) { - 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)) - { - 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)((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((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; + MoveSpeedGear[0]=static_cast((RX + 128) / 8160.25 - 1); + MoveSpeedGear[1]=0; + _This->MoveXYZ(E_XBOX_MOVE_XR,MoveSpeedGear); + bXYWAITSTOP=true; } else if(RX>128 && abs(RY)((RX - 128) / 8160 + 1); - MoveSpeedGear[0]=-3; - m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_X(MoveSpeedGear[0]); - XYWAITSTOP = true; + MoveSpeedGear[0]=static_cast((RX - 128) / 8160 + 1); + MoveSpeedGear[1]=0; + _This->MoveXYZ(E_XBOX_MOVE_XL,MoveSpeedGear); + bXYWAITSTOP=true; + } + else if(RY<-128 && abs(RX)<-RY/tan(XBOX_Y_ANGLE)) + { + MoveSpeedGear[0]=0; + MoveSpeedGear[1]=static_cast((RY + 128) / 8160.25 - 1); + _This->MoveXYZ(E_XBOX_MOVE_YF,MoveSpeedGear); + bXYWAITSTOP=true; + } + else if(RY>128 && abs(RX)((RY - 128) / 8160 + 1); + _This->MoveXYZ(E_XBOX_MOVE_YB,MoveSpeedGear); + bXYWAITSTOP=true; + } + else if(RX<-128 && RY>-RX*tan(XBOX_XY_ANGLE_BEGIN) && RY<-RX*tan(XBOX_XY_ANGLE_END)) + { + MoveSpeedGear[0]=static_cast((RX + 128) / 8160.25 - 1); + MoveSpeedGear[1]=static_cast((RY - 128) / 8160 + 1); + _This->MoveXYZ(E_XBOX_MOVE_XRYB,MoveSpeedGear); + bXYWAITSTOP=true; + } + else if(RX<-128 && -RY>-RX*tan(XBOX_XY_ANGLE_BEGIN) && -RY<-RX*tan(XBOX_XY_ANGLE_END)) + { + MoveSpeedGear[0]=static_cast((RX + 128) / 8160.25 - 1); + MoveSpeedGear[1]=static_cast((RY + 128) / 8160.25 - 1); + _This->MoveXYZ(E_XBOX_MOVE_XRYF,MoveSpeedGear); + bXYWAITSTOP=true; + } + else if(RX>128 && RY>RX*tan(XBOX_XY_ANGLE_BEGIN) && RY((RX - 128) / 8160 + 1); + MoveSpeedGear[1]=static_cast((RY - 128) / 8160 +1); + _This->MoveXYZ(E_XBOX_MOVE_XLYB,MoveSpeedGear); + bXYWAITSTOP=true; } else if(RX>128 && -RY>RX*tan(XBOX_XY_ANGLE_BEGIN) && -RY((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; + MoveSpeedGear[0]=static_cast((RX - 128) / 8160 + 1); + MoveSpeedGear[1]=static_cast((RY + 128) / 8160.25 - 1); + _This->MoveXYZ(E_XBOX_MOVE_XLYF,MoveSpeedGear); + bXYWAITSTOP=true; } - else if(RY<128 && abs(RX)<-RY/tan(XBOX_Y_ANGLE)) - { - 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)) - { - 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) + else if(bXYWAITSTOP) { - m_pSO7_Proto->_send_cmd_SO7_CMD_STOP_MOVE_XYZ(); - XYWAITSTOP = false; + _This->MoveXYZ(E_XBOX_STOPXYZ,MoveSpeedGear); + bXYWAITSTOP=false; } //TopLight @@ -474,13 +543,12 @@ unsigned __stdcall CXBOXController::g_XBox_Thread(LPVOID pThis) if(_This->GetState().Gamepad.wButtons & XINPUT_GAMEPAD_BACK) ***************************************************************/ - if(XBoxThreadState == XBTHREAD_EXIT || _This->GetState().Gamepad.wButtons & XINPUT_GAMEPAD_BACK) + if(XBoxThreadState == XBTHREAD_EXIT) { - break; + ExitThread(0); } - - Sleep(100); + Sleep(200); }; - + XBoxThreadState = XBTHREAD_EXIT; ExitThread(0); -} \ No newline at end of file +} 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 c0e05e2..41f5410 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 @@ -7,6 +7,22 @@ #pragma comment(lib, "XInput.lib") +enum EXBOX_MOVEXYZ_TYPE +{ + E_XBOX_STOPXYZ, + E_XBOX_MOVE_XL, + E_XBOX_MOVE_XR, + E_XBOX_MOVE_YB, + E_XBOX_MOVE_YF, + E_XBOX_MOVE_ZU, + E_XBOX_MOVE_ZD, + E_XBOX_MOVE_XLYB, + E_XBOX_MOVE_XLYF, + E_XBOX_MOVE_XRYB, + E_XBOX_MOVE_XRYF, + + E_XBOX_MOVE_TOTAL=255 +}; class CXBOXController { protected: @@ -14,12 +30,12 @@ protected: static HANDLE XBoxThreadMutex; static HANDLE XBoxhTriggerEvent; static int XBoxThreadState; - static bool XYWAITSTOP; - static bool ZWAITSTOP; XINPUT_STATE m_ControllerState; int m_ControllerNum; bool m_IsConnected; + + bool MoveXYZ(int _EMoveType,INT* _SpeedGear); 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 f3471cc..583fd83 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