Advertisement
Guest User

Untitled

a guest
Dec 10th, 2016
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.60 KB | None | 0 0
  1. /*
  2. This requires nodejs to run
  3. install
  4. npm install terminal-kit
  5. npm install superagent
  6.  
  7. run
  8. node axidraw-manual-control.js
  9.  
  10. Keys
  11. left, right, up, down -> control pen position
  12. + , - -> control movement increments
  13. a , z -> control pen height
  14. */
  15.  
  16. var term = require( 'terminal-kit' ).terminal ;
  17. var request = require('superagent');
  18.  
  19. // go Home
  20.  
  21. request
  22. .put('localhost:4242/v1/pen')
  23. .send({ state: 0})
  24. .end(function(err, res){});
  25.  
  26. request
  27. .put('localhost:4242/v1/pen')
  28. .send({ x: 0, y: 0 })
  29. .set('Accept', 'application/json')
  30. .end(function(err, res){});
  31.  
  32.  
  33. // axidraw width: 29.9cm
  34. var canvasWidth = 29.9;
  35. // axidraw height 21.6
  36. var canvasHeight = 21.6;
  37. var x = 0;
  38. var y = 0;
  39. var increment = 30;
  40. var penHeight = 0;
  41.  
  42. // applys increments in mm
  43. function applyIncrement(increment, direction) {
  44. var result = 0;
  45. if(direction === 'x'){
  46. result = increment * canvasWidth / 100 ;
  47. } else if(direction === 'y') {
  48. result = increment * canvasHeight / 100;
  49. }
  50. if( result < 0) result = 0;
  51. if(result > 100) result = 100;
  52. return result;
  53. }
  54.  
  55. term.grabInput() ;
  56.  
  57. term.on( 'key' , function( name , matches , data ) {
  58. term.clear() ;
  59. // console.log( "'key' event:" , name ) ;
  60. if(name === '0') {
  61. x = 0;
  62. y = 0;
  63. }
  64. if(name === 'RIGHT') {
  65. x += applyIncrement(increment, 'x');
  66. }
  67. else if(name === 'LEFT') {
  68. x -= applyIncrement(increment, 'x');
  69. }
  70. else if(name === 'DOWN') {
  71. y += applyIncrement(increment, 'y');
  72. }
  73. else if(name === 'UP') {
  74. y -= applyIncrement(increment, 'y');
  75. }
  76. else if(name === '+') {
  77. if (increment < 1) {
  78. increment += 0.1;
  79. }else {
  80. increment += 1;
  81. }
  82. term.green( 'increment: ' + increment + "% \n") ;
  83. }
  84. else if(name === '-') {
  85. if(increment > 0) {
  86. if (increment <= 1) {
  87. increment -= 0.1;
  88. }else {
  89. increment -= 1;
  90. }
  91. term.green( 'increment: ' + increment + "%\n") ;
  92. }
  93. }
  94. else if(name === 'a' || name === 'z'){
  95. if(name === 'a') {
  96. if(penHeight < 1) {
  97. penHeight += 0.05;
  98. }
  99. }
  100. else if(name === 'z') {
  101. if(penHeight > 0) {
  102. penHeight -= 0.05;
  103. }
  104. }
  105. request
  106. .put('localhost:4242/v1/pen')
  107. .send({ state: penHeight})
  108. .end(function(err, res){});
  109. term.green( 'penHeight: ' + penHeight.toFixed(2) + "\n") ;
  110. }
  111.  
  112. request
  113. .put('localhost:4242/v1/pen')
  114. .send({ x: x, y: y})
  115. .end(function(err, res){
  116. term.green( 'x: ' + (x * canvasWidth / 100).toFixed(2) +'cm y: ' + (y * canvasHeight / 100).toFixed(2) +"cm\n") ;
  117. });
  118. // Detect CTRL-C and exit 'manually'
  119. if ( name === 'CTRL_C' || name === 'q' ) { process.exit() ; }
  120. }) ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement