Update: 在线版打开串口时不再自动设置dtr和rts (实验性)

This commit is contained in:
王立帮
2025-03-09 12:04:27 +08:00
parent 405cc2339c
commit c18326aca4
2 changed files with 38 additions and 55 deletions

View File

@@ -458,11 +458,13 @@ class StatusBarSerial extends PageBase {
async open() { async open() {
await this.#serial_.open(this.#config_.baud); await this.#serial_.open(this.#config_.baud);
await this.#serial_.sleep(200); if (goog.isElectron || Env.hasSocketServer) {
try { await this.#serial_.sleep(200);
await this.#serial_.setDTRAndRTS(this.#config_.dtr, this.#config_.rts); try {
} catch (error) { await this.#serial_.setDTRAndRTS(this.#config_.dtr, this.#config_.rts);
Debug.error(error); } catch (error) {
Debug.error(error);
}
} }
if (SELECTED_BOARD?.serial?.ctrlCBtn) { if (SELECTED_BOARD?.serial?.ctrlCBtn) {
await this.#serial_.sleep(500); await this.#serial_.sleep(500);

View File

@@ -128,30 +128,23 @@ class WebSerialPort extends Serial {
} }
async open(baud) { async open(baud) {
return new Promise((resolve, reject) => { const portsName = Serial.getCurrentPortsName();
const portsName = Serial.getCurrentPortsName(); const currentPortName = this.getPortName();
const currentPortName = this.getPortName(); if (!portsName.includes(currentPortName)) {
if (!portsName.includes(currentPortName)) { throw Error('no device available');
reject('no device available'); return;
return; }
} if (this.isOpened()) {
if (this.isOpened()) { return;
resolve(); }
return; baud = baud ?? this.getBaudRate();
} this.#serialport_ = WebSerialPort.getPort(currentPortName);
baud = baud ?? this.getBaudRate(); await this.#serialport_.open({ baudRate: baud });
this.#serialport_ = WebSerialPort.getPort(currentPortName); super.open(baud);
this.#serialport_.open({ baudRate: baud }) super.setBaudRate(baud);
.then(() => { this.#keepReading_ = true;
super.open(baud); this.onOpen();
super.setBaudRate(baud); this.#addEventsListener_();
this.#keepReading_ = true;
this.onOpen();
this.#addEventsListener_();
resolve();
})
.catch(reject);
});
} }
async #waitForUnlock_(timeout) { async #waitForUnlock_(timeout) {
@@ -180,18 +173,13 @@ class WebSerialPort extends Serial {
} }
async setBaudRate(baud) { async setBaudRate(baud) {
return new Promise((resolve, reject) => { if (!this.isOpened()
if (!this.isOpened() || this.getBaudRate() === baud
|| this.getBaudRate() === baud || !this.baudRateIsLegal(baud)) {
|| !this.baudRateIsLegal(baud)) { return;
resolve(); }
return; await this.close();
} await this.open(baud);
this.close()
.then(() => this.open(baud))
.then(resolve)
.catch(reject);
});
} }
async sendString(str) { async sendString(str) {
@@ -215,21 +203,14 @@ class WebSerialPort extends Serial {
} }
async setDTRAndRTS(dtr, rts) { async setDTRAndRTS(dtr, rts) {
return new Promise((resolve, reject) => { if (!this.isOpened()) {
if (!this.isOpened()) { return;
resolve(); }
return; await this.#serialport_.setSignals({
} dataTerminalReady: dtr,
this.#serialport_.setSignals({ requestToSend: rts
dataTerminalReady: dtr,
requestToSend: rts
})
.then(() => {
super.setDTRAndRTS(dtr, rts);
resolve();
})
.catch(reject);
}); });
super.setDTRAndRTS(dtr, rts);
} }
async setDTR(dtr) { async setDTR(dtr) {