Remove bug。
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -1,30 +1,35 @@
|
||||
#include "StdAfx.h"
|
||||
#include "So7_XBoxController.h"
|
||||
#include <math.h>
|
||||
#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)<LY/tan(XBOX_Y_ANGLE))
|
||||
{
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_Z((char)((LY - 128) / 8160 + 1));
|
||||
MoveSpeedGear[2]=static_cast<char>((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<char>((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<char>((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<char>((RX + 128) / 8160.25 - 1);
|
||||
MoveSpeedGear[1]=static_cast<char>((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/tan(XBOX_Y_ANGLE))
|
||||
{
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_Y((char)((RY - 128) / 8160 + 1));
|
||||
MoveSpeedGear[1]=static_cast<char>((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*tan(XBOX_XY_ANGLE_END))
|
||||
{
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_XY((char)((RX - 128) / 8160 + 1), (char)((RY - 128) / 8160 +1));
|
||||
MoveSpeedGear[0]=static_cast<char>((RX - 128) / 8160 + 1);
|
||||
MoveSpeedGear[1]=static_cast<char>((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)<RX*tan(XBOX_X_ANGLE))
|
||||
{
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_X((char)((RX - 128) / 8160 + 1));
|
||||
MoveSpeedGear[0]=static_cast<char>((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<RX*tan(XBOX_XY_ANGLE_END))
|
||||
{
|
||||
m_pSO7_Proto->_send_cmd_SO7_CMD_MOVE_XY((char)((RX - 128) / 8160 + 1), (char)((RY + 128) / 8160.25 - 1));
|
||||
MoveSpeedGear[0]=static_cast<char>((RX - 128) / 8160 + 1);
|
||||
MoveSpeedGear[1]=static_cast<char>((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<char>((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<char>((RX + 128) / 8160.25 - 1);
|
||||
MoveSpeedGear[1]=static_cast<char>((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;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user