modbus-connect
Version:
Modbus RTU over Web Serial and Node.js SerialPort
53 lines (46 loc) • 1.4 kB
JavaScript
// function-codes/SGM130/get-controller-time.js
const { FUNCTION_CODES } = require('../../constants/constants.js');
// Код функции для получения времени
const GET_CONTROLLER_TIME = FUNCTION_CODES.GET_CONTROLLER_TIME;
/**
* Формирует PDU-запрос для получения текущего времени контроллера.
* @returns {Uint8Array}
*/
function buildGetControllerTimeRequest() {
return new Uint8Array([GET_CONTROLLER_TIME]);
}
/**
* Разбирает PDU-ответ от контроллера с текущим временем.
* @param {Uint8Array} pdu
* @returns {{
* seconds: number,
* minutes: number,
* hours: number,
* day: number,
* month: number,
* year: number
* }}
*/
function parseGetControllerTimeResponse(pdu) {
if (!pdu || pdu.length !== 10 || pdu[0] !== GET_CONTROLLER_TIME) {
throw new Error('Invalid response for Get Controller Time');
}
const seconds = pdu[3];
const minutes = pdu[4];
const hours = pdu[5];
const day = pdu[6];
const month = pdu[7];
const year = pdu[8] + (pdu[9] << 8);
return {
seconds,
minutes,
hours,
day,
month,
year
};
}
module.exports = {
buildGetControllerTimeRequest,
parseGetControllerTimeResponse
}