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は芸が細かいなあ(こういうのは大好きなんだよ)。
やっとここまで来たか、やれやれだぜ。
お久しぶりです。
>インストーラはなく、設定は全部手動で行う必要がある。
ASCOMのDeveloper ToolsをインストールするとスタートメニューのASCOM Platform 6内にDriver Install Script Generatorがあると思います。これを利用すると簡単にインストーラが作成出来ると思います。(Inno Setupが別途必要です)
ローテータのASCOMドライバもこれで作成したインストーラを使用しています。
J.R.さん、こんばんは。
有用な情報ありがとうございます。
ただ、今回は自分ひとりで動かすことが目的なのでテスト的にやってます。
おそらく配布することはないでしょう。
それにしてもなかなか大変でした。
ASCOMドライバ自体はまだよくわかってはいません。