UNPKG

node-red-mpb10

Version:

Nodes para processamento MPB10

40 lines (35 loc) 1.35 kB
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, 16); 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), bytes.slice(12,16) ].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','A'][idx]; return newMsg; }); node.send(outputs); } catch (err) { node.error("Erro: " + err); } }); } RED.nodes.registerType("mpb10-4axis", MPB104AxisNode); }