From 7a02d28b7821f6b703fef61cded7ec3a92115c09 Mon Sep 17 00:00:00 2001 From: cw wang Date: Thu, 9 Aug 2012 19:31:26 -0400 Subject: [PATCH 1/2] Movement keyboard control of gantry set current location as 0,0 button (and enter key) --- frontend/app.html | 17 ++++- frontend/js/app_mover.js | 139 +++++++++++++++++++++++++++++++++------ 2 files changed, 134 insertions(+), 22 deletions(-) diff --git a/frontend/app.html b/frontend/app.html index 9bf36398..efc6e6be 100644 --- a/frontend/app.html +++ b/frontend/app.html @@ -215,8 +215,13 @@ -
+
+
+ +
+
+
@@ -252,7 +257,15 @@
× Note! Set an offset by shift-clicking in the work area. -
+
+
+ × + Note! Shift-click arrow for finer movement. +
+
+ × + Note! Use keyboard arrow keys for movement and return key to set home. +
diff --git a/frontend/js/app_mover.js b/frontend/js/app_mover.js index b485b7c0..43389482 100644 --- a/frontend/js/app_mover.js +++ b/frontend/js/app_mover.js @@ -1,5 +1,7 @@ var gcode_coordinate_offset = undefined; +var lastclickX=0.0; +var lastclickY=0.0; function reset_offset() { $("#offset_area").hide(); @@ -57,22 +59,11 @@ $(document).ready(function(){ var offset = $(this).offset(); var x = (e.pageX - offset.left); var y = (e.pageY - offset.top); + lastclickX=x; + lastclickY=y; if(e.shiftKey) { - //// set offset - $("#offset_area").show(); - $("#offset_area").animate({ - opacity: 1.0, - left: x, - top: y, - width: 609-x, - height: 304-y - }, 200 ); - gcode_coordinate_offset = [x,y]; - var gcode = 'G10 L2 P1 X'+ 2*x + ' Y' + 2*y + '\nG55\n'; - send_gcode(gcode, "Offset set.", "Serial not connected."); - $(this).css('border', '1px dashed #aaaaaa'); - $("#offset_area").css('border', '1px dashed #ff0000'); + setHome(x,y); } else if (!gcode_coordinate_offset) { assemble_and_send_gcode(x,y); } else { @@ -204,20 +195,128 @@ $(document).ready(function(){ //// jog buttons $("#jog_up_btn").click(function(e) { - var gcode = 'G91\nG0Y-10F6000\nG90\n'; - send_gcode(gcode, "Moving Up ...", "Serial not connected.") + if(e.shiftKey) { + var gcode = 'G91\nG0Y-1F6000\nG90\n'; + lastclickY-=.5; + }else{ + var gcode = 'G91\nG0Y-10F6000\nG90\n'; + lastclickY-=5; + } + send_gcode(gcode, "Moving Up ...", "Serial not connected.") + }); $("#jog_left_btn").click(function(e) { - var gcode = 'G91\nG0X-10F6000\nG90\n'; + if(e.shiftKey) { + var gcode = 'G91\nG0X-1F6000\nG90\n'; + lastclickX-=.5; + }else{ + var gcode = 'G91\nG0X-10F6000\nG90\n'; + lastclickX-=5; + } send_gcode(gcode, "Moving Left ...", "Serial not connected.") }); $("#jog_right_btn").click(function(e) { - var gcode = 'G91\nG0X10F6000\nG90\n'; + if(e.shiftKey) { + var gcode = 'G91\nG0X1F6000\nG90\n'; + lastclickX+=.5; + }else{ + var gcode = 'G91\nG0X10F6000\nG90\n'; + lastclickX+=5; + } send_gcode(gcode, "Moving Right ...", "Serial not connected.") }); $("#jog_down_btn").click(function(e) { - var gcode = 'G91\nG0Y10F6000\nG90\n'; + if(e.shiftKey) { + var gcode = 'G91\nG0Y1F6000\nG90\n'; + lastclickY+=.5; + }else{ + var gcode = 'G91\nG0Y10F6000\nG90\n'; + lastclickY+=5; + } send_gcode(gcode, "Moving Down ...", "Serial not connected.") }); - + +//keyboard arrows to move + $("body").keydown(function(e) { + // 37 - left + // 38 - up + // 39 - right + // 40 - down + + if (e.which==38) { + if(e.shiftKey) { + var gcode = 'G91\nG0Y-1F6000\nG90\n'; + lastclickY-=.5; + }else{ + var gcode = 'G91\nG0Y-10F6000\nG90\n'; + lastclickY-=5; + } + send_gcode(gcode, "Moving Up ...", "Serial not connected.") + } + else if(e.which==37) { + if(e.shiftKey) { + var gcode = 'G91\nG0X-1F6000\nG90\n'; + lastclickX-=.5; + }else{ + var gcode = 'G91\nG0X-10F6000\nG90\n'; + lastclickX-=5; + } + send_gcode(gcode, "Moving Left ...", "Serial not connected.") + } + else if (e.which==39) { + if(e.shiftKey) { + var gcode = 'G91\nG0X1F6000\nG90\n'; + lastclickX+=.5; + }else{ + var gcode = 'G91\nG0X10F6000\nG90\n'; + lastclickX+=5; + } + send_gcode(gcode, "Moving Right ...", "Serial not connected.") + } + else if(e.which==40) { + if(e.shiftKey) { + var gcode = 'G91\nG0Y1F6000\nG90\n'; + lastclickY+=.5; + }else{ + var gcode = 'G91\nG0Y10F6000\nG90\n'; + lastclickY+=5; + } + send_gcode(gcode, "Moving Down ...", "Serial not connected.") + } + else if(e.which==13) { + setHome(lastclickX,lastclickY); + + } + }); + + //set current location as 0,0 + $("#set_here_00").click(function(e) { + var offset = $(this).offset(); + var x = lastclickX; + var y = lastclickY; + + setHome(x,y); + + + return false; + }); + +function setHome(x,y){ + //// set offset + $("#offset_area").show(); + $("#offset_area").animate({ + opacity: 1.0, + left: x, + top: y, + width: 609-x, + height: 304-y + }, 200 ); + gcode_coordinate_offset = [x,y]; + var gcode = 'G10 L2 P1 X'+ 2*x + ' Y' + 2*y + '\nG55\n'; + send_gcode(gcode, "Offset set.", "Serial not connected."); + $(this).css('border', '1px dashed #aaaaaa'); + $("#offset_area").css('border', '1px dashed #ff0000'); + +} + }); // ready From f7bc106120008b9c946715f61649f9b6da55e8a5 Mon Sep 17 00:00:00 2001 From: cw wang Date: Fri, 10 Aug 2012 17:08:35 -0400 Subject: [PATCH 2/2] More direct control display gantry position on cutting area window text box to enter desired 0,0 position --- frontend/app.html | 18 ++++-- frontend/js/app.js | 60 +++++++++++++++++++- frontend/js/app_mover.js | 118 ++++++++++++++++++++------------------- 3 files changed, 132 insertions(+), 64 deletions(-) diff --git a/frontend/app.html b/frontend/app.html index efc6e6be..c81e6964 100644 --- a/frontend/app.html +++ b/frontend/app.html @@ -210,16 +210,23 @@
-
-
-
- +
+
+ Set(0,0) + +
- +
@@ -241,6 +248,7 @@
+
diff --git a/frontend/js/app.js b/frontend/js/app.js index 58ab342c..02d00130 100644 --- a/frontend/js/app.js +++ b/frontend/js/app.js @@ -52,6 +52,46 @@ function send_gcode(gcode, success_msg, error_msg) { }); } +function set00(x,y){ + //set offset + $("#offset_area").show(); + $("#offset_area").animate({ + opacity: 1.0, + left: x, + top: y, + width: 609-x, + height: 304-y + }, 200 ); + gcode_coordinate_offset = [x,y]; + var gcode = 'G10 L2 P1 X'+ 2.0*x + ' Y' + 2.0*y + '\nG55\n'; + send_gcode(gcode, "Offset set.", "Serial not connected."); + $(this).css('border', '1px dashed #aaaaaa'); + $("#offset_area").css('border', '1px dashed #ff0000'); + +} + +function show_position(x,y){ + $("#current_position").show(); + $("#current_position").animate({ + opacity: 1.0, + left: x, + top: y, + width: 10, + height: 10 + }, 200 ); + $("#current_position").css('border', '1px 0 0 1px solid #aaaaaa'); + + $("#current_position-b").show(); + $("#current_position-b").animate({ + opacity: 1.0, + left: x-10, + top: y-10, + width: 10, + height: 10 + }, 200 ); + $("#current_position-b").css('border', '0 1px 1px 0 solid #aaaaaa'); + +} var queue_num_index = 1; function save_and_add_to_job_queue(name, gcode) { @@ -340,7 +380,7 @@ $(document).ready(function(){ send_gcode(gcode, "Stopping ...", "Serial not connected."); var delayedresume = setTimeout(function() { var gcode = '~\nG0X0Y0F20000\n' // ~ is resume char - $().uxmessage('notice', gcode.replace(/\n/g, '
')); + $().uxmessage('notice', gcode.replace(/\n/g, 'show_pos
')); send_gcode(gcode, "Resetting ...", "Serial not connected."); }, 1000); e.preventDefault(); @@ -362,6 +402,24 @@ $(document).ready(function(){ // also reset offset reset_offset(); } + // show_position($("#cutting_area").offset.left,$("#cutting_area").offset.top); + if (gcode_coordinate_offset) { + var cutting= $("#cutting_area").offset(); + var offset = $("#offset_area").offset(); + show_position(offset.left-cutting.left,offset.top-cutting.top); + currentX=offset.left-cutting.left; + currentY=offset.top-cutting.top; + $('#x_field').val(currentX*2.0); + $('#y_field').val(currentY*2.0); + }else{ + var cutting= $("#cutting_area").offset(); + show_position(0,0); + currentX=0; + currentY=0; + $('#x_field').val(currentX*2.0); + $('#y_field').val(currentY*2.0); + } + gcode = 'G0X0Y0F16000\n' // $().uxmessage('notice', gcode); send_gcode(gcode, "Going to origin ...", "Serial not connected."); diff --git a/frontend/js/app_mover.js b/frontend/js/app_mover.js index 43389482..1cfe608c 100644 --- a/frontend/js/app_mover.js +++ b/frontend/js/app_mover.js @@ -1,16 +1,23 @@ var gcode_coordinate_offset = undefined; -var lastclickX=0.0; -var lastclickY=0.0; +var currentX=0.0; +var currentY=0.0; function reset_offset() { $("#offset_area").hide(); $('#offset_area').css({'opacity':0.0, left:0, top:0}); + $('#current_position').css({'opacity':0.0, left:0, top:0}); + $('#current_position-b').css({'opacity':0.0, left:0, top:0}); gcode_coordinate_offset = undefined; $("#cutting_area").css('border', '1px dashed #ff0000'); - $("#offset_area").css('border', '1px dashed #aaaaaa'); + $("#offset_area").css('border', '1px dashed #aaaaaa'); + send_gcode('G54\n', "Offset reset.", "Serial not connected."); $('#coordinates_info').text(''); + $('#x_field').val(0); + $('#y_field').val(0); + currentX=0.0; + currentY=0.0; } @@ -59,13 +66,18 @@ $(document).ready(function(){ var offset = $(this).offset(); var x = (e.pageX - offset.left); var y = (e.pageY - offset.top); - lastclickX=x; - lastclickY=y; + currentX=x; + currentY=y; + + $('#x_field').val(x*2.0); + $('#y_field').val(y*2.0); if(e.shiftKey) { - setHome(x,y); + set00(x,y); } else if (!gcode_coordinate_offset) { assemble_and_send_gcode(x,y); + show_position(x,y); + } else { var pos = $("#offset_area").position() if ((x < pos.left) || (y < pos.top)) { @@ -73,6 +85,7 @@ $(document).ready(function(){ reset_offset(); } } + return false; }); @@ -124,7 +137,18 @@ $(document).ready(function(){ if(!e.shiftKey) { var offset = $(this).offset(); var x = (e.pageX - offset.left); - var y = (e.pageY - offset.top); + var y = (e.pageY - offset.top); + + var cuttingAreaOffset = $("#cutting_area").offset(); + + currentX=(e.pageX - cuttingAreaOffset.left); + currentY=(e.pageY - cuttingAreaOffset.top);; + + $('#x_field').val(currentX*2.0); + $('#y_field').val(currentY*2.0); + + show_position(currentX,currentY); + assemble_and_send_gcode(x,y); return false } @@ -197,10 +221,10 @@ $(document).ready(function(){ $("#jog_up_btn").click(function(e) { if(e.shiftKey) { var gcode = 'G91\nG0Y-1F6000\nG90\n'; - lastclickY-=.5; + currentY-=.5; }else{ var gcode = 'G91\nG0Y-10F6000\nG90\n'; - lastclickY-=5; + currentY-=5; } send_gcode(gcode, "Moving Up ...", "Serial not connected.") @@ -208,115 +232,93 @@ $(document).ready(function(){ $("#jog_left_btn").click(function(e) { if(e.shiftKey) { var gcode = 'G91\nG0X-1F6000\nG90\n'; - lastclickX-=.5; + currentX-=.5; }else{ var gcode = 'G91\nG0X-10F6000\nG90\n'; - lastclickX-=5; + currentX-=5; } send_gcode(gcode, "Moving Left ...", "Serial not connected.") }); $("#jog_right_btn").click(function(e) { if(e.shiftKey) { var gcode = 'G91\nG0X1F6000\nG90\n'; - lastclickX+=.5; + currentX+=.5; }else{ var gcode = 'G91\nG0X10F6000\nG90\n'; - lastclickX+=5; + currentX+=5; } send_gcode(gcode, "Moving Right ...", "Serial not connected.") }); $("#jog_down_btn").click(function(e) { if(e.shiftKey) { var gcode = 'G91\nG0Y1F6000\nG90\n'; - lastclickY+=.5; + currentY+=.5; }else{ var gcode = 'G91\nG0Y10F6000\nG90\n'; - lastclickY+=5; + currentY+=5; } send_gcode(gcode, "Moving Down ...", "Serial not connected.") }); //keyboard arrows to move $("body").keydown(function(e) { - // 37 - left - // 38 - up - // 39 - right - // 40 - down - if (e.which==38) { + if (e.which==38) {// 38 - up if(e.shiftKey) { var gcode = 'G91\nG0Y-1F6000\nG90\n'; - lastclickY-=.5; + currentY-=.5; }else{ var gcode = 'G91\nG0Y-10F6000\nG90\n'; - lastclickY-=5; + currentY-=5; } send_gcode(gcode, "Moving Up ...", "Serial not connected.") } - else if(e.which==37) { + else if(e.which==37) {// 37 - left if(e.shiftKey) { var gcode = 'G91\nG0X-1F6000\nG90\n'; - lastclickX-=.5; + currentX-=.5; }else{ var gcode = 'G91\nG0X-10F6000\nG90\n'; - lastclickX-=5; + currentX-=5; } send_gcode(gcode, "Moving Left ...", "Serial not connected.") } - else if (e.which==39) { + else if (e.which==39) {// 39 - right + if(e.shiftKey) { var gcode = 'G91\nG0X1F6000\nG90\n'; - lastclickX+=.5; + currentX+=.5; }else{ var gcode = 'G91\nG0X10F6000\nG90\n'; - lastclickX+=5; + currentX+=5; } send_gcode(gcode, "Moving Right ...", "Serial not connected.") } - else if(e.which==40) { + else if(e.which==40) {// 40 - down if(e.shiftKey) { var gcode = 'G91\nG0Y1F6000\nG90\n'; - lastclickY+=.5; + currentY+=.5; }else{ var gcode = 'G91\nG0Y10F6000\nG90\n'; - lastclickY+=5; + currentY+=5; } send_gcode(gcode, "Moving Down ...", "Serial not connected.") } - else if(e.which==13) { - setHome(lastclickX,lastclickY); - + else if(e.which==13) { //enter + set00($('#x_field').val()*.5,$('#y_field').val()*.5); } + else return; + $('#x_field').val(currentX*2.0); + $('#y_field').val(currentY*2.0); + show_position(currentX,currentY); + }); //set current location as 0,0 $("#set_here_00").click(function(e) { - var offset = $(this).offset(); - var x = lastclickX; - var y = lastclickY; - - setHome(x,y); - - - return false; + set00($('#x_field').val()*.5,$('#y_field').val()*.5); }); -function setHome(x,y){ - //// set offset - $("#offset_area").show(); - $("#offset_area").animate({ - opacity: 1.0, - left: x, - top: y, - width: 609-x, - height: 304-y - }, 200 ); - gcode_coordinate_offset = [x,y]; - var gcode = 'G10 L2 P1 X'+ 2*x + ' Y' + 2*y + '\nG55\n'; - send_gcode(gcode, "Offset set.", "Serial not connected."); - $(this).css('border', '1px dashed #aaaaaa'); - $("#offset_area").css('border', '1px dashed #ff0000'); -} }); // ready