pbosetti-rubitlash 0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+