node-red-mpb10
Version:
Nodes para processamento MPB10
39 lines (34 loc) • 1.46 kB
JavaScript
module.exports = function(RED) {
function MPB104AxisNode(config) {
RED.nodes.createNode(this, config);
const node = this;
node.on('input', function(msg) {
const binaryToFloat = bin => {
const buffer = Buffer.alloc(4);
buffer.writeUInt32BE(parseInt(bin, 2), 0);
return buffer.readFloatBE(0);
};
try {
const rawData = msg.payload.slice(10, -2).split(',').slice(0, 12); // Alterado para 12 elementos
const bytes = rawData.map(b =>
parseInt(b,10).toString(2).padStart(8,'0')
);
const axis = [
bytes.slice(0,4),
bytes.slice(4,8),
bytes.slice(8,12) // Três grupos de 4 bytes
].map(group => group.join(''));
const outputs = axis.map((bin, idx) => {
const newMsg = RED.util.cloneMessage(msg);
newMsg.payload = binaryToFloat(bin);
newMsg.topic = ['X','Y','Z'][idx]; // Removido 'A'
return newMsg;
});
node.send(outputs);
} catch (err) {
node.error("Erro: " + err);
}
});
}
RED.nodes.registerType("mpb10-4axis", MPB104AxisNode);
}