Risolizione di un bug che causava il riavvio della porta
This commit is contained in:
18
index.js
18
index.js
@@ -97,10 +97,26 @@ module.exports = function (app) {
|
||||
|
||||
try {
|
||||
await bms.open();
|
||||
await bms.getStatus(); // necessario per cell/temp
|
||||
|
||||
let lastErr = null;
|
||||
for (let i=0; i<3; i++) {
|
||||
try {
|
||||
await bms.getStatus();
|
||||
lastErr = null;
|
||||
break;
|
||||
} catch (error) {
|
||||
lastErr = error;
|
||||
await new Promise(r => setTimeout(r, 500));
|
||||
}
|
||||
if (lastErr) throw lastErr;
|
||||
}
|
||||
app.setPluginStatus(`Connesso a ${opts.device}`);
|
||||
} catch (e) {
|
||||
app.setPluginError(`init failed: ${e.message}`);
|
||||
if (bms) {
|
||||
await bms.close().catch(()=>{});
|
||||
bms = null;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -29,9 +29,13 @@ class BMS {
|
||||
dataBits: 8,
|
||||
parity: 'none',
|
||||
stopBits: 1,
|
||||
lock: true,
|
||||
autoOpen: false
|
||||
});
|
||||
this.port.open(err => err ? reject(err) : this.port.flush(() => resolve()));
|
||||
this.port.open(err => {
|
||||
if (err) return reject(err);
|
||||
setTimeout(() => this.port.flush(() => resolve()), 300);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user