private void FJoystick_Check_Data() { #region JoyStick // [ 아래는 XBox 기준이다. ] // 스틱좌상단, 0+ - 좌, 1+ - 하 // 패드 2+ - 좌, 3+ - 하 // 스틱우하단, 4+ - 좌, 5+ - 하 // 버튼 // Top 6 - -3 : 클릭 // Left 7 - -3 : 클릭 // Right 8 - -3 : 클릭 // Bottom 9 - -3 : 클릭 // 전면우측 10 - -3 : 클릭 // 전면좌측 11 - -3 : 클릭 // 전면우측아래 12- : 클릭 // 전면좌측아래 13- : 클릭 if (m_CJoy.IsValid == true) { //// 좌상단 조이스틱 if (Math.Abs(m_CJoy.dX0 - 0.5) > 0.2) { if (m_CTmr_Throat.Get() > 100) { double dData = (double)Math.Abs(m_CJoy.dX0 - 0.5); if (dData > 0) { //1448 +- 300 double dValue = 1448 + (dData * 2) * 300;// (dData * 2) * 100.0; int nValue2 = (int)((dData * 2) * 65535); nValue2 = (nValue2 != 0) ? 1 : 0; Ojw.CMessage.Write("Data = {0}", dValue); SendValue(1, nValue2, 1, nValue2, 1, (int)dValue, 1, (int)dValue, 1, (int)dValue); } else { //SendValue(0, 0, 0, 0, 1, 0, 1, 0, 1, 0); } m_CTmr_Throat.Set(); } m_C3d.SetData(1, (float)((m_CJoy.dX0 - 0.5) / 5.0 * 10.0)); m_C3d.SetData(2, (float)((m_CJoy.dX0 - 0.5) / 5.0 * 10.0)); } else { if (m_CTmr_Throat.Get() > 100) { m_CTmr_Throat.Set(); } m_C3d.SetData(1, 0); m_C3d.SetData(2, 0); } if (Math.Abs(m_CJoy.dY1 - 0.5) > 0.2) { m_C3d.SetData(0, (float)10.0f); //((m_CJoy.dY0 - 0.5) / 5.0 * 10.0)); } else { m_C3d.SetData(0, 0); } #if _XBOX // int nValue = 65535; if (m_CJoy.IsDown_Event(Ojw.CJoystick.PadKey.Button5) == true) //if (m_CJoy.IsDown_Event(Ojw.CJoystick.PadKey.Button7) == true) { //m_CSocket.Send(Ojw.CConvert.StrToBytes("0")); m_C3d.SetColor_Second(0, 4, 4, 0, Color.Cyan); //nRight = 100; //Ojw.CMessage.Write("Clicked 9"); Ojw.CMessage.Write("Light Right 100"); SendValue(1, nValue, 1, nValue, 0, 0, 0, 0, 0, 0); } else if (m_CJoy.IsUp_Event(Ojw.CJoystick.PadKey.Button5) == true) { //nRight = 0; m_C3d.SetColor_Second(0, 4, 4, 0, Color.Black); Ojw.CMessage.Write("Light Right off"); SendValue(1, 0, 1, 0, 0, 0, 0, 0, 0, 0); } if (m_CJoy.IsDown_Event(Ojw.CJoystick.PadKey.Button6) == true) //if (m_CJoy.IsDown_Event(Ojw.CJoystick.PadKey.Button8) == true) { //nLeft = 100; m_C3d.SetColor_Second(1, 5, 5, 0, Color.Cyan); //m_CSocket.Send(Ojw.CConvert.StrToBytes("1")); Ojw.CMessage.Write("Light Left 100"); //Ojw.CMessage.Write("Clicked 10"); SendValue(1, nValue, 1, nValue, 0, 0, 0, 0, 0, 0); } else if (m_CJoy.IsUp_Event(Ojw.CJoystick.PadKey.Button6) == true) { //nLeft = 0; m_C3d.SetColor_Second(1, 5, 5, 0, Color.Black); Ojw.CMessage.Write("Light Left off"); SendValue(1, 0, 1, 0, 0, 0, 0, 0, 0, 0); } #else if (m_CJoy.IsDown_Event(Ojw.CJoystick.PadKey.Button7) == true) { m_C3d.SetColor_Second(0, 4, 4, 0, Color.Cyan); Ojw.CMessage.Write("Clicked 9"); SendValue(1, 100, 0, 0, 0, 0, 0, 0); } else if (m_CJoy.IsUp_Event(Ojw.CJoystick.PadKey.Button7) == true) { m_C3d.SetColor_Second(0, 4, 4, 0, Color.Black); SendValue(1, 0, 0, 0, 0, 0, 0, 0); } if (m_CJoy.IsDown_Event(Ojw.CJoystick.PadKey.Button8) == true) { m_C3d.SetColor_Second(1, 5, 5, 0, Color.Cyan); Ojw.CMessage.Write("Clicked 10"); SendValue(0, 0, 1, 100, 0, 0, 0, 0); } else if (m_CJoy.IsUp_Event(Ojw.CJoystick.PadKey.Button8) == true) { m_C3d.SetColor_Second(1, 5, 5, 0, Color.Black); SendValue(0, 0, 1, 0, 0, 0, 0, 0); } #endif // 이 부분이 어떤 버튼이 눌리는지를 화면상에 뿌려준다. for (int i = 0; i < 30; i++) { if (m_CJoy.IsDown_Event((Ojw.CJoystick.PadKey)i) == true) { Ojw.CMessage.Write("Button Down{0}", i); } if (m_CJoy.IsUp_Event((Ojw.CJoystick.PadKey)i) == true) { Ojw.CMessage.Write("Button Up{0}", i); } } } #endregion JoyStick }
private void pad_check_data() { double mecFB = 0; double mecRL = 0; double mecT = 0; int inside = 0; if (mecanumMode == true)//메카넘모드일때 { if (pad.dY1 > 0.52 | pad.dY1 < 0.48) { mecFB = -(pad.dY1 - 0.5) * mecanumSpeed * mecanumAdd; } if (pad.dX1 > 0.52 | pad.dX1 < 0.48) { mecRL = (pad.dX1 - 0.5) * mecanumSpeed * mecanumAdd; } /*if (pad.dX0 > 0.55 | pad.dX0 < 0.45) * { * mecT = (pad.dX0 - 0.5) * mecanumSpeed * mecanumAdd; * light = true; * }*/ if (pad.Slide > 0.52 | pad.Slide < 0.48) { mecT = -(pad.Slide - 0.5) * mecanumSpeed * mecanumAdd; } if (pad.dX0 > 0.52 | pad.dX0 <0.48 | pad.dY0> 0.52 | pad.dY0 < 0.48) { mecFB = -(pad.dY0 - 0.5) * mecanumSpeed * mecanumAdd2; mecT = (pad.dX0 - 0.5) * mecanumSpeed * mecanumAdd2; /*if (mecFB < 0) * { * mecT = -mecT; * }*/ } if (pad.IsDown(Ojw.CJoystick.PadKey.Button1) == true) { // A 보정 기능 inside = 100; } if (pad.IsDown(Ojw.CJoystick.PadKey.POVUp) == true) //위 버튼 { mecFB = mecanumSpeed; } else if (pad.IsDown(Ojw.CJoystick.PadKey.POVDown) == true) //아래 버튼 { mecFB = -mecanumSpeed; } if (pad.IsDown(Ojw.CJoystick.PadKey.POVRight) == true) { mecRL = mecanumSpeed; } else if (pad.IsDown(Ojw.CJoystick.PadKey.POVLeft) == true) { mecRL = -mecanumSpeed; } motor.Set_Turn(30, (int)(-mecFB + mecRL + mecT - inside)); motor.Set_Turn(31, (int)(-mecFB - mecRL + mecT + (2 * inside))); motor.Set_Turn(32, (int)(mecFB - mecRL + mecT - (2 * inside))); motor.Set_Turn(33, (int)(mecFB + mecRL + mecT + inside)); motor.Send_Motor(10); motor.Wait(10); } else//걷기모드일때 { if (!walking) //걷고있지 않을때 { if (pad.IsDown_Event(Ojw.CJoystick.PadKey.POVUp) == true) //위 버튼 { btnWalkFront_Click(null, null); } else if (pad.IsDown_Event(Ojw.CJoystick.PadKey.POVDown) == true) //아래 버튼 { btnWalkBack_Click(null, null); } else if (pad.IsDown_Event(Ojw.CJoystick.PadKey.POVRight) == true) { btnWalkTurnRight_Click(null, null); } else if (pad.IsDown_Event(Ojw.CJoystick.PadKey.POVLeft) == true) { btnWalkTurnLeft_Click(null, null); } //X버튼 if (pad.IsDown_Event(Ojw.CJoystick.PadKey.Button3) == true) { btnStairLeft_Click(null, null); } if (pad.IsDown_Event(Ojw.CJoystick.PadKey.Button4) == true) { btnStairRight_Click(null, null); } } //B 버튼 if (pad.IsDown(Ojw.CJoystick.PadKey.Button2) == true) { btnWalkStop_Click(null, null); } } //왼쪽 트리거 버튼 if (pad.IsDown_Event(Ojw.CJoystick.PadKey.Button5) == true) // 보행 모드 { if (mecanumMode == true) //메카넘 모드일때 { btnTransformToWalk_Click(null, null); } else { btnStandPose_Click(null, null); } } //오른쪽 트리거 버튼 if (pad.IsDown_Event(Ojw.CJoystick.PadKey.Button6) == true) // 메카넘 모드 버튼 { if (mecanumMode == false) //보행 모드일때 { btnTransformToMecanum_Click(null, null); } else { btnMecanumPose_Click(null, null); } } if (pad.IsDown_Event(Ojw.CJoystick.PadKey.Button7) == true) { // BACK motor.SetTorq(false); } if (pad.IsDown_Event(Ojw.CJoystick.PadKey.Button8) == true) { // START motor.SetTorq(true); } }