跳至主要内容
版本:3.5.x

Haply Inverse SDK

Haply Inverse SDK 是一个面向Haply 设备的语言无关型 WebSocket + HTTP 接口——即 Inverse3Inverse3xMinverseVerseGrip 以及Wireless VerseGrip。它作为本地服务运行,负责设备发现、串行通信、安全监控和状态流传输——因此您的应用程序只需通过套接字传输 JSON 数据即可。

其功能包括:

  • 设备发现与管理— 通过 HTTP REST API 自动列出并配置已连接的Haply 。
  • 实时状态流——通过 WebSockets 以触觉控制速率(数千赫兹)传输设备状态。
  • 命令处理——以高精度执行力反馈和位置控制命令,从而实现精准的触觉反馈。
  • 后台运行——作为本地服务运行,无需用户干预即可保持设备处于待机状态。

使用Haply 进行安装

最简单的入门方式是 Haply ——这是一款用于安装、运行、配置、测试和监控您的Haply 桌面应用程序。它能保持固件最新,集成了 Inverse Service,并附带演示程序,让您在编写任何代码之前就能验证硬件是否正常。

Haply Hub

Haply Hub

下载最新版本的Haply Hub

下载并安装 Hub,连接您的设备,Hub 将引导您完成固件更新。安装完成后,只要 Hub 处于开启状态,Inverse 服务就会在后台自动运行。

更倾向于独立安装?

您也可以在不使用 Hub 的情况下,将 Inverse Service 的特定版本安装为系统服务(Windows)或守护进程(Linux / macOS)。有关安装程序的链接和说明,请参阅“运行服务”

快速示例

连接到服务,读取第一个Inverse3 的光标位置,并发送一个零力保持活动信号,以便服务继续流式传输状态帧:

import asyncio, json, websockets

async def main():
async with websockets.connect("ws://localhost:10001") as ws:
# Handshake: register profile and send a zero-force keepalive
first_state = json.loads(await ws.recv())
device_id = first_state["inverse3"][0]["device_id"]
keepalive = {"inverse3": [{
"device_id": device_id,
"commands": {"set_cursor_force": {"vector": {"x": 0, "y": 0, "z": 0}}}
}]}
while True:
state = json.loads(await ws.recv())
pos = state["inverse3"][0]["state"]["cursor_position"]
print(f"pos: {pos}")
await ws.send(json.dumps(keepalive))

asyncio.run(main())
警告

请谨慎调整力值。突然设置过高的力值可能会损坏设备或导致设备出现异常行为。

信息

有关消息信封、端口和内容类型的规则,请参阅JSON 规范页面。

更多示例

如需了解 Python、C++(nlohmann)和 C++(Glaze)的完整教程——涵盖力反馈、位置控制、多设备设置、安装/基座配置以及事件流——请参阅“教程”页面。