Skip to main content
Wuji SDK 通过订阅机制接收设备数据。每个数据流对应一种传感器或计算结果,通过语义化 API 访问。

订阅模式

异步接收

同步非阻塞接收

回调接收

C 的回调每帧带一个 WujiFrameKind:WUJI_FRAME_KIND_OK 表示帧可读,_LAG 表示消费端落后并携带丢帧数,_END 与 _ERROR 是终止帧。帧指针仅在回调期间有效,需要保留的数据必须在回调内拷贝。

关闭订阅

回调订阅需要手动关闭:
断开设备连接时,该设备上的所有订阅会自动关闭。收到终止帧后流不再有新数据,订阅句柄仍需关闭。

调节订阅流输出率

调节订阅流的固件推送频率,返回设备实际生效的输出率:
  • 需要在未关闭的订阅句柄上调用,订阅存续期间设置持续生效。
  • 只能调低,无法超过原生输出率。设备把请求量化到支持的档位(原生输出率的整数分频),以实际生效值为准。C 侧不需要实际生效值时,out_actual_hz 传 NULL 即可。
  • 输出率属于流而非句柄:同一流的所有订阅共享该设置,后写生效。
  • 设置不持久化:该流的最后一个订阅关闭或设备重连后,输出率恢复设备默认满速。
  • 仅设备直接产出的流可调。派生流跟随源流自动降频,tf_static 等全局资源由 SDK 聚合,对二者调节时 Python 抛 WujiException,C 返回 WUJI_STATUS_ERR_UNSUPPORTED(-8)。
  • 需要支持输出率调节的固件。固件不支持时,Python 抛 WujiException,C 返回 WUJI_STATUS_ERR_UNSUPPORTED(-8)。
各设备的可调流与跟随的派生流: Wuji Hand 2 的 joint_states 与 joint_diagnostics 共享同一条设备流,调节任意一个,两者同时生效。 完整示例见 examples/python/wuji_glove/6.set_stream_rate.py、examples/python/wuji_hand_2/4.set_stream_rate.py、examples/c/wuji_glove/1_set_stream_rate.c 与 examples/c/wuji_hand_2/4_set_stream_rate.c。

跨设备合并订阅

全局资源会自动聚合所有已连接设备的数据。当前版本的全局资源: 运行时查询完整的全局资源列表并订阅:
全局资源与设备资源的区别:

可用数据流

按产品索引

接口清单

Python 提供异步、同步非阻塞与回调三种取帧方式,C 只提供回调方式,帧指针仅在回调期间有效。C 侧的内存归属与回调约束见 C 接口参考。