Class: EventMachine::SerialPort

Inherits:
StreamObject
  • Object
show all
Defined in:
lib/em-rubyserial.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(io) ⇒ SerialPort

Returns a new instance of SerialPort.



56
57
58
# File 'lib/em-rubyserial.rb', line 56

def initialize(io)
  super
end

Class Method Details

.open(dev, baud, databits) ⇒ Object



46
47
48
49
50
51
52
53
54
# File 'lib/em-rubyserial.rb', line 46

def self.open(dev, baud, databits)
  serialport = ::Serial.new(dev, baud, databits)
  if RUBY_PLATFORM == "java"
    io = FFI::FileDescriptorIO.new(serialport.instance_variable_get(:@fd).to_i)
  else
    io = IO.new(serialport.instance_variable_get(:@fd), 'r+')
  end
  self.new(io)
end

Instance Method Details

#eventable_readObject



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/em-rubyserial.rb', line 60

def eventable_read
  @last_activity = Reactor.instance.current_loop_time
  begin
    if io.respond_to?(:read_nonblock)
      10.times {
        data = io.read_nonblock(4096)
        EventMachine::event_callback uuid, ConnectionData, data
      }
    else
      data = io.sysread(4096)
      EventMachine::event_callback uuid, ConnectionData, data
    end
  rescue Errno::EAGAIN, Errno::EWOULDBLOCK, EOFError
    # no-op
  rescue Errno::ECONNRESET, Errno::ECONNREFUSED
    @close_scheduled = true
    EventMachine::event_callback uuid, ConnectionUnbound, nil
  end
end