# gRPC連携の設計と実装状況 English | 日本語 ## 利用目的 PIXet SDKを導入した検出器接続PCで `MiniPixCtrl` を動かし、別PCから制御する構成を想定する。ローカル制御とネットワーク公開を分離する設計は維持する。 ```text Application → DeviceProxy(構想・実装未確認) → gRPC client(実装未確認) → gRPC server(実装未確認) → MiniPixCtrl(pixet_ctrl.pyで確認済み) → pypixet / PIXet → MiniPIX D08-W0313 ``` ## ローカルで確認できる使用法 ```python import logging from mini_pix.pixet_ctrl import MiniPixCtrl logger = logging.getLogger("mini_pix") ctrl = MiniPixCtrl(logger=logger) if not ctrl.connect(): raise RuntimeError("Detector connection failed") try: if not ctrl.set_mode_all("Energy"): raise RuntimeError("Mode configuration failed") result = ctrl.acquire_frames(count=1, sec=1.0) finally: ctrl.disconnect() ``` 上記は**ローカルAPIの使用例**であり、gRPCクライアントの実行例ではない。しきい値・バイアスは実験条件と校正に応じて設定する。 ## 将来の拡張 `SyncPixetGrpcClient` / `AsyncPixetGrpcClient`、`pixet_grpc_server.py`、DeviceProxyを利用する構成は従来の設計案として保持する。添付ソースだけでは実装の有無が確定しないため、import例や接続先を捏造しない。通信時の画像シリアライズ、同時操作の排他、停止要求の取り扱いは別途定義する。 ## gRPCの透過性とローカルAPI `grpc_frame` はローカル制御APIを透過的に呼び出すための通信基盤であり、**検出器制御機能を独自に追加しません**。したがって、リモートから実行可能な検出器操作は、サーバー側のローカル制御クラスに実装された操作に限られます。RPCの公開名や引数がローカルメソッドと一致するかは、対応するクライアント・サーバーのソースコードによる確認が必要です。 現行の正式なAPIは `pixet_ctrl.py` の `MiniPixCtrl` を基準とします。ローカル制御に存在しない機能を、gRPCだけで提供できるものとして記述しません。通信層の実装状況についても、`pixet_ctrl.py` だけでは断定しません。