我目前正在努力使用 modbus tcp 并在解释模块的响应时遇到了问题。响应包含两个值,这些值在三个值的数组的位中编码UInt16
,其中 r[0] 的前 8 位必须被忽略。
假设调用 UInt16 数组r
并且我想要获得的“最终”值是val1
and val2
,那么我必须执行以下操作:
在上面的示例中,对于输入值=768、=1536 和=0,所需的输出值为val1
(=3) 和(=6) ,所有值都为 UInt16。val2
r[0]
r[1]
r[2]
我已经尝试(逻辑上)将位右移r[0]
8 位,但随后高位丢失了,因为它们存储在r[1]
. 我是否必须先连接所有 r 值,然后再进行位移?我怎样才能做到这一点?提前致谢!