modbus-connect
Version:
Modbus RTU over Web Serial and Node.js SerialPort
57 lines (49 loc) • 1.53 kB
JavaScript
// errors.js
const EXCEPTION_CODES = require('./constants/constants.js');
class ModbusError extends Error {
constructor(message) {
super(message);
this.name = 'ModbusError';
}
}
class ModbusTimeoutError extends ModbusError {
constructor(message = 'Modbus request timed out') {
super(message);
this.name = 'ModbusTimeoutError';
}
}
class ModbusCRCError extends ModbusError {
constructor(message = 'Modbus CRC check failed') {
super(message);
this.name = 'ModbusCRCError';
}
}
class ModbusResponseError extends ModbusError {
constructor(message = 'Invalid Modbus response') {
super(message);
this.name = 'ModbusResponseError';
}
}
class ModbusTooManyEmptyReadsError extends ModbusError {
constructor(message = 'Too many empty reads from transport') {
super(message);
this.name = 'ModbusTooManyEmptyReadsError';
}
}
class ModbusExceptionError extends ModbusError {
constructor(functionCode, exceptionCode) {
const exceptionMessage = EXCEPTION_CODES[exceptionCode] || 'Unknown Exception';
super(`Modbus exception: function 0x${functionCode.toString(16)}, code 0x${exceptionCode.toString(16)} (${exceptionMessage})`);
this.name = 'ModbusExceptionError';
this.functionCode = functionCode;
this.exceptionCode = exceptionCode;
}
}
module.exports = {
ModbusError,
ModbusTimeoutError,
ModbusCRCError,
ModbusResponseError,
ModbusTooManyEmptyReadsError,
ModbusExceptionError
};