mirror of
https://github.com/Pablo2048/modbus-rtu-master.git
synced 2025-10-31 00:12:42 +01:00
Better disconnect and connection timeout handling
This commit is contained in:
@@ -37,16 +37,24 @@ class ModbusRTUMaster {
|
||||
}
|
||||
|
||||
async disconnect() {
|
||||
console.log('Disconnect requested');
|
||||
try {
|
||||
if (this.reader) {
|
||||
await this.reader.releaseLock();
|
||||
this.reader = null;
|
||||
}
|
||||
if (this.writer) {
|
||||
await this.writer.releaseLock();
|
||||
this.writer = null;
|
||||
}
|
||||
if (this.port) {
|
||||
await this.port.close();
|
||||
this.port = null;
|
||||
console.log('Serial port closed');
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error during disconnect:', error);
|
||||
}
|
||||
}
|
||||
|
||||
async readHoldingRegisters(slaveId, startAddress, quantity) {
|
||||
@@ -161,10 +169,16 @@ class ModbusRTUMaster {
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error receiving response:', error.message);
|
||||
if (this.reader) {
|
||||
await this.reader.cancel();
|
||||
await this.reader.releaseLock();
|
||||
this.reader = null;
|
||||
this.reader = this.port.readable.getReader();
|
||||
}
|
||||
if (error.message.includes('Device has been lost')) {
|
||||
await this.handleDeviceLost();
|
||||
}
|
||||
return { error: error.message };
|
||||
return { error: error.message }; // TODO: or throw error; ?
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user