如何判断 16 位二进制编码值是增加还是减少



>我正在尝试确定一个数字是增加还是减少。编码器返回一个无符号的 16 位值,如果编码数据增加或减少,该值将增加、减少或保持不变。

我获取编码值并将其附加到每x秒一次的列表中,我正在尝试比较这些值以查看它们是否在增加/减少。我将每个值检查为先前获得的值,但我遇到的唯一问题是在 65535 处,数据回转为 0。我将如何解释这些情况?

您需要确定读数之间数据可以增加的数量限制。 然后检查是否已超过该值。 例如,如果您的限制为 100,而以前的值为 65500,则需要检查新值是在 655001-65535范围内还是在 0 - 65 范围内。

例如:

if new_val > old_val or 
new_val < (old_val + tolerance) % 65536:

。其中tolerance是您要识别的最大增长。

该值在两次测量之间变化超过其总范围的一半以上是不可信的(如果是这样,你无法弄清楚它的移动方向),所以如果你得到的差值大于 32,768 从中减去 65,536,如果你得到的差值小于 -32,768,则加上 65,536。

这样,如果值从例如 65,535 到 2(原始差值为 -65,533),您将注册为 +3 (= -65,533 + 65,536) 的差值,这就是您想要的。如果你以另一种方式穿过环绕,同样的过程也会反过来发生。

最新更新