我正在将以毫米为单位的水深发送到我的NodeRed服务器,我目前正在其中尝试重建一个16位Int,该Int被分为8个高位和8个低位。
我尝试只将高位存储在var中,然后将其左移8个空格,然后通过对二者进行“或”运算将低位添加到变量中,但是我没有成功。
我在某处看到有人建议尝试这个
var _firstNumber = (((number8Bit2 & 0xff) << 8) | (number8Bit1 & 0xff));
有没有建议的朋友?
这是节点红色功能
msg1 = {};
msg2 = {};
var buf1 = msg.payload.slice(0,1);
var buf2 = msg.payload.slice(1, 2);
var lvl = (((buf2 & 0xff) << 8) | (buf1 & 0xff));
var buf3 = msg.payload.slice(2,3);
var batt = buf3.readUInt8();
batt = (batt + 127)/100;
msg1.payload = lvl;
msg1.topic = 'waterlevel';
msg2.payload = batt;
msg2.topic = 'battery';
return [msg1, msg2];