pbosetti-rubitlash 0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/README.markdown +33 -0
  2. data/example/simple.rb +17 -0
  3. data/lib/rubitlash.rb +68 -0
  4. metadata +65 -0
data/README.markdown ADDED
@@ -0,0 +1,33 @@
1
+ INTRODUCTION
2
+ ============
3
+ RuBitlash is a Ruby interface with the wonderful Bitlash library for Arduino.
4
+ [Bitlash](http://bitlash.net/) is an [Arduino](http://arduino.cc) library that allows direct interaction via serial port with the microcontroller.
5
+ Thanks to Bill Roy for writing it!
6
+
7
+ INSTALLATION
8
+ ============
9
+ First of all you have to [buy or own an Arduino](http://arduino.cc), then install on it Bitlash (v0.95a or later) following the instructions on [Bill Roy's site](http://bitlash.net/).
10
+
11
+ Then install RuBitlash gem and start playing with it:
12
+
13
+ > sudo gem install pbosetti-rubitlash --source=http://gems.github.com
14
+
15
+ USAGE
16
+ =====
17
+ I'm still writing few docs, but the library itself is quite short. Look at it to know how to use it.
18
+
19
+ EXAMPLE
20
+ =======
21
+
22
+ require "rubitlash"
23
+
24
+ bl = Bitlash.new("/dev/tty.usbserial-A6004aLr", 57600, false)
25
+ r = bl.talk "print free()"
26
+ puts "Bytes free: #{r}"
27
+ bl[:a] = 2
28
+ puts "a = #{bl[:a]}"
29
+ bl.talk "d13=1"
30
+ sleep 2
31
+ bl[:f] = bl.free
32
+ puts "f = #{bl[:f]}"
33
+ bl.close
data/example/simple.rb ADDED
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Created by Paolo Bosetti on 2009-07-02.
4
+ # Copyright (c) 2009 University of Trento. All rights
5
+ # reserved.
6
+ require "../lib/rubitlash"
7
+
8
+ bl = Bitlash.new("/dev/tty.usbserial-A6004aLr", 57600, false)
9
+ r = bl.talk "print free()"
10
+ puts "Bytes free: #{r}"
11
+ bl[:a] = 2
12
+ puts "a = #{bl[:a]}"
13
+ bl.talk "d13=1"
14
+ sleep 2
15
+ bl[:f] = bl.free
16
+ puts "f = #{bl[:f]}"
17
+ bl.close
data/lib/rubitlash.rb ADDED
@@ -0,0 +1,68 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Created by Paolo Bosetti on 2009-07-02.
4
+ # Copyright (c) 2009 University of Trento. All rights
5
+ # reserved.
6
+ require 'rubygems'
7
+ require "serialport"
8
+ require 'expect'
9
+ # sp = SerialPort.new("/dev/tty.usbserial-A6004aLr", 57600, 8, 1, SerialPort::NONE)
10
+ #
11
+ # sp.expect(/>\s/)
12
+ # sp.puts "print free()"
13
+ # sp.expect(/>\s/)
14
+ # sp.puts "a=10"
15
+ # sp.expect(/>\s/)
16
+ # sp.puts "print a"
17
+ # r = sp.expect(/>\s/)[0]
18
+ # r =~ /\n\r(.*)\n\r/
19
+ # p $1
20
+ #
21
+ # sp.close
22
+
23
+ class Bitlash
24
+ PROMPT = ">\s"
25
+ attr_accessor :port_addr
26
+ attr_reader :port, :baud
27
+ def initialize(port_addr, baud=57600, verbose=false, name="Bitflash##{(rand*1000).to_i}")
28
+ @port_addr, @baud, @name = port_addr, baud, name
29
+ self.verbose = verbose
30
+ self.open
31
+ end
32
+
33
+ def open
34
+ @port = SerialPort.new(@port_addr, 57600, 8, 1, SerialPort::NONE)
35
+ @port.expect(/>\s/)
36
+ end
37
+
38
+ def close; @port.close; end
39
+
40
+ def verbose; $expect_verbose; end
41
+
42
+ def verbose=(bool); $expect_verbose=bool; end
43
+
44
+ def talk(string)
45
+ @port.puts string
46
+ reply = @port.expect(/#{PROMPT}/)[0]
47
+ reply =~ /(.*)\n\r(.*)\n\r/
48
+ return $2
49
+ end
50
+
51
+ def [](var)
52
+ self.talk "print #{var.to_s}"
53
+ end
54
+
55
+ def []=(var,value)
56
+ self.talk "#{var.to_s}=#{value.to_i}"
57
+ end
58
+
59
+ def macro(name,cmd)
60
+ self.talk "#{name}:=\"#{cmd}\""
61
+ end
62
+
63
+ def method_missing(m, *args)
64
+ cmd = args.size > 0 ? "print #{m.to_s}(#{args * ','})" : "print #{m.to_s}"
65
+ self.talk(cmd)
66
+ end
67
+
68
+ end
metadata ADDED
@@ -0,0 +1,65 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pbosetti-rubitlash
3
+ version: !ruby/object:Gem::Version
4
+ version: "0.1"
5
+ platform: ruby
6
+ authors:
7
+ - Paolo Bosetti
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-07-03 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: ruby-serialport
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 0.6.0
24
+ version:
25
+ description: Rubitlash is a Ruby interface with Bitlash for Arduino
26
+ email: paolo.bosetti@me.com
27
+ executables: []
28
+
29
+ extensions: []
30
+
31
+ extra_rdoc_files: []
32
+
33
+ files:
34
+ - README.markdown
35
+ - lib/rubitlash.rb
36
+ - example/simple.rb
37
+ has_rdoc: true
38
+ homepage: http://github.com/pbosetti/rubitlash
39
+ post_install_message:
40
+ rdoc_options:
41
+ - --inline-source
42
+ - --charset=UTF-8
43
+ require_paths:
44
+ - lib
45
+ required_ruby_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: "0"
50
+ version:
51
+ required_rubygems_version: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: "0"
56
+ version:
57
+ requirements: []
58
+
59
+ rubyforge_project: rubitlash
60
+ rubygems_version: 1.2.0
61
+ signing_key:
62
+ specification_version: 2
63
+ summary: Rubitlash is a Ruby interface with Bitlash for Arduino
64
+ test_files: []
65
+