UNPKG

modbus-connect

Version:

Modbus RTU over Web Serial and Node.js SerialPort

47 lines (37 loc) 1.37 kB
// function-codes/report-slave-id.js const { FUNCTION_CODES } = require('../constants/constants.js'); const { allocUint8Array, isUint8Array } = require('../utils/utils.js'); /** * Строит PDU запроса Report Slave ID (0x11) * @returns {Uint8Array} */ function buildReportSlaveIdRequest() { const pdu = allocUint8Array(1); pdu[0] = FUNCTION_CODES.REPORT_SLAVE_ID; return pdu; } /** * Разбирает PDU ответа на Report Slave ID * @param {Uint8Array} pdu * @returns {{ slaveId: number, isRunning: boolean, data: Uint8Array }} */ function parseReportSlaveIdResponse(pdu) { if (!isUint8Array(pdu)) { throw new TypeError('PDU must be Uint8Array'); } if (pdu[0] !== FUNCTION_CODES.REPORT_SLAVE_ID) { throw new Error(`Invalid function code: expected 0x11, got 0x${pdu[0].toString(16)}`); } const byteCount = pdu[1]; if (pdu.length !== byteCount + 2) { throw new Error(`Invalid byte count: expected ${byteCount}, got ${pdu.length - 2}`); } const slaveId = pdu[2]; const isRunning = pdu[3] === 0xFF; const data = pdu.slice(4); // Остальные байты — произвольные return { slaveId, isRunning, data }; } module.exports = { buildReportSlaveIdRequest, parseReportSlaveIdResponse }