109 lines
3.6 KiB
JavaScript
Executable File
109 lines
3.6 KiB
JavaScript
Executable File
var isRunning = false;
|
|
var gamePadId = 0;
|
|
var gamepad = {};
|
|
|
|
let lastCheckTime = 0;
|
|
|
|
|
|
|
|
function checkGamePad() {
|
|
if(isRunning == false){return;}
|
|
|
|
const stepSize = "0.01";
|
|
const stepSizeXYZ = "0.5"; // 3 ist auch ok
|
|
const stepSizeE = "0.01";
|
|
var gp = navigator.getGamepads()[gamePadId]
|
|
var buttons = gp.buttons
|
|
|
|
var xyzSpeed = 10000;
|
|
|
|
var psi = gp.axes[0];
|
|
var z = gp.axes[1];
|
|
var x = gp.axes[2];
|
|
var y = gp.axes[3];
|
|
|
|
|
|
// Dreieck zum Dreieck-Setzen
|
|
if (buttons[3].pressed) {
|
|
socket.sendCommand(`G90 G1 X0 Y300 Z0 A${Math.PI/2} B${-1.0*Math.PI/2} C0 F${xyzSpeed}`);
|
|
}
|
|
if (buttons[4].pressed) {
|
|
//console.log("x=" + robot.x + " y=" + robot.y + " z=" + robot.z);
|
|
}
|
|
|
|
|
|
|
|
// X Button setzt eine Marke
|
|
if(buttons[0].pressed && (Date.now() - lastCheckTime > 500)){
|
|
lastCheckTime = Date.now()
|
|
console.log('FPoint!');
|
|
socket.sendCommand('FPoint');
|
|
socket.sendCommand('FShow');
|
|
}
|
|
|
|
// L1 und R1 Button to forward-backward in Point-List
|
|
if(gp.buttons[4].pressed && (Date.now() - lastCheckTime > 500)){
|
|
lastCheckTime = Date.now()
|
|
socket.sendCommand('FMinus');
|
|
socket.sendCommand('FShow');
|
|
}
|
|
if(gp.buttons[5].pressed && (Date.now() - lastCheckTime > 500)){
|
|
lastCheckTime = Date.now()
|
|
socket.sendCommand('FPlus');
|
|
socket.sendCommand('FShow');
|
|
}
|
|
|
|
if (x < -0.2) { socket.sendCommand(`G91 G1 X+${stepSizeXYZ} F${xyzSpeed}`);}
|
|
if (x > 0.2) { socket.sendCommand(`G91 G1 X-${stepSizeXYZ} F${xyzSpeed}`);}
|
|
|
|
if (y < -0.2) { socket.sendCommand(`G91 G1 Y${stepSizeXYZ} F${xyzSpeed}`); }
|
|
if (y > 0.2) { socket.sendCommand(`G91 G1 Y-${stepSizeXYZ} F${xyzSpeed}`);}
|
|
|
|
if (z < -0.2) { socket.sendCommand(`G91 G1 Z${stepSizeXYZ} F${xyzSpeed}`); }
|
|
if (z > 0.2) { socket.sendCommand(`G91 G1 Z-${stepSizeXYZ} F${xyzSpeed}`); }
|
|
|
|
|
|
// Greif-Richtung
|
|
// LeftRight
|
|
if(buttons[14].pressed){ socket.sendCommand(`G91 G1 A${stepSize} F${xyzSpeed}`);}
|
|
if(buttons[15].pressed){ socket.sendCommand(`G91 G1 A-${stepSize} F${xyzSpeed}`);}
|
|
// Up - Down
|
|
if(buttons[12].pressed){ socket.sendCommand(`G91 G1 B${stepSize} F${xyzSpeed}`);}
|
|
if(buttons[13].pressed){ socket.sendCommand(`G91 G1 B-${stepSize} F${xyzSpeed}`);}
|
|
// Drehung
|
|
if (psi < -0.2) { socket.sendCommand(`G91 G1 C${stepSize} F${xyzSpeed}`); }
|
|
if (psi > 0.2) { socket.sendCommand(`G91 G1 C-${stepSize} F${xyzSpeed}`); }
|
|
|
|
// Trigger-Buttons für Öffnen und Schliessen
|
|
if(buttons[6].pressed){socket.sendCommand(`G91 G1 E-${stepSizeE} F${xyzSpeed}`);}
|
|
if(buttons[7].pressed){socket.sendCommand(`G91 G1 E${stepSizeE} F${xyzSpeed}`);}
|
|
if (isRunning) { setTimeout(checkGamePad, 15);}
|
|
}
|
|
|
|
function gamepadHandler(event, connecting) {
|
|
|
|
gamepad = event.gamepad;
|
|
if (typeof gamepad === `undefined`) {
|
|
isRunning = false;
|
|
gamePadId = 0;
|
|
console.warn("GamePad kann nicht gefunden werden");
|
|
return;
|
|
}
|
|
|
|
if (connecting) {
|
|
console.log("GamePad " + event.gamepad.index + " connected");
|
|
gamePadId = gamepad.index;
|
|
isRunning = true;
|
|
setTimeout(checkGamePad, 20);
|
|
} else {
|
|
console.log("GamePad " +gamePadId +" disconnected");
|
|
isRunning = false;
|
|
gamePadId = 0;
|
|
}
|
|
}
|
|
|
|
|
|
window.addEventListener("gamepadconnected", function (e) { gamepadHandler(e, true); }, false);
|
|
window.addEventListener("gamepaddisconnected", function (e) { gamepadHandler(e, false); }, false);
|
|
|
|
document.addEventListener("touchstart", e => { console.log("TouchStart"); }) |