Visual Basic2008からCCDSoft をコントロールする覚書

SBIGのSTシリーズでの撮影には、Software Bique のCCDSoft を使っている。Rubyで書いた自動観測プログラムは、COM(Component Object Module)コントロールを使って、Win32OLE経由で制御してコントロールしている。

今回、FREEのVisualBasic2008 Expressを使って、観測プログラムをGUIにしようとした。CCDSoftの開発元のSoftware Bique のHPには、VBscript などによるコントロールの方法が記述されたコードがあり、楽勝と踏んだが、難航した。

原因は、VBscript や以前のVisualBasic とVisualBasic2008とでは、COMコンポーネントへのアクセス方法が違うためである。それはそれで良いのだが、アクセスの方法、サンプルコードがどこにもない。どうやっても見つけることができなかった。手探りでいろいろと試して、なんとかできるようになった。以下その方法の覚書き。

① VisualBasic2008へのCOMコンポーネントの追加
イメージ 1
プロジェクト → 参照の追加 を選択すると、参照可能なコンポーネントが表示される。
イメージ 2

この中から、COMコンポーネントのタグからCCDSoft を指定する。

② オブジェクトの指定
VB2008の文法的には、

Dim Cam As New CCDSoftLib.CCDSoftCamera

と書けば良いだけなのだが、これを見つけるのに苦労した。

参照するオブジェクト名のさがしかたの一般的な方法かどうかはわからないが、
Dim Cam As New
まで記述して、カーソルを置いてしばらくすると、図のように参照できる名前の候補が出るので、その中から、CCDSoftLib を指定する。
イメージ 3

選択して、さらにカーソルを置くと、CCDSoftLib の中で参照できるオブジェクトが出るので、カメラコントロールのメソッド、プロパティの入った、CCDSoftCamera を選択する。
これにより、前述のオブジェクトの定義ができあがる。

③ VB2008からの呼び出し
・メソッドの呼び出し
メソッドはCCDSoft の「Take Image」などのコマンドボタンを押したものに相当する。TakeImage の実行は、

Dim Cam As New CCDSoftLib.CCDSoftCamera

Cam.TakeImage()

となる。

・プロパティの呼び出し
値を読んだり、設定したりする操作である。温度の呼び出しは

Dim Cam As New CCDSoftLib.CCDSoftCamera

T=Cam.Temperature

書き込みは、

Cam.Temperature=-10

となる。

当然のことながら、CCDSoft の COM コンポーネントとのやりとりの変数の形式、数値なのかテキストなのか、を合わせておく必要がある。
このあたりの、パラメータなどは、CCDSoft のHELP ファイルにくわしく表記されている。