Class: KuroRs::KuroRs
- Inherits:
-
Object
- Object
- KuroRs::KuroRs
- Defined in:
- lib/kuro-rs/main.rb
Instance Attribute Summary collapse
-
#verbose ⇒ Object
Returns the value of attribute verbose.
Instance Method Summary collapse
- #busy? ⇒ Boolean
- #close ⇒ Object
-
#initialize(device_name) ⇒ KuroRs
constructor
A new instance of KuroRs.
- #read ⇒ Object
- #serialport ⇒ Object
- #write(hex_str) ⇒ Object
Constructor Details
#initialize(device_name) ⇒ KuroRs
Returns a new instance of KuroRs.
29 30 31 32 33 34 35 36 37 38 |
# File 'lib/kuro-rs/main.rb', line 29 def initialize(device_name) @device_name = device_name @verbose = false @busy = false if !File.exists? device_name.to_s device_name = "nil" if device_name.to_s.size < 1 raise Error.new "device not found (#{device_name})" end @sp = SerialPort.new(device_name, 115200, 8, 1, 0) end |
Instance Attribute Details
#verbose ⇒ Object
Returns the value of attribute verbose.
19 20 21 |
# File 'lib/kuro-rs/main.rb', line 19 def verbose @verbose end |
Instance Method Details
#busy? ⇒ Boolean
21 22 23 |
# File 'lib/kuro-rs/main.rb', line 21 def busy? @busy end |
#close ⇒ Object
40 41 42 |
# File 'lib/kuro-rs/main.rb', line 40 def close @sp.close end |
#read ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/kuro-rs/main.rb', line 44 def read @busy = true begin ## request reading mode @sp.write 'c' @sp.write 'r' puts 'read mode' if @verbose raise Error.new 'response is not "Y"' unless @sp.getc.chr == 'Y' timeout(15) do while @sp.getc.chr != 'S' do end end ## read data puts 'reading data..' if @verbose data = (0...240).to_a.map{|i| @sp.getc} # read 240 Bytes raise Error.new 'response is not "E"' unless @sp.getc.chr == 'E' rescue Error, StandardError => e @busy = false raise Error.new e rescue Timeout::Error @busy = false raise Error.new 'no response' end ## hex dump hex_str = data.map{|i| h = i.to_s(16) h = "0#{h}" if h.size < 2 h }.join('') @busy = false return hex_str end |
#serialport ⇒ Object
25 26 27 |
# File 'lib/kuro-rs/main.rb', line 25 def serialport @sp end |
#write(hex_str) ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/kuro-rs/main.rb', line 78 def write(hex_str) @busy = true ## request writing mode begin @sp.write 'c' @sp.write 't' raise Error.new 'response is not "Y"' unless @sp.getc.chr == 'Y' @sp.write '1' raise Error.new 'response is not "Y"' unless @sp.getc.chr == 'Y' rescue Error, StandardError => e @busy = false raise Error.new e end ## write hex string cmd_arr = [] arr = hex_str.split('') 240.times do cmd_arr << ((arr.shift || '0') + (arr.shift || '0')).hex end puts "command size:#{hex_str.size/2}(Bytes)" if @verbose puts 'writing data...' if @verbose begin cmd_arr.each{|c| @sp.putc c } raise Error.new 'response is not E' unless @sp.getc.chr == 'E' @busy = false rescue => e @busy = false raise Error.new e end end |