跳转至主要内容

00. 设备清单

通过 HTTP-REST-API 识别所有已连接的Haply 设备——无需 WebSocket。这是一个简单的烟雾测试,用于检查运行时环境是否处于活动状态以及是否能识别硬件。

您将学到:

  • 查询 GET /devices,嗯,Inverse3 ——列出VerseGrip和无线VerseGrip设备
  • 从 JSON 响应中读取设备 ID,并按设备类型分组
  • 使用会话选择器在会话的原始设备坐标与应用空间视图之间切换

流程​

  1. 请发送 GET http://localhost:10001/devices.
  2. 解析 JSON 响应——三个顶级数组: 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
服务网址http://localhost:10001HTTP 的基准 URL
终点/devices设备识别的端点
会议选择器(keiner)?session=:0, ?session=:-1, ?session=:my_profile:0, ?session=co.haply.hub::*:0 (支持全局占位符)——参见 Selektoren. 在 Python 示例中作为 --session SELECTOR 可用(与 教程 08).

重要代码​

该 Python 示例将会话选择器作为 argparse 参数 --session SELECTOR 已准备就绪。如果不提供此参数,设备将以原始设备坐标返回;如果提供此参数,则会根据所选会话对设备进行筛选,并将其转换为应用空间坐标。该帮助文本与 教程 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 规范·选择器·会话