From 26555488c87d45d5c9fcb9cc4b983bf980975081 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E7=AB=8B=E5=B8=AE?= <3294713004@qq.com> Date: Sun, 18 Jan 2026 17:22:50 +0800 Subject: [PATCH] =?UTF-8?q?feat(core):=20micropython=E4=B8=8B=E4=B8=B2?= =?UTF-8?q?=E5=8F=A3=E5=BC=80=E5=90=AF=E5=90=8E=E5=85=88=E7=AD=89=E5=BE=85?= =?UTF-8?q?interrupt=E7=BB=93=E6=9D=9F=E5=90=8E=E5=86=8Dread?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mixly-modules/common/statusbar-serial.js | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/common/modules/mixly-modules/common/statusbar-serial.js b/common/modules/mixly-modules/common/statusbar-serial.js index 483c4531..cae4749e 100644 --- a/common/modules/mixly-modules/common/statusbar-serial.js +++ b/common/modules/mixly-modules/common/statusbar-serial.js @@ -85,6 +85,7 @@ class StatusBarSerial extends PageBase { #$hex_ = null; #opened_ = false; #valueTemp_ = ''; + #receiveTemp_ = ''; #manager_ = null; #output_ = null; #chart_ = null; @@ -253,6 +254,7 @@ class StatusBarSerial extends PageBase { + `==${Msg.Lang['statusbar.serial.port']} ${portName} ${Msg.Lang['statusbar.serial.close']}==`; this.setValue(output); this.#valueTemp_ = ''; + this.#receiveTemp_ = ''; this.#$sendInput_.val(''); this.#$sendInput_.attr('disabled', true); this.#chart_.stop(); @@ -274,6 +276,9 @@ class StatusBarSerial extends PageBase { }); this.#serial_.bind('onChar', (char) => { + if (!this.#reading_) { + this.#receiveTemp_ += char; + } if (!this.#reading_ || this.#output_.hexChecked()) { return; } @@ -453,12 +458,21 @@ class StatusBarSerial extends PageBase { async open() { await this.#serial_.open(this.#config_.baud); if (SELECTED_BOARD?.serial?.ctrlCBtn) { - await this.#serial_.sleep(500); + await this.#serial_.sleep(1000); await this.#serial_.interrupt(); - await this.#serial_.sleep(200); + const startTime = Number(new Date()); + let endTime = startTime; + while (endTime - startTime < 2000) { + await this.#serial_.sleep(50); + if (this.#receiveTemp_.indexOf('>>>') !== -1) { + break; + } + endTime = Number(new Date()); + } this.#valueTemp_ = ''; this.empty(); this.startRead(); + this.#receiveTemp_ = ''; await this.#serial_.reset(); } else { this.startRead();