Update: Arduino下自动根据代码中设置的串口波特率配置串口监视器 (#IAWTZG)

This commit is contained in:
王立帮
2024-10-14 20:24:05 +08:00
parent f82839e936
commit 3eec19ff4a
5 changed files with 98 additions and 65 deletions

View File

@@ -29,6 +29,10 @@ class Serial {
rts: true,
dtr: true
};
this.AVAILABEL_BAUDS = [
300, 600, 750, 1200, 2400, 4800, 9600, 19200, 31250, 38400, 57600,
74880, 115200, 230400, 250000, 460800, 500000, 921600, 1000000, 2000000,
];
this.getSelectedPortName = function () {
return Nav.getMain().getPortSelector().val();
@@ -46,6 +50,10 @@ class Serial {
};
}
this.portIsLegal = function (port) {
return this.portsName.includes(port);
}
/**
* @function 重新渲染串口下拉框
* @param {array} 当前可用的所有串口
@@ -186,6 +194,10 @@ class Serial {
}
}
baudRateIsLegal(baud) {
return Serial.AVAILABEL_BAUDS.includes(baud);
}
async setBaudRate(baud) {
this.#baud_ = baud;
}

View File

@@ -333,18 +333,7 @@ class StatusBarSerial extends PageBase {
const { id } = event.currentTarget.dataset;
const { data } = event.params;
if (id === 'baud') {
const baud = data.id - 0;
if (!this.isOpened()) {
this.#config_.baud = baud;
return;
}
this.#serial_.setBaudRate(baud)
.then(() => {
this.#config_.baud = baud;
})
.catch((error) => {
this.#$settingMenu_.filter('[data-id="baud"]').val(data).trigger('change');
});
this.setBaudRate(data.id - 0).catch(Debug.error);
} else if (id === 'send-with') {
if (data.id === 'no') {
this.#config_.sendWith = '';
@@ -521,6 +510,23 @@ class StatusBarSerial extends PageBase {
this.#chart_.setStatus(isOpened);
}
async setBaudRate(baud) {
if (!this.isOpened()) {
this.#config_.baud = baud;
return;
}
if (this.#serial_.baudRateIsLegal(baud)) {
try {
await this.#serial_.setBaudRate(baud);
this.#config_.baud = baud;
} catch (error) {
Debug.error(error);
}
}
this.#$settingMenu_.filter('[data-id="baud"]').val(this.#config_.baud).trigger('change');
this.startRead();
}
isOpened() {
return this.#opened_;
}