OTO-Ohshima Tamashima Observatory-  Index  Search  Changes  Login

RubyでTheSky6を操る

RubyでTheSky6を通して望遠鏡を制御するには(2009.01.19)

ミードのLX-200R望遠鏡の制御はもっぱらTheSky6で行っているが、TheSky6のHelpにはいくつもの言語からスクリプトによる制御が可能であると書かれてあり、喜んだ。しかし、SoftwareBisqueのユーザーサポートサイトにはVB Scriptによる例がたっぷりと書かれてはあるが、その他の言語の場合がちっとも書かれていない。具体的にその他の言語でどうやったらよいのか。  その後Rubyの勉強をしていて、その方法がやっとわかった。ここでは、RubyとそのWIN32OLEライブラリ (Ruby-1.8以降では標準添付されている)を使って望遠鏡を制御する実例を示す。

要は、TheSky6はWindowsのCOM(OLE)オブジェクトというものを使って望遠鏡を制御していて、そのCOM(OLE)というものは、どんな言語からでも利用できるようになっているようだ。 TheSky6はそのAPIを公開しているので、使いやすくなっているのである。 Rubyでは、Windows用のCOMオブジェクトを使うライブラリWIN32OLEが利用できるので、 それを使ってTheSky6を操作することにする。

なお、WIN32OLEライブラリそのものの使い方については、次のURLや

http://www.morijp.com/masarl/homepage3.nifty.com/masarl/article/ruby-win32ole.html
http://jp.rubyist.net/magazine/?0003-Win32OLE
書籍 「Rubyist Magazine出張版 Ruby on Windows」

が参考になる。

以下のrubyコードは、望遠鏡をジョグで10分角だけ南または北に移動させる操作を行うプログラムである。 TheSky6の望遠鏡シミュレータで動作を確認した。

#see http://www.morijp.com/masarl/homepage3.nifty.com/masarl/article/ruby-win32ole/excel-1.html
# tested on 20090119 with TheSkyTele6 and the Simulator by O.Ohshima
 
require 'win32ole'
 
class WIN32OLE
  @const_defined = Hash.new
  def WIN32OLE.new_with_const(prog_id, const_name_space)
    result = WIN32OLE.new(prog_id)
    unless @const_defined[const_name_space] then
      WIN32OLE.const_load(result, const_name_space)
      @const_defined[const_name_space] = true
    end
    return result
  end
end
  
module TheSkyTele
  def TheSkyTele.new()
    theskytele = WIN32OLE.new_with_const('TheSky6.RASCOMTele',  TheSkyTele)
#   prog_idの前半部"TheSky6."は、オブジェクトブラウザー上では"TheSky6Library"と表示
#  されているもの。後半の".RASCOMTele"は、オブジェクトブラウザーのクラス上では
#   "TheSkyRASCOMTele"と表示されているものに相当する
    return theskytele
  end
  def TheSkyTele.runDuring(&block)
    begin
      theskytele = new()
      block.call(theskytele)
    ensure
      theskytele.quit
    end
  end
end
 
theskytele = TheSkyTele.new()
#theskytele.jog(10.0, "South")
theskytele.jog(10.0, "North")

COM(OLE)の利用法を知る

 使いたいCOMオブジェクトをどのように使うかを知りたい時

(1)Excelを立ち上げる(以下はExcel2000での例)

(2)メニューバーの「ツール」→「マクロ」→「VisualBasicEditor」(以下VBEditor)を起動

(3)VBEditorのメニューバーの「ツール」→「参照設定」で参照可能なライブラリの中から使いたいライブラリを選んでチェックし、「OK」

(4)VBEditorのメニューバーの「表示」→「オブジェクトブラウザ」でオブジェクトブラウザのwindowを表示させる

(5)使いたいライブラリを選ぶと、クラスの一覧が表示されるので、調べたいクラスをマウスで指定するとメソッドやプロパティが右に表示される。

(6)調べたいメソッドやプロパティをマウスで指定すると、最下部に簡単な説明が表示される。


技術的な覚書きへ戻る

OTO-Ohshima Tamashima Observatory-トップへ戻る

2576
Last modified:2009/01/24 23:54:42
Keyword(s):
References:[RubyスクリプトでCCDSoftを操りCCDカメラを操作する] [技術的な覚書き]