class P1MeterReader::DataParsing::StreamSplitter

Public Class Methods

new(message_start, input: serial_port) click to toggle source
# File lib/p1_meter_reader/data_parsing/stream_splitter.rb, line 6
def initialize(message_start, input: serial_port)
  @message_start = message_start
  @stream = input.each_line
end

Public Instance Methods

read() click to toggle source
# File lib/p1_meter_reader/data_parsing/stream_splitter.rb, line 11
def read
  while (@stream.peek).strip != @message_start
    @stream.next
  end

  result = ""

  loop do
    line = @stream.next
    result << line

    return result if line.strip == "!"
  end
end

Private Instance Methods

serial_port() click to toggle source
# File lib/p1_meter_reader/data_parsing/stream_splitter.rb, line 27
def serial_port
  serial_port = SerialPort.new("/dev/ttyUSB0", 9600)
  serial_port.data_bits = 7
  serial_port.stop_bits = 1
  serial_port.parity = SerialPort::EVEN

  serial_port
end