SpawnDev.BlazorJS.NexStar(Celestron NexStar 制御ライブラリ)

Library

概要

SpawnDev.BlazorJS.NexStar は、ブラウザ上の Blazor WebAssembly アプリケーションから Celestron NexStar 系望遠鏡を直接操作するためのライブラリです。基盤となる SpawnDev.BlazorJS による豊富な JavaScript 相互運用機能を利用して、Web Serial API を通じたシリアルポートの列挙・接続、データの送受信、バイナリ/テキストストリームの扱いを .NET 側からシンプルに扱えるようにラップしています。サンプルアプリ(SpawnDev.BlazorJS.NexStar.App)を含み、NuGet パッケージとしての配布も想定された構成になっています。ブラウザのセキュリティ制約(HTTPS、ユーザ操作でのポート選択)や対応ブラウザに注意しつつ、望遠鏡のハードウェア制御を Web 技術で実現するための出発点を提供します。

GitHub

リポジトリの統計情報

  • スター数: 1
  • フォーク数: 0
  • ウォッチャー数: 1
  • コミット数: 3
  • ファイル数: 7
  • メインの言語: C#

主な特徴

  • Blazor WebAssembly から Web Serial API を使って NexStar 望遠鏡と通信可能
  • SpawnDev.BlazorJS による JavaScript 相互運用(シリアルストリームの抽象化)
  • 望遠鏡制御向けのコマンド送受信ラッパーとサンプルアプリを同梱
  • NuGet 配布を想定したライブラリ設計(再利用しやすい API)

技術的なポイント

本プロジェクトの中心は「ブラウザ経由でシリアルデバイス(望遠鏡)を扱う」点にあります。Web Serial API はネイティブのシリアルポートアクセスをブラウザに提供しますが、いくつかの制約(HTTPS、ユーザーのポート選択、対応ブラウザが限定されること)があります。SpawnDev.BlazorJS.NexStar はこれらのブラウザ API を SpawnDev.BlazorJS の JS インタロップ層でラップし、C# 側から使いやすい非同期メソッド群として公開します。

具体的には、ポートの列挙・選択、接続時のパラメータ設定(ボーレートやパリティ等)、Readable/Writable ストリームの取得と読み書きループの管理(バイト配列や行指向の処理)、接続のクリーンアップ(Close/Dispose)などを扱える API を提供します。NexStar 系望遠鏡はシリアルベースのコマンドプロトコルを持ち、ASCII ベースの命令やバイナリパケットをやり取りします。本ライブラリはその送受信のためのエンコード/デコード、フレーミング、簡易的な応答待ち(タイムアウトやエラー処理)を実装することで、アプリケーション開発者が低レベルのバイト操作を意識せずに機能呼び出しできるように設計されています。

また、Blazor 環境特有のランタイム制約(UI スレッドと非同期処理の境界、JS と .NET 間のデータ変換コスト)も考慮しており、非同期 Task ベースの API、イベントコールバック、キャンセレーション対応を備えています。サンプルアプリケーションは接続デバイスの選択、基本的なコマンド送信、レスポンス表示を行い、実際のブラウザ条件下での動作確認ができるようになっています。将来的にはコマンドセットの拡張、モデル別プロファイル、より堅牢な再接続戦略や単体テストの充実化が想定されます。

注意点として、Web Serial は現状主に Chromium ベースのブラウザでのサポートが中心であり、ブラウザの実装差異やユーザー権限の扱い(ポート許可の永続化など)に依存します。デスクトップ・モバイル環境での互換性や、OS 側のドライバ要件にも留意が必要です。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitattributes: file
  • .gitignore: file
  • LICENSE.txt: file
  • README.md: file
  • SpawnDev.BlazorJS.NexStar.App: dir

…他 2 ファイル

(SpawnDev.BlazorJS.NexStar.App ディレクトリ内にはサンプルの Blazor アプリや UI、シリアル接続のデモコードが含まれている想定です。ライブラリ本体は NuGet 配布を想定したパッケージ化が容易な構造になっています。)

まとめ

ブラウザで NexStar 望遠鏡を直接制御したい開発者向けの、実用的な Blazor/WebSerial ラッパーです。

リポジトリ情報:

READMEの抜粋:

SpawnDev.BlazorJS.NexStar

Provides tools to communicate with and control Celestron NexStar telescopes using the Web Serial API in Blazor WebAssembly. SpawnDev.BlazorJS.NexStar is built on top of SpawnDev.BlazorJS which provides full Javascript interop.

NuGet version