ASCOMドライバの作成だが、ネタ(ソースコード)はある。
できれば最新の環境でビルドするところから始める。
10年以上前の古いパソコンを引っ張り出してきて、
Windows10のクリーンインストールから始めて、
MicrosoftのVisualStudio2022(Community版)をインストールする。
そこからビルドするが、ビルド自体は問題ないが、
プラットホームをどうするか悩む。
・AnyCPU: x64環境下では64bit動作、x86環境下では32bit動作(のはず)
・x64: 64bit動作でビルド
・x86: 32bit動作でビルド
とりあえずデフォルトのAnyCPUでビルドした。
(後でこれが間違いだとわかるが、最初からわかっていたら苦労しねーよ)
ソースコードに、ジョナサンという人の記述:
ひな形を作ったから自由に使ってよい
ただし枠組みだけだから、機能の記述は各自でやれ
readmeはちゃんと読んどけ、と。
ジョナサン、ありがとう。
ビルド自体は正常だ。
出来上がったDLLをドーム内パソコンに転送し、
リモートで動作確認するが動かない。
MaxImDLでも動かない。
NINAでも動かない。
2年前と状況は変わらない。
色々調べてみると、手作りのASCOMドライバなので、
インストーラはなく、設定は全部手動で行う必要がある。
具体的にはCOMオブジェクトの登録、レジストリの登録・設定など。
出来上がったDLLも、所定の場所に配置する。
こうやって少しづつ進み始めたが、まだまだうまくいかない。
例えば、下の画像のようなエラーが出る。
エラーメッセージだけでは、何のことかさっぱりわからない。
このエラーは、32bit版で動作していないからという意味である。
対策としては、x86で32bitとしてビルドし直すしかない。
と書いたがここまでを理解するのにも苦労した。
ここでようやく、64bit動作と32bit動作の違いが分かってきた。
そこで、ふと気が付いた。
NINAは64bit版をインストールしたことをすっかり忘れていた。
ASCOMはおそらく32bitだ。アルパカが64bitだったような?
MaxImDLは間違いなく32bitだ。
Windowsの厄介なところは、32bit/64bitの違いをよく考えておく必要がある。
通常はあまり意識しなくてもよいが、自前でアプリやドライバを作るとなると
この辺りが問題を起こしてややこしくなるのだ。
色々悩んだ末に、32bit版、MaxImDLで動作させることを目標にした。
昔はMaxImDLで動かしていた実績がある。
VisualStudio2022では、x86 32bit動作でビルドし、これを使う。
MaxImDLではビルドしたドームドライバを直接指定してみた。
これで、少しは進んだが、また別のエラー(レジストリエラー)が出てくる。
更に調査すると、64bit動作と32bit動作でレジストリの登録場所が違うのだ。
特に64bit版Windowsで、32bit動作の場合は、
SYSWOW64配下でレジストリを作成・設定しないといけない。
(昔のMaxImDLで動かしていた時代とはこの辺りが違ったようだ)
アプリの開発者ってのは大変だな(ただのぼけ老人の独り言)。
そしてついに、やっと動作した。
素晴らしい、(心の中でガッツポーズ)。
MaxImDLで接続したところ。正常にConnectしている。
MaxImDLで、ドームタブの画面。
これはスリットオープン時の状況。
オープン中は、スリット部が画面のように半分黒くなり、
オープンが完了したら、スリット部が全部黒くなる。
閉じる時も同様で、スリットの開閉状況がよくわかるようになっている。
MaxImDLは芸が細かいなあ(こういうのは大好きなんだよ)。
やっとここまで来たか、やれやれだぜ。