用于控制硬件,延迟问题的UI滑块

时间:2014-12-08 20:32:11

标签: user-interface slider hardware updates latency

我有一个关于如何使用控制硬件的滑块的一般UI问题。

假设我有一段音频硬件,它总是报告它设置的当前音量。发送此数据后,可以将UI滑块设置为正确的位置。

问题在于,当用户移动滑块以更新硬件的音量时,用户通常会以比硬件报告其当前音量更快的速度移动滑块。结果是,当用户移动滑块时,每当接收到来自硬件的体积数据时,滑块就会不断跳跃,因为它会改变其位置。

我可以看到一些解决方案,但它们看起来都非常难看,并且想知道它们是否是最佳实践解决方案,看起来是一个非常常见的问题。

可能的解决方法:

  • 仅在用户停止滑动滑块时将新滑块值发送到硬件

如果您希望在移动滑块时听到音量变化,这不是很好。

  • 当用户移动UI滑块时,在收到硬件数据时不要更新其值。

问题在于,一旦发布,硬件可能没有"赶上"并且滑块会捕捉到用户将其设置为的不同值。

e.g。也许硬件正在移动伺服,需要时间才能达到最终位置。滑块会要求'一个新职位,但硬件需要一段时间才能达到新职位,同时报告目前的位置。

  • 扩展上述解决方案并添加计时器延迟,以防止UI从硬件源更新几秒钟。在延迟期间,缓存最新的硬件值。

在伺服示例中,使用可能会使滑块从0移动到1但是在x秒延迟之后,伺服仅为0.5,因此滑块捕捉到0.5然后慢慢变为1

  • 创建一个非标准滑块,该滑块具有两个滑块,用户可以与之交互,以便设置'值和显示硬件当前位置/值的值。

这一切看起来都相当复杂,我想知道是否有标准的方法来做到这一点。

1 个答案:

答案 0 :(得分:0)

当您处理各种各样的用例和可能不同的硬件时,很难提出标准解决方案。实际上,您可能不希望音频设备使用相同的方法,也不需要像起重机那样对安全至关重要的方法 另一个想法是限制UI滑块移动的速度,使其与硬件匹配。这可能意味着UI滑块不再具有平滑操作,而是跳转到微小的间隔。如果您的硬件足够快,可以使其工作。

或者,我建议您查看滑块以外的其他内容:例如箭头。您可以使用向上/向下箭头按钮来增加/减少硬件值。由于您的硬件将其位置报告给您,您可以使用该数据在UI上绘制内容(如果您知道最小和最大限制,这非常有效)并且您可以避免硬件问题与UI保持同步因为现在是另一种方式。