UNPKG

jsmodbus

Version:

Implementation for the Serial/TCP Modbus protocol.

68 lines (57 loc) 1.61 kB
const ModbusRequestBody = require('./request-body.js') /** Write Single Register Request Body * @extends ModbusRequestBody */ class WriteSingleRegisterRequestBody extends ModbusRequestBody { static fromBuffer (buffer) { try { const fc = buffer.readUInt8(0) const address = buffer.readUInt16BE(1) const value = buffer.readUInt16BE(3) if (fc !== 0x06) { return null } return new WriteSingleRegisterRequestBody(address, value) } catch (e) { return null } } /** Create a new Write Single Register Request Body. * @param {Number} address Write address. * @param {Number} value Value to be written. * @throws {InvalidStartAddressException} When address is larger than 0xFFFF. */ constructor (address, value) { super(0x06) if (address > 0xFFFF) { throw new Error('InvalidStartAddress') } if (!Number.isInteger(value) || value < 0 || value > 0xFFFF) { throw new Error('InvalidValue') } this._address = address this._value = value } /** Address to be written. */ get address () { return this._address } /** Value to be written. */ get value () { return this._value } get name () { return 'WriteSingleRegister' } createPayload () { const payload = Buffer.alloc(5) payload.writeUInt8(this._fc, 0) // function code payload.writeUInt16BE(this._address, 1) // output address payload.writeUInt16BE(this._value, 3) // output value return payload } get byteCount () { return 5 } } module.exports = WriteSingleRegisterRequestBody