跳转至主要内容

Haply Inverse SDK

Le Haply Inverse SDK 是一种面向触觉设备的 WebSocket + HTTP 语言无关接口Haply —— 即 Inverse3、Inverse3x、 Minverse、VerseGrip和Wireless VerseGrip。它作为本地服务运行,负责设备发现、串行通信、安全监控以及状态广播,因此您的应用程序只需通过套接字使用 JSON 进行通信即可。

其功能包括:

  • 设备发现与管理——通过REST HTTP API自动发现并配置已连接的Haply 设备。
  • 实时状态广播——通过 WebSockets 将设备状态传输至触觉控制频率(数千赫兹)。
  • 命令处理——以极高的精度执行力和位命令,从而实现精准的触觉反馈。
  • 后台运行——作为本地服务运行,并在无需用户干预的情况下保持设备处于就绪状态。

使用Haply 集线器进行安装​

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

Haply Hub

Haply Hub

下载最新版本的Haply Hub

下载并安装 Hub,连接您的设备,Hub 将引导您完成整个固件更新过程。安装完成后,每当打开 Hub时,Inverse Service都会在后台自动运行。

您更倾向于独立安装吗?

您还可以将 Inverse Service 的特定版本直接安装为系统服务(Windows)或守护进程(Linux/macOS),无需通过 Hub 进行安装。请参阅“运行服务”部分,获取安装程序链接和操作说明。

快速示例​

连接到该服务,读取第一个Inverse3 的游标位置,并发送一条零强制维持消息,以便该服务继续广播状态帧:

import asyncio, json, websockets

async def main():
# Connect to the Haply Inverse service WebSocket
async with websockets.connect("ws://localhost:10001") as ws:
# Read the first state frame to discover the device id
first_state = json.loads(await ws.recv())
device_id = first_state["inverse3"][0]["device_id"]

# Build a zero-force keepalive command targeting that device
keepalive = {"inverse3": [{
"device_id": device_id,
"commands": {"set_cursor_force": {"vector": {"x": 0, "y": 0, "z": 0}}}
}]}

# Realtime loop: one send per tick, then read the resulting state
while True:
await ws.send(json.dumps(keepalive))
state = json.loads(await ws.recv())
pos = state["inverse3"][0]["state"]["cursor_position"]
print(f"pos: {pos}")

asyncio.run(main())
注意

请谨慎调整力值。突然将力值调高可能会损坏设备或导致设备出现意外行为。

信息

请参阅“JSON 规范”页面,了解消息封装、端口和内容类型规则的相关信息。

更多示例​

如需有关 Python、C++(nlohmann)和 C++(Glaze)的完整教程——涵盖力反馈、位置控制、多设备配置、装配和基准点配置以及事件流——请访问“教程”页面。