diff options
author | Jari Vetoniemi <jari.vetoniemi@indooratlas.com> | 2020-03-16 18:49:26 +0900 |
---|---|---|
committer | Jari Vetoniemi <jari.vetoniemi@indooratlas.com> | 2020-03-30 00:39:06 +0900 |
commit | fcbf63e62c627deae76c1b8cb8c0876c536ed811 (patch) | |
tree | 64cb17de3f41a2b6fef2368028fbd00349946994 /jni/ruby/ext/tk/sample/tkextlib/vu/oscilloscope.rb |
Fresh start
Diffstat (limited to 'jni/ruby/ext/tk/sample/tkextlib/vu/oscilloscope.rb')
-rw-r--r-- | jni/ruby/ext/tk/sample/tkextlib/vu/oscilloscope.rb | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/jni/ruby/ext/tk/sample/tkextlib/vu/oscilloscope.rb b/jni/ruby/ext/tk/sample/tkextlib/vu/oscilloscope.rb new file mode 100644 index 0000000..1efe13c --- /dev/null +++ b/jni/ruby/ext/tk/sample/tkextlib/vu/oscilloscope.rb @@ -0,0 +1,68 @@ +#!/usr/bin/env ruby + +require 'tk' +require 'tkextlib/vu/charts' + +#---USAGE +info = "...the heart of a Realtime Oscilloscope, where the PCIs +joystick port gives 4 digtal inputs and 4 analog 8 bit +values with an resolution of ~1 millisecond (!!!) +running Realtime Linux. +<p> creates DEMO.ps +<B1-Motion> see what happens" +puts info + +#---GEOMETRY +geo_fr = [10, 10, 210, 180] +geo_ch0 = [10, 10, 210, 90] +geo_ch1 = [10, 90, 210, 180] +geo_t1 = [15, 88] + +#---GUI +c = TkCanvas.new(:width=>220, :height=>190).pack(:fill=>:both, :expand=>true) + +#---background +TkcRectangle.new(c, geo_fr, :width=>4, :fill=>'aquamarine3', + :tags=>['osc', 'frbg']) + +#---channel 0 +ch0 = Tk::Vu::TkcStripchart.new(c, geo_ch0, + :fill=>'', :jumpscroll=>false, + :outline=>'', :scaleline=>'', + :stripline=>'cyan', :tags=>['osc', 'ch0']) + +#---channel 1 +ch1 = Tk::Vu::TkcStripchart.new(c, geo_ch1, + :fill=>'', :jumpscroll=>0, + :outline=>'', :scaleline=>'', + :stripline=>'red', :tags=>['osc', 'ch1']) + +#---frame +TkcRectangle.new(c, geo_fr, :width=>4, :tags=>['osc', 'frfg']) + +#---position +txt1 = TkcText.new(c, geo_t1, :text=>"B1-Motion: X:%X\tY:%Y", + :anchor=>:nw, :tags=>['osc', 'txt1']) + +#---BINDINGS +c.bind('B1-Motion', proc{|x, y, xx, yy| + ch0[:values] = x + ch1[:values] = y + txt1[:text] = "B1-Motion: X:#{xx}\tY:#{yy}" + }, '%x %y %X %Y') + +Tk.root.bind('v', proc{ + puts ch0[:values].join(' ') + puts ch0[:values].size + }) + +Tk.root.bind('p', proc{ + c.postscript(:file=>'DEMO.ps') + puts "DEMO.ps printed" + }) + +Tk.root.bind('q', proc{exit}) + +##################### + +Tk.mainloop |