#require "rubygems" require "bundler/setup" require "active_record" require "serialport" require "state_pattern" MAX_BYTES = 100 project_root = File.dirname(File.absolute_path(__FILE__)) Dir.glob(project_root + "/app/models/*.rb").each{|f| require f} Dir.glob(project_root + "/app/helpers/SearchingForSyncState.rb").each{|f| require f} Dir.glob(project_root + "/app/helpers/*.rb").each{|f| require f} connection_details = YAML::load(File.open('config/database.yml')) ActiveRecord::Base.establish_connection(connection_details) def open_device begin # Open connection to serial port io_device = SerialPort.new("/dev/ttyUSB0", 9600, 7, 1, SerialPort::EVEN) # Make reading blocking io_device.read_timeout = 0 rescue p "Serialport Error - reverting to 'example_blurp.txt'" io_device = File.open("example_blurp.txt") # start at random place in the file io_device.seek(rand(1500), IO::SEEK_SET) end return io_device end def read_from(source) source.read(MAX_BYTES).gsub(/\r/, '') rescue "" end if __FILE__ == $0 source = open_device buffer = [] buffer = read_from(source) # # Process the received lines # sync = Synchronizer.new while (buffer && buffer.length > 0) # p "BUFFER: #{buffer}." buffer = sync.handle_byte_stream(buffer) buffer = buffer + read_from(source) end end #p sync