lib/gps_pvt/util.rb in gps_pvt-0.7.2 vs lib/gps_pvt/util.rb in gps_pvt-0.8.0
- old
+ new
@@ -1,7 +1,39 @@
-require 'open-uri'
require 'tempfile'
require 'uri'
+
+proc{
+ # port[:baudrate], baudrate default is 115200
+ Serial.class_eval{
+ const_set(:SPEC,
+ if RubySerial::ON_WINDOWS then
+ %r{^(?:\\\\.\\)?(COM\d+)(?::(\d+))?$}
+ elsif RubySerial::ON_LINUX then
+ %r{^(/dev/tty[^:]+)(?::(\d+))?$}
+ else
+ nil
+ end)
+ }
+ Serial.class_eval{
+ read_orig = instance_method(:read)
+ define_method(:read){|len|
+ buf = ''
+ f = read_orig.bind(self)
+ buf += f.call(len - buf.size) while buf.size < len
+ buf
+ }
+ def eof?; false; end
+ }
+ Kernel.instance_eval{
+ open_orig = method(:open)
+ define_method(:open){|*args, &b|
+ return open_orig.call(*args, &b) unless Serial::SPEC =~ args[0]
+ Serial::new($1, $2 ? $2.to_i : 115200)
+ }
+ }
+}.call if require 'rubyserial'
+
+require 'open-uri'
module GPS_PVT
module Util
class << self
def inflate(src, type = :gz)