旋钮 HID 是位移量还是位置值,怎样区分 Relative 与 Absolute

2026-10-24

HID字段标为Relative时,每次值通常表达本次变化量;标为Absolute时,值表达当前位置。把相对量直接当绝对坐标,画面会在小范围反复归位;把绝对位置逐次累加,位置会越滚越远。应先读取Input项的相对/绝对标志,再决定累积方式,不能只看三个输入数值猜设备是哪一种。

环境和证据范围

本文以已经解析出的HID轴值为输入,不涉及编码器A/B脉冲、四倍频计数或接线。合成起点100,单位为计数;真实旋钮可能使用其他Usage或业务协议。未连接HID装置,也不宣称断线后可以凭本页方法恢复实际机械位置。

核对顺序

  1. 定位对应Usage和Input标志,记录字段是Data/Constant、Variable/Array以及Relative/Absolute。只看设备名称“旋钮”不够,两个外观相同的设备可能报告完全不同的语义。

  2. Relative按当前累计位置加delta更新;Absolute用本次值替换位置。初值、方向与边界另有应用约定,不能把单位缩放、回绕和相对绝对混在一个公式里。

  3. 用同一输入[2,2,-1]跑两种分支。相对分支从100变成102、104、103;绝对分支得到2、2、-1。相同连续值在相对分支代表继续移动,在绝对分支代表位置不变。

  4. 制定重连和清零策略。Relative漏一个报告会丢失一段位移,应用累计值不能自动等于机械实际位置;Absolute也有有效范围和设备初始化状态,收到值之前不应随意填零。

可复算的输入与预期

附件输出两个轨迹数组,逐点与预期比较。脚本只验证已解析数值的集成方式,负一假设已经按描述符完成符号扩展;如果先把0xff读成255,再累加,轨迹当然会错误,应该先修字段解析。

下载与现场记录

下载本题合成输入与预期JSON、离线只读核验脚本和现场空白记录CSV。放在同一目录,用 Python 3 运行 python verify.py,逐项计算或解析后与预期比较,失败会显示差异。

现场字段包括 usage、relative_flag、raw_value、unit、initial_position、integrated_position、reconnect_rule。合成样例保持原样,实测另存并填写型号、版本、证据路径,未采集处留空。本地核验不代表真实设备、代理、浏览器或长期稳定性已测。

失败分支与移交

Relative不自动意味着滚轮角度,也不自动包含圈数。设备可能在静止时省略报告,不能把“没有报告”当位置归零;另一些设备会重复报告绝对位置,不应按消息数量累计。无论哪种,事件到达速度都不是机械速度的可靠单位,除非另有采样时间与单位定义。

移交时附描述符标志、单位、初始位置、是否持久化累计值和断连表现。需要驱动画面时应先在模拟器观察两个分支,再按设备维护程序试真实输入。界面里的回零命令与实际机构回零应分别命名,避免运营误以为软件清零已经完成机械校准。

基础背景可看旋转编码器/手轮编码器 — 让转盘互动”数得准、不丢步。判断相对与绝对之前,要定位正确报告字段,见HID 报告多了一个字节,怎样核对 Report ID 与位偏移。更多资料在触摸互动技术方案。

需要项目联调时,可按上述字段整理资料,联系企服君核对实际接入范围。

一级资料

核对日期:2026-10-24。规范定义与本文应用约定分开,示例门限及脚本不自动代表产品原生能力。

需要展厅软硬件方案或定制开发?

加微信,把这一页发到你手机上

扫码加站长企业微信,会自动把这一页的链接发给你。问软件授权、报价,或者现场遇到问题,也可以直接聊。

去留微信

留言讨论

评论发布后会被人工复核,违规内容将被删除。

    还没有人评论,来说说你的看法

    如果发表没有反应,可以前往联系我们告诉我们。

    这个页面有问题?

    提交时会附带当前页面地址和浏览器信息,帮助我们定位问题。不填联系方式即为匿名。