feat(core): micropython下串口开启后先等待interrupt结束后再read
This commit is contained in:
@@ -85,6 +85,7 @@ class StatusBarSerial extends PageBase {
|
|||||||
#$hex_ = null;
|
#$hex_ = null;
|
||||||
#opened_ = false;
|
#opened_ = false;
|
||||||
#valueTemp_ = '';
|
#valueTemp_ = '';
|
||||||
|
#receiveTemp_ = '';
|
||||||
#manager_ = null;
|
#manager_ = null;
|
||||||
#output_ = null;
|
#output_ = null;
|
||||||
#chart_ = null;
|
#chart_ = null;
|
||||||
@@ -253,6 +254,7 @@ class StatusBarSerial extends PageBase {
|
|||||||
+ `==${Msg.Lang['statusbar.serial.port']} ${portName} ${Msg.Lang['statusbar.serial.close']}==`;
|
+ `==${Msg.Lang['statusbar.serial.port']} ${portName} ${Msg.Lang['statusbar.serial.close']}==`;
|
||||||
this.setValue(output);
|
this.setValue(output);
|
||||||
this.#valueTemp_ = '';
|
this.#valueTemp_ = '';
|
||||||
|
this.#receiveTemp_ = '';
|
||||||
this.#$sendInput_.val('');
|
this.#$sendInput_.val('');
|
||||||
this.#$sendInput_.attr('disabled', true);
|
this.#$sendInput_.attr('disabled', true);
|
||||||
this.#chart_.stop();
|
this.#chart_.stop();
|
||||||
@@ -274,6 +276,9 @@ class StatusBarSerial extends PageBase {
|
|||||||
});
|
});
|
||||||
|
|
||||||
this.#serial_.bind('onChar', (char) => {
|
this.#serial_.bind('onChar', (char) => {
|
||||||
|
if (!this.#reading_) {
|
||||||
|
this.#receiveTemp_ += char;
|
||||||
|
}
|
||||||
if (!this.#reading_ || this.#output_.hexChecked()) {
|
if (!this.#reading_ || this.#output_.hexChecked()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -453,12 +458,21 @@ class StatusBarSerial extends PageBase {
|
|||||||
async open() {
|
async open() {
|
||||||
await this.#serial_.open(this.#config_.baud);
|
await this.#serial_.open(this.#config_.baud);
|
||||||
if (SELECTED_BOARD?.serial?.ctrlCBtn) {
|
if (SELECTED_BOARD?.serial?.ctrlCBtn) {
|
||||||
await this.#serial_.sleep(500);
|
await this.#serial_.sleep(1000);
|
||||||
await this.#serial_.interrupt();
|
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.#valueTemp_ = '';
|
||||||
this.empty();
|
this.empty();
|
||||||
this.startRead();
|
this.startRead();
|
||||||
|
this.#receiveTemp_ = '';
|
||||||
await this.#serial_.reset();
|
await this.#serial_.reset();
|
||||||
} else {
|
} else {
|
||||||
this.startRead();
|
this.startRead();
|
||||||
|
|||||||
Reference in New Issue
Block a user