Я отправляю глубину воды в мм на мой сервер NodeRed, где в настоящее время пытаюсь реконструировать 16-битное Int, разделенное на 8 старших и 8 младших битов.
Я пытался просто сохранить старшие биты в переменной и сдвинуть их, оставив 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];