Satk Version3への挑戦
Update 2001.12.28
- 目標は、「冷却CCDカメラのシャッターを切る」こと!!
このページは、SatkをVer2.xから3.0とするするまでのメモ的記録です。
- Satkの開発目的の再確認
- CCDカメラの制御
- 改版の経過
- 改版中に作成したプログラム
1 Satkの開発目的の再確認
- Satkを開発した目的は、天体観測の効率化にある。
GPS受信機という素晴らしい装置のお陰で、観測位置と時刻という2つの基本的な情報を簡単に得ることが出来るようになった。
更にネットワークタイムプロトコルによってコンピュータ間での時刻の共有も可能となった。
Ver2.xまでで、これらの機能を実装することに成功したと考えている。
しかしながら、これらは飽くまでも基本的な機能であり、有効活用するためには更なる改良が必要であると思われる。
そこで、Ver3.0での目標としたことが、「天体用冷却CCDカメラ(以下CCDカメラ)のシャッターを押した時の時刻を正確に記録する」ということである。
2 CCDカメラの制御
- Satkが保持している時刻精度を活かしながらカメラを制御するには、以下の方法が考えられる、
- CCDカメラ制御ソフト(カメラメーカ作成)にタイムサーバから時刻を受け取る機能を実装してもらう
- CCDカメラ制御ソフトを自作し、Satkサーバのクライアントとして動作させる
- SatkからCCDカメラ制御ソフトをコントロールする※
はじめの案が実現できれば何の問題もないのであるが、現実問題としては実現不可能である。
次の案も、(仮にI/F仕様がわかったとしても)解決しなければならない問題が山積している。
結局のところ、最後の案しか実用的とは思えない(※後に別仕様を採用することになる)。
3 改版の経過
- SatkからCCDカメラ制御ソフトをコントロールするということは、Windowsプログラミングという観点からは、他のWindow(タスク)をコントロールするということになる。
そのためには沢山あるWindows API関数群の中から必要な機能を捜すことから始めた。
3-1 準備プログラムの作成
- 取り敢えず、簡単に出来そうなのがマウスの制御であったので、次のようなプログラムを作って見た(H13.11.22)。


画面右側がそのプログラム(PreYtc=よそのタスクをクリック(するための準備))で、左はWindowsに標準で付属している電卓プログラムである。
PreYtcから電卓プログラムを起動し、電卓のキーを制御する。
「計算デモ」ボタンで「1」「2」「3」「+」「4」「5」「=」と電卓のボタンを順次、クリックしていく。
「マウス情報」ボタンは、マウスカーソルが置いてあるウィンドウのクラス名と、マウスカーソルの座標を取得するために使う。
ここで、PreYtcのウィンドウがアクティブになっており、かつマウスカーソルは別なウィンドウをポイントしている必要があるため、この操作はキーボードの[Ctrl]+[A]で行う必要がある。
3-2 バッチ処理へ拡張する
- マウスの操作を記録し、後から一括して再生する仕様(バッチ処理)を考えて見た(H13.11.24)。
Ytc(よそのタスクをクリック)

PreYtcの「マウス情報」ボタンに相当するのが「クリック」ボタンである。「コマンド追加」パネルの中のボタンを選択(クリックではない!)すると相当するコマンドを生成する。処理が速過ぎる場合には「スリープ」コマンドで調整する。
このバッチコマンドはマニュアルで編集し、必要によりテキスト形式で保存して後から読み出すことも出来るようにした。
※はじめ、クリックするウィンドウの指定をクラス名で行っていたが、これではウィンドウを一意に特定することができないことが判明、替わってウィンドウタイトルで指定(含む、プレフィクス/サフィクスのオプション)するように仕様変更した(2001.12.08)。
3-3 Satkとの連携
「SatkからCCDカメラ制御ソフトをコントロールする」仕様で開発に着手したYtcであるが、最終的には独立したバッチ処理プログラムとして実装することとなった。
その結果として、
- Satkへの追加仕様を最小限に抑えることができる
- 結局、Satkの追加機能としては、「報時」ボタンを追加し、クリックした時の時刻をログに記録するとともにクリップボードにテキスト形式でコピーするだけという単純なものとなった。
- CCD撮像の自動化への対応
- 観測計画に基づいてYtcを定期的に起動するようなシステムができると(Yocで計画中)、観測の効率が向上する。
と、いった利益が得られることとなった。
4 改版中に作成したプログラム
- Ytc(よそのタスクをクリック)を開発するにあたって、Windowsのメッセージを調べるために幾つかのテストプログラムを作成した。
「捨てるに忍びない」と考えたものがあったので紹介するものである。
- PreYtc - 3-1参照
- KeyHook - キーボードを操作したときにアプリケーションが受け取るWindowsメッセージを表示する。
- WindowInfo - トップレベルウィンドウから検索して、指定ウィンドウのメニューまたはコンポーネントを表示する。
戻る