diff --git a/boards/default/micropython_esp32/config.json b/boards/default/micropython_esp32/config.json index 000cc780..5507c71f 100644 --- a/boards/default/micropython_esp32/config.json +++ b/boards/default/micropython_esp32/config.json @@ -52,7 +52,15 @@ "yMin": 0, "pointNum": 100, "rts": false, - "dtr": true + "dtr": true, + "micropython:esp32:mixgo": { + "rts": true, + "dtr": true + }, + "micropython:esp32:mpython": { + "rts": true, + "dtr": true + } }, "lib": { "mixly": { diff --git a/boards/default_src/micropython/origin/build/lib/ollama.py b/boards/default_src/micropython/origin/build/lib/ollama.py index 5f777a1b..f8f7147b 100644 --- a/boards/default_src/micropython/origin/build/lib/ollama.py +++ b/boards/default_src/micropython/origin/build/lib/ollama.py @@ -4,7 +4,7 @@ import json class Ollama(): - def __init__(self, url="", model=""): + def __init__(self, url="", model="", max_history_num=0): self._heads = { "Accept": "text/event-stream", # "Cache-Control": "no-cache", @@ -13,7 +13,7 @@ class Ollama(): } self._url = url self._max_retries = 1 - self._max_history_num = 0 + self._max_history_num = max_history_num self._timeout = 10000 self._messages = [] self._data = { diff --git a/boards/default_src/micropython_esp32/origin/build/Generic_ESP32_lib-v1.23.0.bin b/boards/default_src/micropython_esp32/origin/build/Generic_ESP32_lib-v1.23.0.bin index d3a2bc0a..8b2b16f8 100644 Binary files a/boards/default_src/micropython_esp32/origin/build/Generic_ESP32_lib-v1.23.0.bin and b/boards/default_src/micropython_esp32/origin/build/Generic_ESP32_lib-v1.23.0.bin differ diff --git a/boards/default_src/micropython_esp32/origin/build/Mixgo_PE_lib-v1.23.0.bin b/boards/default_src/micropython_esp32/origin/build/Mixgo_PE_lib-v1.23.0.bin index 1bc449dc..4d53bbc3 100644 Binary files a/boards/default_src/micropython_esp32/origin/build/Mixgo_PE_lib-v1.23.0.bin and b/boards/default_src/micropython_esp32/origin/build/Mixgo_PE_lib-v1.23.0.bin differ diff --git a/boards/default_src/micropython_esp32/origin/build/Mixgo_lib-v1.23.0.bin b/boards/default_src/micropython_esp32/origin/build/Mixgo_lib-v1.23.0.bin index 81896e8e..1f1165e3 100644 Binary files a/boards/default_src/micropython_esp32/origin/build/Mixgo_lib-v1.23.0.bin and b/boards/default_src/micropython_esp32/origin/build/Mixgo_lib-v1.23.0.bin differ diff --git a/boards/default_src/micropython_esp32/origin/build/mPython_lib-v1.23.0.bin b/boards/default_src/micropython_esp32/origin/build/mPython_lib-v1.23.0.bin index b9a91bcc..8710ee4b 100644 Binary files a/boards/default_src/micropython_esp32/origin/build/mPython_lib-v1.23.0.bin and b/boards/default_src/micropython_esp32/origin/build/mPython_lib-v1.23.0.bin differ diff --git a/boards/default_src/micropython_esp32/origin/config.json b/boards/default_src/micropython_esp32/origin/config.json index 000cc780..5507c71f 100644 --- a/boards/default_src/micropython_esp32/origin/config.json +++ b/boards/default_src/micropython_esp32/origin/config.json @@ -52,7 +52,15 @@ "yMin": 0, "pointNum": 100, "rts": false, - "dtr": true + "dtr": true, + "micropython:esp32:mixgo": { + "rts": true, + "dtr": true + }, + "micropython:esp32:mpython": { + "rts": true, + "dtr": true + } }, "lib": { "mixly": { diff --git a/boards/default_src/micropython_esp32c2/origin/build/Mixgo_Mini_lib-v1.23.0.bin b/boards/default_src/micropython_esp32c2/origin/build/Mixgo_Mini_lib-v1.23.0.bin index a1a7fc15..5c2d3801 100644 Binary files a/boards/default_src/micropython_esp32c2/origin/build/Mixgo_Mini_lib-v1.23.0.bin and b/boards/default_src/micropython_esp32c2/origin/build/Mixgo_Mini_lib-v1.23.0.bin differ diff --git a/boards/default_src/micropython_esp32c2/origin/build/Mixgo_Mini_lib_ble-v1.23.0.bin b/boards/default_src/micropython_esp32c2/origin/build/Mixgo_Mini_lib_ble-v1.23.0.bin index 6e091e81..f39e6928 100644 Binary files a/boards/default_src/micropython_esp32c2/origin/build/Mixgo_Mini_lib_ble-v1.23.0.bin and b/boards/default_src/micropython_esp32c2/origin/build/Mixgo_Mini_lib_ble-v1.23.0.bin differ diff --git a/boards/default_src/micropython_esp32c3/origin/build/Generic_C3_UART_lib-v1.23.0.bin b/boards/default_src/micropython_esp32c3/origin/build/Generic_C3_UART_lib-v1.23.0.bin index 0e8245b4..d80ff601 100644 Binary files a/boards/default_src/micropython_esp32c3/origin/build/Generic_C3_UART_lib-v1.23.0.bin and b/boards/default_src/micropython_esp32c3/origin/build/Generic_C3_UART_lib-v1.23.0.bin differ diff --git a/boards/default_src/micropython_esp32c3/origin/build/Mixgo_CC_lib-v1.23.0.bin b/boards/default_src/micropython_esp32c3/origin/build/Mixgo_CC_lib-v1.23.0.bin index cd242c7a..2ff948a3 100644 Binary files a/boards/default_src/micropython_esp32c3/origin/build/Mixgo_CC_lib-v1.23.0.bin and b/boards/default_src/micropython_esp32c3/origin/build/Mixgo_CC_lib-v1.23.0.bin differ diff --git a/boards/default_src/micropython_esp32c3/origin/build/Mixgo_Car_lib-v1.23.0.bin b/boards/default_src/micropython_esp32c3/origin/build/Mixgo_Car_lib-v1.23.0.bin index eb7351bb..9265a665 100644 Binary files a/boards/default_src/micropython_esp32c3/origin/build/Mixgo_Car_lib-v1.23.0.bin and b/boards/default_src/micropython_esp32c3/origin/build/Mixgo_Car_lib-v1.23.0.bin differ diff --git a/boards/default_src/micropython_esp32c3/origin/build/Mixgo_ME_lib-v1.23.0.bin b/boards/default_src/micropython_esp32c3/origin/build/Mixgo_ME_lib-v1.23.0.bin index 73be573c..5d8b1aa2 100644 Binary files a/boards/default_src/micropython_esp32c3/origin/build/Mixgo_ME_lib-v1.23.0.bin and b/boards/default_src/micropython_esp32c3/origin/build/Mixgo_ME_lib-v1.23.0.bin differ diff --git a/boards/default_src/micropython_esp32s2/origin/build/Generic_S2_lib-v1.23.0.bin b/boards/default_src/micropython_esp32s2/origin/build/Generic_S2_lib-v1.23.0.bin index c46b61c4..f68624cb 100644 Binary files a/boards/default_src/micropython_esp32s2/origin/build/Generic_S2_lib-v1.23.0.bin and b/boards/default_src/micropython_esp32s2/origin/build/Generic_S2_lib-v1.23.0.bin differ diff --git a/boards/default_src/micropython_esp32s2/origin/build/Mixgo_CE_lib-v1.23.0.bin b/boards/default_src/micropython_esp32s2/origin/build/Mixgo_CE_lib-v1.23.0.bin index c29a21e2..7ab153f7 100644 Binary files a/boards/default_src/micropython_esp32s2/origin/build/Mixgo_CE_lib-v1.23.0.bin and b/boards/default_src/micropython_esp32s2/origin/build/Mixgo_CE_lib-v1.23.0.bin differ diff --git a/boards/default_src/micropython_esp32s3/origin/build/Mixgo_Sant_lib-v1.23.0.bin b/boards/default_src/micropython_esp32s3/origin/build/Mixgo_Sant_lib-v1.23.0.bin index cc783234..037c9c74 100644 Binary files a/boards/default_src/micropython_esp32s3/origin/build/Mixgo_Sant_lib-v1.23.0.bin and b/boards/default_src/micropython_esp32s3/origin/build/Mixgo_Sant_lib-v1.23.0.bin differ diff --git a/boards/default_src/micropython_robot/origin/build/MixBot_lib-v1.23.0.bin b/boards/default_src/micropython_robot/origin/build/MixBot_lib-v1.23.0.bin index c5e420fb..eee8e858 100644 Binary files a/boards/default_src/micropython_robot/origin/build/MixBot_lib-v1.23.0.bin and b/boards/default_src/micropython_robot/origin/build/MixBot_lib-v1.23.0.bin differ diff --git a/boards/default_src/micropython_robot/origin/build/Mixgo_FeiYi_lib-v1.23.0.bin b/boards/default_src/micropython_robot/origin/build/Mixgo_FeiYi_lib-v1.23.0.bin index 1fc95baa..abbe9053 100644 Binary files a/boards/default_src/micropython_robot/origin/build/Mixgo_FeiYi_lib-v1.23.0.bin and b/boards/default_src/micropython_robot/origin/build/Mixgo_FeiYi_lib-v1.23.0.bin differ diff --git a/boards/default_src/micropython_robot/origin/build/RM_E1_lib-v1.23.0.bin b/boards/default_src/micropython_robot/origin/build/RM_E1_lib-v1.23.0.bin index 175ceed6..bb76995a 100644 Binary files a/boards/default_src/micropython_robot/origin/build/RM_E1_lib-v1.23.0.bin and b/boards/default_src/micropython_robot/origin/build/RM_E1_lib-v1.23.0.bin differ diff --git a/common/modules/mixly-modules/common/statusbar-serial.js b/common/modules/mixly-modules/common/statusbar-serial.js index b5954df4..d312917c 100644 --- a/common/modules/mixly-modules/common/statusbar-serial.js +++ b/common/modules/mixly-modules/common/statusbar-serial.js @@ -458,13 +458,11 @@ class StatusBarSerial extends PageBase { async open() { await this.#serial_.open(this.#config_.baud); - if (goog.isElectron || Env.hasSocketServer) { - await this.#serial_.sleep(200); - try { - await this.#serial_.setDTRAndRTS(this.#config_.dtr, this.#config_.rts); - } catch (error) { - Debug.error(error); - } + await this.#serial_.sleep(200); + try { + await this.#serial_.setDTRAndRTS(this.#config_.dtr, this.#config_.rts); + } catch (error) { + Debug.error(error); } if (SELECTED_BOARD?.serial?.ctrlCBtn) { await this.#serial_.sleep(500); diff --git a/common/modules/mixly-modules/deps.json b/common/modules/mixly-modules/deps.json index f90fa53a..57506ad8 100644 --- a/common/modules/mixly-modules/deps.json +++ b/common/modules/mixly-modules/deps.json @@ -1236,6 +1236,7 @@ "Mustache", "Mixly.Ampy", "Mixly.Env", + "Mixly.Msg", "Mixly.Serial", "Mixly.Electron" ], diff --git a/common/modules/mixly-modules/electron/ampy.js b/common/modules/mixly-modules/electron/ampy.js index 441c3b8b..adeed219 100644 --- a/common/modules/mixly-modules/electron/ampy.js +++ b/common/modules/mixly-modules/electron/ampy.js @@ -4,6 +4,7 @@ goog.require('path'); goog.require('Mustache'); goog.require('Mixly.Ampy'); goog.require('Mixly.Env'); +goog.require('Mixly.Msg'); goog.require('Mixly.Serial'); goog.require('Mixly.Electron'); goog.provide('Mixly.Electron.Ampy'); @@ -11,6 +12,7 @@ goog.provide('Mixly.Electron.Ampy'); const { Ampy, Env, + Msg, Serial, Electron } = Mixly; @@ -102,7 +104,7 @@ class AmpyExt extends Ampy { async exec(port, command) { const portsName = Serial.getCurrentPortsName(); if (!portsName.includes(port)) { - throw new Error('无可用串口'); + throw new Error(Msg.Lang['statusbar.serial.noPort']); return; } const { mainStatusBarTabs } = Mixly; diff --git a/common/modules/mixly-modules/web/ampy.js b/common/modules/mixly-modules/web/ampy.js index 54e8cd93..d46b2384 100644 --- a/common/modules/mixly-modules/web/ampy.js +++ b/common/modules/mixly-modules/web/ampy.js @@ -84,10 +84,10 @@ class AmpyExt extends Ampy { } } if (nowTime - startTime >= timeout) { - throw new Error(ending + '查找失败'); + return ''; } if (!this.isActive()) { - throw new Error('数据读取中断'); + throw new Error(Msg.Lang['ampy.dataReadInterrupt']); } await this.#device_.sleep(100); } @@ -197,7 +197,7 @@ class AmpyExt extends Ampy { async get(filename, timeout = 5000) { if (!this.isActive()) { - throw new Error('串口未打开'); + throw new Error(Msg.Lang['ampy.portIsNotOpen']); } const code = Mustache.render(AmpyExt.GET, { path: filename @@ -205,7 +205,7 @@ class AmpyExt extends Ampy { await this.exec(code); await this.#device_.sleep(100); if (!await this.readUntil('ok', true, timeout)) { - throw new Error('无法执行python代码'); + throw new Error(Msg.Lang['ampy.executePythonCodeFailed']); } let str = await this.readUntil('>', false, timeout); str = str.replace('\x04\x04', ''); @@ -218,7 +218,7 @@ class AmpyExt extends Ampy { async put(filename, code) { if (!this.isActive()) { - throw new Error('串口未打开'); + throw new Error(Msg.Lang['ampy.portIsNotOpen']); } let str = `file = open('${filename}', 'wb')\n`; const buffer = this.#device_.encode(code); @@ -241,7 +241,7 @@ class AmpyExt extends Ampy { async ls(directory = '/', longFormat = true, recursive = false, timeout = 5000) { if (!this.isActive()) { - throw new Error('串口未打开'); + throw new Error(Msg.Lang['ampy.portIsNotOpen']); } let code = ''; if (longFormat) { @@ -260,7 +260,7 @@ class AmpyExt extends Ampy { await this.exec(code); await this.#device_.sleep(100); if (!await this.readUntil('ok', true, timeout)) { - throw new Error('无法执行python代码'); + throw new Error(Msg.Lang['ampy.executePythonCodeFailed']); } let str = await this.readUntil('>', false, timeout); let info = null; @@ -273,7 +273,7 @@ class AmpyExt extends Ampy { async mkdir(directory, timeout = 5000) { if (!this.isActive()) { - throw new Error('串口未打开'); + throw new Error(Msg.Lang['ampy.portIsNotOpen']); } const code = Mustache.render(AmpyExt.MKDIR, { path: directory @@ -281,7 +281,7 @@ class AmpyExt extends Ampy { await this.exec(code); await this.#device_.sleep(100); if (!await this.readUntil('ok', true, timeout)) { - throw new Error('无法执行python代码'); + throw new Error(Msg.Lang['ampy.executePythonCodeFailed']); } let str = await this.readUntil('>', false, timeout); if (str.indexOf('OSError') === -1) { @@ -292,7 +292,7 @@ class AmpyExt extends Ampy { async mkfile(file, timeout = 5000) { if (!this.isActive()) { - throw new Error('串口未打开'); + throw new Error(Msg.Lang['ampy.portIsNotOpen']); } const code = Mustache.render(AmpyExt.MKFILE, { path: file @@ -300,7 +300,7 @@ class AmpyExt extends Ampy { await this.exec(code); await this.#device_.sleep(100); if (!await this.readUntil('ok', true, timeout)) { - throw new Error('无法执行python代码'); + throw new Error(Msg.Lang['ampy.executePythonCodeFailed']); } let str = await this.readUntil('>', false, timeout); if (str.indexOf('OSError') === -1) { @@ -311,7 +311,7 @@ class AmpyExt extends Ampy { async rename(oldname, newname, timeout = 5000) { if (!this.isActive()) { - throw new Error('串口未打开'); + throw new Error(Msg.Lang['ampy.portIsNotOpen']); } const code = Mustache.render(AmpyExt.RENAME, { oldPath: oldname, @@ -320,7 +320,7 @@ class AmpyExt extends Ampy { await this.exec(code); await this.#device_.sleep(100); if (!await this.readUntil('ok', true, timeout)) { - throw new Error('无法执行python代码'); + throw new Error(Msg.Lang['ampy.executePythonCodeFailed']); } let str = await this.readUntil('>', false, timeout); if (str.indexOf('OSError') === -1) { @@ -331,7 +331,7 @@ class AmpyExt extends Ampy { async rm(filename, timeout = 5000) { if (!this.isActive()) { - throw new Error('串口未打开'); + throw new Error(Msg.Lang['ampy.portIsNotOpen']); } const code = Mustache.render(AmpyExt.RM, { path: filename @@ -339,7 +339,7 @@ class AmpyExt extends Ampy { await this.exec(code); await this.#device_.sleep(100); if (!await this.readUntil('ok', true, timeout)) { - throw new Error('无法执行python代码'); + throw new Error(Msg.Lang['ampy.executePythonCodeFailed']); } let str = await this.readUntil('>', false, timeout); if (str.indexOf('OSError') === -1) { @@ -350,7 +350,7 @@ class AmpyExt extends Ampy { async rmdir(directory, timeout = 5000) { if (!this.isActive()) { - throw new Error('串口未打开'); + throw new Error(Msg.Lang['ampy.portIsNotOpen']); } const code = Mustache.render(AmpyExt.RMDIR, { path: directory @@ -358,7 +358,7 @@ class AmpyExt extends Ampy { await this.exec(code); await this.#device_.sleep(100); if (!await this.readUntil('ok', true, timeout)) { - throw new Error('无法执行python代码'); + throw new Error(Msg.Lang['ampy.executePythonCodeFailed']); } let str = await this.readUntil('>', false, timeout); if (str.indexOf('OSError') === -1) { diff --git a/common/msg/mixly/en.json b/common/msg/mixly/en.json index 2a44ede1..c3658ab0 100644 --- a/common/msg/mixly/en.json +++ b/common/msg/mixly/en.json @@ -317,6 +317,9 @@ "ampy.enterRawREPLFailed": "Unable to enter Raw REPL", "ampy.exitRawREPLFailed": "Unable to exit Raw REPL", "ampy.exitREPLFailed": "Unable to exit REPL", + "ampy.portIsNotOpen": "Serial port is not open", + "ampy.executePythonCodeFailed": "Unable to execute python code", + "ampy.dataReadInterrupt": "Data reading interrupted", "editor.contextMenu.cut": "Cut", "editor.contextMenu.copy": "Copy", "editor.contextMenu.paste": "Paste", diff --git a/common/msg/mixly/zh-hans.json b/common/msg/mixly/zh-hans.json index ef3266d4..5a26c732 100644 --- a/common/msg/mixly/zh-hans.json +++ b/common/msg/mixly/zh-hans.json @@ -317,6 +317,9 @@ "ampy.enterRawREPLFailed": "无法进入Raw REPL", "ampy.exitRawREPLFailed": "无法退出Raw REPL", "ampy.exitREPLFailed": "无法退出REPL", + "ampy.portIsNotOpen": "串口未打开", + "ampy.executePythonCodeFailed": "无法执行python代码", + "ampy.dataReadInterrupt": "数据读取中断", "editor.contextMenu.cut": "剪切", "editor.contextMenu.copy": "复制", "editor.contextMenu.paste": "粘贴", diff --git a/common/msg/mixly/zh-hant.json b/common/msg/mixly/zh-hant.json index 82df240b..ef15734f 100644 --- a/common/msg/mixly/zh-hant.json +++ b/common/msg/mixly/zh-hant.json @@ -317,6 +317,9 @@ "ampy.enterRawREPLFailed": "無法進入Raw REPL", "ampy.exitRawREPLFailed": "無法退出Raw REPL", "ampy.exitREPLFailed": "無法退出REPL", + "ampy.portIsNotOpen": "串列埠未開啟", + "ampy.executePythonCodeFailed": "無法執行python程式碼", + "ampy.dataReadInterrupt": "資料讀取中斷", "editor.contextMenu.cut": "剪下", "editor.contextMenu.copy": "複製", "editor.contextMenu.paste": "貼上",