lots and lots of bugfixes after running on reals hardware for the first time
This commit is contained in:
225
testbench/echotest.rb
Normal file
225
testbench/echotest.rb
Normal file
@ -0,0 +1,225 @@
|
||||
require 'pp'
|
||||
require 'rubygems'
|
||||
require 'serialport'
|
||||
require 'png'
|
||||
|
||||
# Requires the gems serialport and png
|
||||
#
|
||||
# $ gem install ruby-serialport
|
||||
# $ gem install png
|
||||
|
||||
|
||||
@sp = SerialPort.new '/dev/tty.usbserial-A4001o6L', 19200
|
||||
|
||||
@canvas = PNG::Canvas.new(500,500)
|
||||
@x = 0
|
||||
@y = 0
|
||||
@ready_for_command = true
|
||||
@last_byte = Time.now
|
||||
|
||||
@input = ''
|
||||
|
||||
@step_count = 0
|
||||
|
||||
Thread.new do
|
||||
step_mode = false
|
||||
@sp.each_byte do |byte|
|
||||
#puts byte.chr
|
||||
|
||||
@last_byte = Time.now
|
||||
@input << byte.chr
|
||||
if byte == 126 # ('~')
|
||||
step_mode = true
|
||||
@input << '[step mode on]'
|
||||
else
|
||||
if step_mode
|
||||
@step_count += 1
|
||||
if byte == 10
|
||||
@input << '[step mode off]'
|
||||
step_mode = false
|
||||
else
|
||||
step = byte-33
|
||||
puts @step_count
|
||||
if (step & 1) != 0
|
||||
if (step & 8) != 0
|
||||
puts "x-1"
|
||||
@x+=1
|
||||
else
|
||||
puts "x+1"
|
||||
@x-=1
|
||||
end
|
||||
end
|
||||
if (step & 2) != 0
|
||||
if (step & 16) != 0
|
||||
puts "y-1"
|
||||
@y+=1
|
||||
else
|
||||
puts "y+1"
|
||||
@y-=1
|
||||
end
|
||||
end
|
||||
end
|
||||
else
|
||||
if byte == 62 # '>'
|
||||
@ready_for_command = true
|
||||
end
|
||||
end
|
||||
end
|
||||
@canvas[250-@x,250-@y] = PNG::Color::Black
|
||||
end
|
||||
end
|
||||
|
||||
def send_command(command)
|
||||
while !@ready_for_command do
|
||||
sleep(1)
|
||||
puts "Processing ..."
|
||||
if (Time.now-@last_byte > 5)
|
||||
return
|
||||
end
|
||||
end
|
||||
sleep(0.5)
|
||||
puts "Sent: #{command}"
|
||||
@input << "[sent #{command}]"
|
||||
@sp.write("#{command}\r")
|
||||
@ready_for_command = false
|
||||
end
|
||||
|
||||
|
||||
blocks = <<-END.split("\n").map{|s|s.strip}
|
||||
N10 G00 Z100.000 G53
|
||||
N15 G00 X38.105 Y71.468 G53
|
||||
N20 Z2.0 F200 G53
|
||||
N25 G01 Z-0.2 G53
|
||||
N30 X37.177 Y74.406 G53
|
||||
N35 X37.779 Y74.698 G53
|
||||
N40 X41.077 Y76.347 G53
|
||||
N45 X42.177 Y73.719 G53
|
||||
N50 X40.304 Y72.173 G53
|
||||
N55 X39.548 Y73.873 G53
|
||||
N60 X38.638 Y73.152 G53
|
||||
N65 X39.153 Y71.915 G53
|
||||
N70 X38.105 Y71.468 G53
|
||||
N75 G00 Z2.0 G53
|
||||
N80 X37.266 Y75.042 G53
|
||||
N85 G01 Z-0.2 G53
|
||||
N90 X37.862 Y79.198 G53
|
||||
N95 G00 Z2.0 G53
|
||||
N100 X37.684 Y77.960 G53
|
||||
N105 G01 Z-0.2 G53
|
||||
N110 X42.718 Y77.239 G53
|
||||
N115 G00 Z2.0 G53
|
||||
N120 X42.895 Y78.476 G53
|
||||
N125 G01 Z-0.2 G53
|
||||
N130 X42.300 Y74.320 G53
|
||||
N135 G00 Z2.0 G53
|
||||
N140 X43.975 Y77.690 G53
|
||||
N145 G01 Z-0.2 G53
|
||||
N150 X43.425 Y77.769 G53
|
||||
N155 G00 Z2.0 G53
|
||||
N160 X44.604 Y78.161 G53
|
||||
N165 G01 Z-0.2 G53
|
||||
N170 G02 X43.975 Y77.690 I-0.550 J0.079 G53
|
||||
N175 G00 Z2.0 G53
|
||||
N180 X44.643 Y78.436 G53
|
||||
N185 G01 Z-0.2 G53
|
||||
N190 X44.604 Y78.161 G53
|
||||
N195 G00 Z2.0 G53
|
||||
N200 X44.172 Y79.065 G53
|
||||
N205 G01 Z-0.2 G53
|
||||
N210 G02 X44.643 Y78.436 I-0.079 J-0.550 G53
|
||||
N215 G00 Z2.0 G53
|
||||
N220 X43.622 Y79.144 G53
|
||||
N225 G01 Z-0.2 G53
|
||||
N230 X44.172 Y79.065 G53
|
||||
N235 G00 Z2.0 G53
|
||||
N240 X43.780 Y80.243 G53
|
||||
N245 G01 Z-0.2 G53
|
||||
N250 X43.622 Y79.144 G53
|
||||
N255 G00 Z2.0 G53
|
||||
N260 X44.880 Y80.086 G53
|
||||
N265 G01 Z-0.2 G53
|
||||
N270 X43.780 Y80.243 G53
|
||||
N275 G00 Z2.0 G53
|
||||
N280 X46.488 Y79.154 G53
|
||||
N285 G01 Z-0.2 G53
|
||||
N290 G02 X46.808 Y79.669 I1.265 J-0.427 G53
|
||||
N295 G02 X47.312 Y79.597 I0.229 J-0.198 G53
|
||||
N300 G02 X47.474 Y79.012 I-1.172 J-0.639 G53
|
||||
N305 G02 X47.452 Y78.454 I-2.606 J-0.179 G53
|
||||
N310 G02 X47.316 Y77.912 I-2.587 J0.362 G53
|
||||
N315 G02 X46.997 Y77.397 I-1.265 J0.427 G53
|
||||
N320 G02 X46.493 Y77.469 I-0.229 J0.198 G53
|
||||
N325 G02 X46.331 Y78.054 I1.172 J0.639 G53
|
||||
N330 G02 X46.352 Y78.612 I2.606 J0.179 G53
|
||||
N335 G02 X46.489 Y79.154 I2.587 J-0.362 G53
|
||||
N340 G00 Z2.0 G53
|
||||
N345 X45.370 Y77.630 G53
|
||||
N350 G01 Z-0.2 G53
|
||||
N355 X45.350 Y77.493 G53
|
||||
N360 G00 Z2.0 G53
|
||||
N365 X48.179 Y77.649 G53
|
||||
N370 G01 Z-0.2 G53
|
||||
N375 X48.218 Y77.924 G53
|
||||
N380 G02 X49.318 Y77.766 I0.550 J-0.079 G53
|
||||
N385 G01 X49.278 Y77.491 G53
|
||||
N390 G02 X48.179 Y77.649 I-0.550 J0.079 G53
|
||||
N395 G00 Z2.0 G53
|
||||
N400 X48.435 Y78.945 G53
|
||||
N405 G01 Z-0.2 G53
|
||||
N410 G03 X49.397 Y78.807 I0.481 J-0.069 G53
|
||||
N415 G01 X49.417 Y78.944 G53
|
||||
N420 G03 X48.454 Y79.082 I-0.481 J0.069 G53
|
||||
N425 G01 X48.435 Y78.945 G53
|
||||
N430 G00 Z2.0 G53
|
||||
N435 X50.379 Y79.297 G53
|
||||
N440 G01 Z-0.2 G53
|
||||
N445 X51.479 Y79.140 G53
|
||||
N450 G00 Z2.0 G53
|
||||
N455 X50.222 Y78.198 G53
|
||||
N460 G01 Z-0.2 G53
|
||||
N465 X50.379 Y79.297 G53
|
||||
N470 G00 Z2.0 G53
|
||||
N475 X50.772 Y78.119 G53
|
||||
N480 G01 Z-0.2 G53
|
||||
N485 X50.222 Y78.198 G53
|
||||
N490 G00 Z2.0 G53
|
||||
N495 X51.243 Y77.490 G53
|
||||
N500 G01 Z-0.2 G53
|
||||
N505 G03 X50.772 Y78.119 I-0.550 J0.079 G53
|
||||
N510 G00 Z2.0 G53
|
||||
N515 X51.203 Y77.215 G53
|
||||
N520 G01 Z-0.2 G53
|
||||
N525 X51.243 Y77.490 G53
|
||||
N530 G00 Z2.0 G53
|
||||
N535 X50.574 Y76.744 G53
|
||||
N540 G01 Z-0.2 G53
|
||||
N545 G03 X51.203 Y77.215 I0.079 J0.550 G53
|
||||
N550 G00 Z2.0 G53
|
||||
N555 X50.025 Y76.823 G53
|
||||
N560 G01 Z-0.2 G53
|
||||
N565 X50.574 Y76.744 G53
|
||||
N570 G00 Z2.0 G53
|
||||
N575 X53.049 Y76.389 G53
|
||||
N580 G01 Z-0.2 G53
|
||||
N585 X51.949 Y76.547 G53
|
||||
N590 X53.274 Y78.222 G53
|
||||
N595 G03 X53.327 Y78.454 I-0.218 J0.172 G53
|
||||
N600 G03 X52.262 Y78.607 I-0.552 J-0.061 G53
|
||||
N605 G00 Z2.0 G53
|
||||
N610 M30 G53
|
||||
END
|
||||
|
||||
blocks.each do |block|
|
||||
send_command(block)
|
||||
if (Time.now-@last_byte > 5)
|
||||
puts "Bailing, cause somethin' went wrong"
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
sleep(3);
|
||||
|
||||
PNG.new(@canvas).save("gcodetest.png")
|
||||
|
||||
puts @input
|
||||
`open gcodetest.png`
|
BIN
testbench/gcodetest.png
Normal file
BIN
testbench/gcodetest.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.0 KiB |
Reference in New Issue
Block a user