f8g

USB-GPSRubyで使ってみる。Ruby初めて使った。

require 'Win32API'
class Gs61Usb
    @@dll = 'gs61dll'
    def open(errCode)
        Win32API.new(@@dll, 'gs61usb_open', %w(p), 'i').call(errCode)
    end
    def close(hUsb)
        Win32API.new(@@dll, 'gs61usb_close', %w(i), 'i').call(hUsb)
    end
    def read(hUsb, buf, readLen, nBytesRead)
        Win32API.new(@@dll, 'gs61usb_read', %w(i p l p), 'i').call(hUsb, buf, readLen, nBytesRead)
    end
    def write(hUsb, buf, writeLen, nBytesWrite)
        Win32API.new(@@dll, 'gs61usb_write', %w(i p l p), 'i').call(hUsb, buf, writeLen, nBytesWrite)
    end
    def writeRtcm(hUsb, buf, writeLen, nBytesWrite)
        Win32API.new(@@dll, 'gs61usb_write_rtcm', %w(i p l p), 'i').call(hUsb, buf, writeLen, nBytesWrite)
    end
    def txbufClear(hUsb)
        Win32API.new(@@dll, 'gs61usb_txbuf_clear', %w(i), 'i').call(hUsb)
    end
    def getVersion
        Win32API.new(@@dll, 'gs61usb_get_version', nil, 'i').call()
    end
end

gs = Gs61Usb.new
p "version: #{gs.getVersion}"

h = gs.open(" "*100)
while h < 0
    h = gs.open(" "*100)
    sleep(0.5)
end
p h

Cygwin

$ ruby test.rb
"version: 105"
288096

ASR

$ cscript test.rb
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

"version: 105"
1399992

mswin32

$ c:/ruby/bin/ruby test.rb
"version: 105"
366536

なんかHandleの値違うけどいいのかな。っていうかこれがなんなのか分からない。アドレスとか? それ以前に、なんでRubyの環境が色々あるんだ?