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,12 +458,14 @@ class StatusBarSerial extends PageBase {
async open() { async open() {
await this.#serial_.open(this.#config_.baud); await this.#serial_.open(this.#config_.baud);
if (goog.isElectron || Env.hasSocketServer) {
await this.#serial_.sleep(200); await this.#serial_.sleep(200);
try { try {
await this.#serial_.setDTRAndRTS(this.#config_.dtr, this.#config_.rts); await this.#serial_.setDTRAndRTS(this.#config_.dtr, this.#config_.rts);
} catch (error) { } catch (error) {
Debug.error(error); Debug.error(error);
} }
}
if (SELECTED_BOARD?.serial?.ctrlCBtn) { if (SELECTED_BOARD?.serial?.ctrlCBtn) {
await this.#serial_.sleep(500); await this.#serial_.sleep(500);
await this.#serial_.interrupt(); await this.#serial_.interrupt();

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)) {
reject('no device available'); throw Error('no device available');
return; return;
} }
if (this.isOpened()) { if (this.isOpened()) {
resolve();
return; return;
} }
baud = baud ?? this.getBaudRate(); baud = baud ?? this.getBaudRate();
this.#serialport_ = WebSerialPort.getPort(currentPortName); this.#serialport_ = WebSerialPort.getPort(currentPortName);
this.#serialport_.open({ baudRate: baud }) await this.#serialport_.open({ baudRate: baud });
.then(() => {
super.open(baud); super.open(baud);
super.setBaudRate(baud); super.setBaudRate(baud);
this.#keepReading_ = true; this.#keepReading_ = true;
this.onOpen(); this.onOpen();
this.#addEventsListener_(); 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)) {
resolve();
return; return;
} }
this.close() await this.close();
.then(() => this.open(baud)) await 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()) {
resolve();
return; return;
} }
this.#serialport_.setSignals({ await this.#serialport_.setSignals({
dataTerminalReady: dtr, dataTerminalReady: dtr,
requestToSend: rts requestToSend: rts
})
.then(() => {
super.setDTRAndRTS(dtr, rts);
resolve();
})
.catch(reject);
}); });
super.setDTRAndRTS(dtr, rts);
} }
async setDTR(dtr) { async setDTR(dtr) {