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

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

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


Helenr
浏览 162回答 2
2回答

四季花海

您需要确定读数之间数据可以增加的数量限制。然后检查是否已超过。例如,如果您的限制是 100,而之前的值是 65500,您需要检查新值是否在 655001-65535或0-65 范围内。例如:if&nbsp;new_val&nbsp;>&nbsp;old_val&nbsp;or&nbsp;\ &nbsp;&nbsp;&nbsp;new_val&nbsp;<&nbsp;(old_val&nbsp;+&nbsp;tolerance)&nbsp;%&nbsp;65536:...tolerance您要识别的最大增加在哪里。

GCT1015

令人难以置信的是,在两次测量之间,值的变化超过了其总范围的一半(如果确实如此,您无法确定它的移动方式),因此如果您得到的差异大于 32,768,请从中减去 65,536,如果您得到小于 -32,768 的差值加上 65,536。这样,如果值从例如 65,535 变为 2(原始差异为 -65,533),您将注册为 +3(= -65,533 + 65,536)的差异,这就是您想要的。如果您以另一种方式越过环绕,则相同的过程会反过来发生。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python