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 {
|
try {
|
||||||
await bms.open();
|
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}`);
|
app.setPluginStatus(`Connesso a ${opts.device}`);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
app.setPluginError(`init failed: ${e.message}`);
|
app.setPluginError(`init failed: ${e.message}`);
|
||||||
|
if (bms) {
|
||||||
|
await bms.close().catch(()=>{});
|
||||||
|
bms = null;
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,9 +29,13 @@ class BMS {
|
|||||||
dataBits: 8,
|
dataBits: 8,
|
||||||
parity: 'none',
|
parity: 'none',
|
||||||
stopBits: 1,
|
stopBits: 1,
|
||||||
|
lock: true,
|
||||||
autoOpen: false
|
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