我想通过Node-RED的Modbus节点从数据源读取数据。范围是-20000到20000,但该节点无法处理负数,因此我不得不将它们转换为二进制数(DWORD),将它们分成低位和高位,并将这些单词转换回整数。
var low
function dec2bin(dec){
return (dec >>> 0).toString(2);
}
var a = msg.payload
if (a >= 0){
a = dec2bin(a);
a = parseInt(a,2);
} else {
a = dec2bin(a);
a = a.substr(16);
a = parseInt(a,2);
}
low = { payload: a };
return low;
为了可视化,我想使用仪表板节点,但我需要将两个二进制字符串连接起来并将它们转换为整数。
问题:
Node-RED将它们转换为Qword,因此二进制数字1111 1111 1111 1111 1111 1100 0001 1000被视为4294966296,而不是-1000。但如果我将下一个剩余部分用1填充:1111 1111 1111 1111 1111 1111 1111 1111 1111 1100 0001 1000,输出结果为18446744073709552000。
谢谢
msg.resp
对象,该对象由 http-response 节点使用。 - hardillb