modbus-logger/utils/number.js

21 lines
1.0 KiB
JavaScript

/**
* Read number from buffer
* @param {Buffer} buf
* @param {import("..").NumberType} type
* @param {"BE" | "LE"} order
*/
export function readNumberFromBuf(buf, type, order) {
/* Big-Endian */
if (type === 'UI16' && order === 'BE') return Buffer.from(buf).readUInt16BE();
if (type === 'I16' && order === 'BE') return Buffer.from(buf).readInt16BE();
if (type === 'UI32' && order === 'BE') return Buffer.from(buf).readUint32BE();
if (type === 'I32' && order === 'BE') return Buffer.from(buf).readInt32BE();
if (type === 'FP32' && order === 'BE') return Buffer.from(buf).readFloatBE();
/* Little-Endian */
if (type === 'UI16' && order === 'LE') return Buffer.from(buf).readUInt16LE();
if (type === 'I16' && order === 'LE') return Buffer.from(buf).readInt16LE();
if (type === 'UI32' && order === 'LE') return Buffer.from(buf).readUint32LE();
if (type === 'I32' && order === 'LE') return Buffer.from(buf).readInt32LE();
if (type === 'FP32' && order === 'LE') return Buffer.from(buf).readFloatLE();
}