メインコンテンツへスキップ

00. 機器一覧

HTTP-REST-API を通じて、接続済みのすべてのHaply デバイスを検出します。WebSocket は必要ありません。ランタイム環境がアクティブであるか、およびハードウェアが認識されているかを確認する、簡単なスモークテストです。

学習内容:

  • からの照会 GET /devices、えーと、Inverse3 —、VerseGripおよびワイヤレスVerseGripデバイスの一覧を表示する
  • JSONレスポンスからデバイスIDを読み取り、デバイスタイプごとにグループ化する
  • セッションセレクタを使用して、セッションの生のデバイス座標とアプリケーション空間ビューを切り替える

手順​

  1. 送信してください GET http://localhost:10001/devices.
  2. JSONのレスポンスを解析します。最上位レベルには3つの配列があります: inverse3, verse_grip, wireless_verse_grip.
  3. デバイスIDをタイプ別にグループ分けして表示してください。空の配列は、そのタイプのデバイスが検出されなかったことを意味します。
  4. もしあるなら セッションセレクター als ?session=<selector> が指定されると、そのセッションのデバイスへの応答がフィルタリングされ、座標はそのアプリケーション空間に変換されます(基底、取り付け、およびワークスペースが適用されます)。Pythonのサンプルでは、これをCLI引数として指定しています。 --session SELECTOR 準備完了(承認済み) :profile:instance, #id, :-1, :0, …) — これと同じフラグとヘルプテキストを使用し、 チュートリアル 08(HTTP リモート設定) が使用されているため、ここで見つかったセレクタをそのままそこに挿入することができます。C++のサンプルでは、セレクタを指定せずにクエリを実行しています。

パラメータ​

パラメータ標準Zweck
サービスURLhttp://localhost:10001HTTPのベースURL
エンドポイント/devicesデバイス検出のエンドポイント
セッションセレクター(keiner)?session=:0, ?session=:-1, ?session=:my_profile:0, ?session=co.haply.hub::*:0 (グローバルプレースホルダーに対応) — 参照 セレクター. Pythonの例では、次のように --session SELECTOR 利用可能(同じフラグとして チュートリアル 08).

重要なコード​

このPythonの例では、セッションセレクタをargparseの引数として指定しています --session SELECTOR bereit。この引数を指定しない場合、デバイスは生のデバイス座標で返されます。引数を指定すると、選択されたセッションに基づいてフィルタリングされ、アプリケーション空間に変換されます。ヘルプテキストは、 チュートリアル 08(HTTP リモート設定), そのため、ここで見つかったセレクタをそのままそこに挿入することができます。

def parse_args():
parser = argparse.ArgumentParser(
description="List connected Haply Inverse devices via the HTTP API.")
parser.add_argument(
"--session", type=str, default="",
help=(
"Session selector. Formats:\n"
" :profile:instance by profile name (e.g. ':my_profile:0')\n"
" pattern:instance glob wildcard in profile (e.g. 'co.haply.hub::*:0')\n"
" '*' matches any sequence, '?' one character\n"
" #session_id by numeric id (e.g. '#42' — quote in shells to escape '#')\n"
" :-1 the last active session\n"
" :0 the first session"
))
return parser.parse_args()

def main():
args = parse_args()
session = args.session or None

url = f"{BASE_URL}/devices"
if session:
url += f"?session={session}"
print(f"Querying devices for session '{session}' (application space)\n")
else:
print("Querying all detected devices (device space)\n")

r = requests.get(url, timeout=3)
r.raise_for_status()
data = r.json()

print_devices("Inverse3", data.get("inverse3"))
print_devices("Wired Verse Grip", data.get("verse_grip"))
print_devices("Wireless Verse Grip", data.get("wireless_verse_grip"))
SDKインストーラーに含まれています

また、チュートリアル 00 は SDK とともにローカルにインストールされています。サービスのインストールディレクトリ内の tutorials/00-haply-inverse-device-list/ nach.

出典: Python·C++·C++ Glaze

関連項目: JSONの規約·セレクタ·セッション