49 lines
1.2 KiB
Ruby
49 lines
1.2 KiB
Ruby
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/*.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/ttyUSB1", 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")
|
|
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
|