GPSd with Ruby
GPSd
GPSd is a Linux daemon that can read and parse data from various GPS recievers, and it provides a standard interface for obtaining said data. GPSd provides JSON data over a socket connection in an easy to consume stream. In this example, I'm going to read the data with cool.io and parse it with Ruby bindings to yajl. Cool.io brings events like Node.js to Ruby with the simplicity of Sinatra. Yajl, on the other hand, is a streaming JSON parser that's fast and reliable.
First, install the required gems:
$ (sudo) gem install yajl-ruby $ (sudo) gem install cool.io
Code:
require 'rubygems'
require 'cool.io'
require 'yajl'
ADDR = '127.0.0.1'
PORT = 2947
print = lambda { |data| puts data.inspect }
parser = Yajl::Parser.new
parser.on_parse_complete = print
cool.io.connect ADDR, PORT do
    on_connect do
        puts "Connected"
        write "?WATCH={\"enable\":true,\"json\":true}"
    end
    on_read do |data|
        parser << data
    end
end
puts "Running"
cool.io.run
blog comments powered by Disqus