- optimise behavior of rts/dtr signal

This commit is contained in:
Xen 2020-07-30 20:46:15 +08:00
parent c9abec0d21
commit 4e42075e6b
2 changed files with 27 additions and 30 deletions

View File

@ -442,13 +442,13 @@
<div class="col s1"></div> <div class="col s1"></div>
<a <a
class="btn-small waves-effect z-depth-0 modem-btn col s1" class="btn-small waves-effect modem-btn grey col s1"
id="rts-btn" id="rts-btn"
>RTS</a >RTS</a
> >
<div class="col s1"></div> <div class="col s1"></div>
<a <a
class="btn-small waves-effect z-depth-0 modem-btn col s1" class="btn-small waves-effect modem-btn grey col s1"
id="dtr-btn" id="dtr-btn"
>DTR</a >DTR</a
> >

View File

@ -7,8 +7,8 @@ var modemSignal = {
cts: false, cts: false,
dsr: false, dsr: false,
dcd: false, dcd: false,
rts: true, rts: false,
dtr: true, dtr: false,
}; };
function portUpdate() { function portUpdate() {
@ -74,16 +74,12 @@ function modemSignalReset() {
modemSignal.cts = false; modemSignal.cts = false;
modemSignal.dsr = false; modemSignal.dsr = false;
modemSignal.dcd = false; modemSignal.dcd = false;
modemSignal.rts = true;
modemSignal.dtr = true;
document.getElementById("cts-btn").style.cssText = document.getElementById("cts-btn").style.cssText =
"background-color: #dfdfdf !important"; "background-color: #dfdfdf !important";
document.getElementById("dsr-btn").style.cssText = document.getElementById("dsr-btn").style.cssText =
"background-color: #dfdfdf !important"; "background-color: #dfdfdf !important";
document.getElementById("dcd-btn").style.cssText = document.getElementById("dcd-btn").style.cssText =
"background-color: #dfdfdf !important"; "background-color: #dfdfdf !important";
document.getElementById("rts-btn").style.backgroundColor = "";
document.getElementById("dtr-btn").style.backgroundColor = "";
} }
function serialGetOptions() { function serialGetOptions() {
@ -159,10 +155,15 @@ document.getElementById("port-switch").onclick = (e) => {
if (config.general.modemSignal === true) { if (config.general.modemSignal === true) {
modemSignalTimer = setInterval(modemSignalTimerHandle, 100); modemSignalTimer = setInterval(modemSignalTimerHandle, 100);
} }
// Set below signal will cause some device reboot. // Some device use rts/dtr for private purpose, so below code
// port.set({ rts: true, dtr: true }, (e) => { // may cause strange behaviors.
// if (e !== null) console.error(e); // Below setting can fix known issues on certain devices, but may
// }); // cause issues to other devices.
// To fit your device's private behavior, first config setting before
// open the port.
port.set({ rts: modemSignal.rts, dtr: modemSignal.dtr }, (e) => {
if (e !== null) console.error(e);
});
}); });
port.on("error", (e) => { port.on("error", (e) => {
@ -202,38 +203,34 @@ document.getElementById("port-switch").onclick = (e) => {
document.getElementById("rts-btn").onclick = (e) => { document.getElementById("rts-btn").onclick = (e) => {
console.log("rts click"); console.log("rts click");
if (port === undefined || port.isOpen === false) return;
if (modemSignal.rts === true) { if (modemSignal.rts === true) {
modemSignal.rts = false; modemSignal.rts = false;
e.target.style.backgroundColor = "#dfdfdf"; e.target.classList.add("grey");
port.set({ rts: false }, (e) => {
if (e !== null) console.error(e);
});
} else { } else {
modemSignal.rts = true; modemSignal.rts = true;
e.target.style.backgroundColor = ""; e.target.classList.remove("grey");
port.set({ rts: modemSignal.rts, dtr: modemSignal.dtr }, (e) => {
if (e !== null) console.error(e);
});
} }
if (port === undefined || port.isOpen === false) return;
port.set({ rts: modemSignal.rts, dtr: modemSignal.dtr }, (e) => {
if (e !== null) console.error(e);
});
}; };
document.getElementById("dtr-btn").onclick = (e) => { document.getElementById("dtr-btn").onclick = (e) => {
console.log("dtr click"); console.log("dtr click");
if (port === undefined || port.isOpen === false) return;
if (modemSignal.dtr === true) { if (modemSignal.dtr === true) {
modemSignal.dtr = false; modemSignal.dtr = false;
e.target.style.backgroundColor = "#dfdfdf"; e.target.classList.add("grey");
port.set({ dtr: false }, (e) => {
if (e !== null) console.error(e);
});
} else { } else {
modemSignal.dtr = true; modemSignal.dtr = true;
e.target.style.backgroundColor = ""; e.target.classList.remove("grey");
port.set({ rts: modemSignal.rts, dtr: true }, (e) => {
if (e !== null) console.error(e);
});
} }
if (port === undefined || port.isOpen === false) return;
port.set({ rts: modemSignal.rts, dtr: modemSignal.dtr }, (e) => {
if (e !== null) console.error(e);
});
}; };