概述
本篇实践介绍如何创建、切换和删除 SDK 本地用户,并管理标定数据迁移。应用场景包括多人共用设备时隔离标定数据和在不同机器间迁移个人配置。 对应的 Python 示例为 4.user.py,C 示例为 3_user_management.c。 接口与参数见 SDK 用户管理 和 用户数据导入导出。前置条件
硬件
用户管理只读写本地数据,不需要连接手套。软件
- Python
- C
数据流
本地存储布局
SDK 使用~/.wuji/sdk/ 保存以下数据:
registry.toml 示例:
user_id 为空字符串,不是 "default" 或 None。current_user_id 保存在此文件中,因此用户切换会持久化。
API 参考
下表列出用户管理相关接口:
Python 和 C 提供对应的用户管理能力。导出、预览和导入接口用于在不同电脑之间迁移标定数据。
Python 侧用户 dict 包含以下字段:
user_id、display_name、description、is_default、created_at、updated_at、external_id。C 侧对应 WujiUserInfo 结构体,字段同名。
C API 返回的 WujiUserInfo 字符串由 SDK 分配。单个结构体使用 wuji_user_info_free(&user) 释放,数组使用 wuji_user_info_array_free(users, len) 释放。不要混用这两个函数。
WujiUserUpdate 除了 display_name、description、external_id 三个字段,还有 clear_description 与 clear_external_id 两个布尔位,用来把字段显式置空——只传 NULL 表示「不改」,不表示「清空」。
集成步骤
先确认当前用户,再选择或创建用户,最后核对切换结果。用户操作不需要连接设备。1. 查看当前用户
读取当前用户,确认接下来的标定数据将归属谁。- Python
- C
2. 选择或创建用户
按显示名称查找用户,已有用户直接复用,找不到时创建。下文 Python 的find_user_by_display_name 和 C 的 switch_or_create_user、ExampleArgs 均来自 Python 示例 和 C 示例,并非 SDK 接口。多个同名用户会触发错误,处理重名后再切换。
- Python
- C
wuji_list_users、按需调用 wuji_create_user 或 wuji_update_user,再调用 wuji_switch_user。函数释放查询列表和临时用户信息,返回切换后的 current。
3. 切换并核对
Python 使用user_id 切换,C 在上一步已完成切换。核对返回的用户信息后,再进入标定流程。切换会持久保存当前用户,后续进程也使用选中的用户。
- Python
- C
4. 释放资源
Python 的用户字典由运行时管理。C 程序结束时释放用户信息并关闭 SDK。释放查询结果不会删除用户或标定数据。运行示例
- Python
- C
--list 的实测输出:
previous 与 current 两段会不同:
* 标记当前用户。
示例使用 Wuji SDK v2026.8.31,运行时不需要连接设备。
行为与错误处理
以下行为适用于用户管理接口。用户名必须唯一
display_name 唯一。Python 示例 中的重复匹配分支不会被触发:
WujiException。
删除当前用户
删除当前用户后,SDK 自动切换到默认用户:
删除操作不会留下悬空的当前用户指针。该用户的标定数据也会被删除,请确认数据不再需要。
默认用户不可删除
不存在的用户 ID 会触发错误
用户切换在进程和语言之间生效
例如:- C 程序执行
./3_user_management --default-user,切到 Default - 启动一个全新的 Python 进程读
current_user()
Default,user_id 为 ''。C 程序创建的用户也会立即出现在 Python 的 list_users() 结果中,description 字段保持不变:
registry.toml,不会维护独立缓存。
导出前需要标定数据
对未完成标定的用户调用export_user_data:
export_user_data(user_id, out_path) 的两个参数均为必填。
错误处理速查
命令行工具可以捕获
WujiException 并以非零退出码结束。向用户显示异常消息即可,无需输出完整堆栈。
扩展用法
标定之前先确认用户
标定前先显示当前用户,确认标定数据写入正确的用户:迁移标定结果到另一台机器
export_user_data 打包,preview_user_data 在目标机上先看内容,确认无误再 import_user_data。导入会按需重建用户,不用先手工建好同名用户。
用 external_id 关联外部系统
用户 dict 里有external_id 字段,示例没用到。如果需要关联外部账号系统,请使用 external_id 保存外部主键,不要使用 display_name 作为唯一关联键。
脚本化时避开交互
两个示例都是命令行工具。--list 成功时返回 0,失败时返回 1,可用于脚本判断。
相关内容
- Wuji Glove 手部模型标定:产出挂在当前用户名下的手部模型
- Wuji Glove 触觉标定:同样按 SDK 用户与手套序列号进行管理
- Wuji Glove 设置自定义手部模型:绕过用户体系直接指定手模
- Wuji Glove 离线数据处理:重放时按序列号加载对应手模