Sha256: 89e802b64bcd9f8d36414789f2c26fa4dde61c7a6b8923c7ffe68ce88c6126c9

Contents?: true

Size: 1.48 KB

Versions: 3

Compression:

Stored size: 1.48 KB

Contents

module Subduino

  class ArdIO
    class << self

      def sp
        @sp ||= SerialPort.new(Arduino.find_usb, BAUDS) #, DATA_BITS, DATA_STOP, parity)
        # @sp.read_timeout = 10;# @sp.write_timeout = 10
      end

      def read(&proc)
        Log.info "[USB] Starting USB Connect..." + sp.get_modem_params.map { |k,v| "#{k}: #{v}" }.join(" ")
        Log.info "[USB] Read Timeout #{sp.read_timeout}" # {sp.write_timeout}"

        #
        # Read I/O
        #
        @iothread ||= Thread.new do
          Thread.current.abort_on_exception = false
          icache = []

          loop do
            begin
              while char = sp.getc
                if char !~ /\n|\r/
                  icache << char
                else
                  data = icache.join(""); icache = []
                  if data =~ /:/
                    proc.call(data)
                    Log.info "[SENSOR] #{data}"
                  else
                    proc.call(data) unless data.empty?
                    # Log.info "[INPUT] Done."
                  end
                end
              end
              sleep 1
            rescue => e
              Log.error "[USB] Error #{e}"
              Log.error e.backtrace.join("\n")
            end
          end
        end
      end

      def write(msg)
        Log.info "[IO  TX] #{msg}"
        txt = msg.gsub("\n", "\r")
        txt += "\r" unless txt =~ /^\\r/
        sp.write(txt)
      end

      def stop!
        sp.close
      end

    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
subduino-0.2.1 lib/subduino/ard_io.rb
subduino-0.2.0 lib/subduino/ard_io.rb
subduino-0.1.0 lib/subduino/ard_io.rb