175 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			175 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.Drawing;
 | |
| using System.Linq;
 | |
| using System.Text;
 | |
| using AR;
 | |
| using arDev;
 | |
| 
 | |
| namespace Project
 | |
| {
 | |
| 	public partial class FMain
 | |
| 	{
 | |
| 
 | |
| 		private void Joystick_InputChanged(object sender, arDev.Joystick.JoystickRaw.InputChangedEventHandler e)
 | |
| 		{
 | |
| 
 | |
| 			var keyName = e.input.ToString();
 | |
| 			if (e.input == HidSharp.Reports.Usage.Button5) keyName = "L-TRIGGER";
 | |
| 			else if (e.input == HidSharp.Reports.Usage.Button6) keyName = "R-TRIGGER";
 | |
| 			else if (e.input == HidSharp.Reports.Usage.Button9) keyName = "SELECT";
 | |
| 			else if (e.input == HidSharp.Reports.Usage.Button10) keyName = "START";
 | |
| 			else if (e.input == HidSharp.Reports.Usage.Button4) keyName = "BUT-Y";
 | |
| 			else if (e.input == HidSharp.Reports.Usage.Button1) keyName = "BUT-X";
 | |
| 
 | |
| 			PUB.log.Add("JOYSTICK", string.Format("[{0}] {1}->{2}", keyName, e.oldValue, e.newValue));
 | |
| 
 | |
| 			if (PUB.sm.Step != eSMStep.IDLE && PUB.sm.Step != eSMStep.ERROR && PUB.flag.get(eVarBool.FG_MOVE_PICKER) == false && PUB.sm.Step != eSMStep.WAITSTART) return;
 | |
| 
 | |
| 			if (e.input == HidSharp.Reports.Usage.Button4) //stop
 | |
| 			{
 | |
| 				if (e.newValue > 0)
 | |
| 				{
 | |
| 					PUB.log.Add("Joystick Click : Stop");
 | |
| 					_BUTTON_STOP();
 | |
| 				}
 | |
| 			}
 | |
| 			else if (e.input == HidSharp.Reports.Usage.Button1) //reset
 | |
| 			{
 | |
| 				if (e.newValue > 0)
 | |
| 				{
 | |
| 					PUB.log.Add("Joystick Click : Reset");
 | |
| 					_BUTTON_RESET();
 | |
| 				}
 | |
| 			}
 | |
| 			else if (e.input == HidSharp.Reports.Usage.Button9)  //select button
 | |
| 			{
 | |
| 				if (e.newValue == 1)
 | |
| 				{
 | |
| 					PUB.Result.JoystickAxisGroup += 1;
 | |
| 					if (PUB.Result.JoystickAxisGroup > 3) PUB.Result.JoystickAxisGroup = 0;
 | |
| 				}
 | |
| 			}
 | |
| 			else if (e.input == HidSharp.Reports.Usage.Button10)    //start button
 | |
| 			{
 | |
| 				if (e.newValue == 1 && PUB.flag.get(eVarBool.FG_SCR_JOBSELECT) == false)
 | |
| 				{
 | |
| 					if (PUB.sm.Step >= eSMStep.IDLE)
 | |
| 					{
 | |
| 						PUB.log.AddI("START BUTTON");
 | |
| 						this._BUTTON_START();
 | |
| 					}
 | |
| 				}
 | |
| 			}
 | |
| 			else if (e.input == HidSharp.Reports.Usage.Button5)  //ltrigger
 | |
| 			{
 | |
| 				AR.SETTING.Data.Enable_SpeedLimit = true;
 | |
| 			}
 | |
| 			else if (e.input == HidSharp.Reports.Usage.Button6)  //ltrigger
 | |
| 			{
 | |
| 				AR.SETTING.Data.Enable_SpeedLimit = false;
 | |
| 			}
 | |
| 
 | |
| 			//트리거 L,R을 눌렀을때 홈 가능한 위치라면 홈을 진행한다
 | |
| 			if (e.newValue > 0 && (e.input == HidSharp.Reports.Usage.Button5 || e.input == HidSharp.Reports.Usage.Button6))
 | |
| 			{
 | |
| 				//두개가 동시에 눌렷을때
 | |
| 				if (PUB.joystick.Buttons[4] && PUB.joystick.Buttons[5])
 | |
| 				{
 | |
| 					if (PUB.flag.get(eVarBool.FG_INIT_MOTIO) == false) return;
 | |
| 					if (PUB.sm.isRunning == true) return;
 | |
| 					if (DIO.IsEmergencyOn() == true) return;
 | |
| 					if (PUB.sm.Step == eSMStep.RUN) return;
 | |
| 
 | |
| 					PUB.log.AddAT("조이스틱으로 홈 초기화작업");
 | |
| 					Func_sw_initialize();
 | |
| 				}
 | |
| 			}
 | |
| 
 | |
| 			//동작중만 아니면 작동하게한다.
 | |
| 			if (PUB.sm.Step != eSMStep.RUN)
 | |
| 			{
 | |
| 				short axisH = 0;
 | |
| 				short axisV = 1;
 | |
| 				if (PUB.Result.JoystickAxisGroup == 1) //왼쪽뭉치
 | |
| 				{
 | |
| 					axisH = 2;
 | |
| 					axisV = 3;
 | |
| 				}
 | |
| 				else if (PUB.Result.JoystickAxisGroup == 2) //오른쪽뭉치
 | |
| 				{
 | |
| 					axisH = 4;
 | |
| 					axisV = 5;
 | |
| 				}
 | |
| 				else if (PUB.Result.JoystickAxisGroup == 3) //theta, picker-Z
 | |
| 				{
 | |
| 					axisH = 6;
 | |
| 					axisV = 1;
 | |
| 				}
 | |
| 
 | |
| 				//X축으로 이동하는것은 PX,                
 | |
| 				if (e.input == HidSharp.Reports.Usage.GenericDesktopX)
 | |
| 				{
 | |
| 					if (e.newValue == 0)
 | |
| 					{
 | |
| 						//좌
 | |
| 						PUB.mot.JOG(axisH, arDev.MOT.MOTION_DIRECTION.Negative, 100, 500, false, false);
 | |
| 						PUB.flag.set(eVarBool.FG_JOYSTICK, true, "joystick");
 | |
| 					}
 | |
| 					else if (e.newValue == 127)
 | |
| 					{
 | |
| 						//멈춤
 | |
| 						PUB.mot.MoveStop("Joystick", axisH);
 | |
| 						PUB.flag.set(eVarBool.FG_JOYSTICK, false, "joystick");
 | |
| 					}
 | |
| 					else if (e.newValue == 255)
 | |
| 					{
 | |
| 						//우
 | |
| 						PUB.mot.JOG(axisH, arDev.MOT.MOTION_DIRECTION.Positive, 100, 500, false, false);
 | |
| 						PUB.flag.set(eVarBool.FG_JOYSTICK, true, "joystick");
 | |
| 					}
 | |
| 				}
 | |
| 				else if (e.input == HidSharp.Reports.Usage.GenericDesktopY)
 | |
| 				{
 | |
| 					if (e.newValue == 0)
 | |
| 					{
 | |
| 						//상
 | |
| 						PUB.mot.JOG(axisV, arDev.MOT.MOTION_DIRECTION.Negative, 100, 500, false, false);
 | |
| 						PUB.flag.set(eVarBool.FG_JOYSTICK, true, "joystick");
 | |
| 					}
 | |
| 					else if (e.newValue == 127)
 | |
| 					{
 | |
| 						//멈춤
 | |
| 						PUB.mot.MoveStop("Joystick", axisV);
 | |
| 						PUB.flag.set(eVarBool.FG_JOYSTICK, false, "joystick");
 | |
| 					}
 | |
| 					else if (e.newValue == 255)
 | |
| 					{
 | |
| 						//하
 | |
| 						PUB.mot.JOG(axisV, arDev.MOT.MOTION_DIRECTION.Positive, 100, 500, false, false);
 | |
| 						PUB.flag.set(eVarBool.FG_JOYSTICK, true, "joystick");
 | |
| 					}
 | |
| 				}
 | |
| 
 | |
| 			}
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 		private void Joystick_Disconnected(object sender, EventArgs e)
 | |
| 		{
 | |
| 			PUB.log.AddE("조이스틱 연결 종료");
 | |
| 		}
 | |
| 
 | |
| 		private void Joystick_Connected(object sender, EventArgs e)
 | |
| 		{
 | |
| 			PUB.log.AddI("조이스틱 연결 완료");
 | |
| 		}
 | |
| 
 | |
| 		private void Joystick_Changed(object sender, EventArgs e)
 | |
| 		{
 | |
| 			PUB.log.AddAT("조이스틱 감지");
 | |
| 		}
 | |
| 
 | |
| 	}
 | |
| }
 | 
