feat(core): 优化在线版下ampy和kflash的进度显示
This commit is contained in:
@@ -418,9 +418,7 @@ BU.burnWithKFlash = async (binFile, erase) => {
|
||||
mainStatusBarTabs.changeTo('output');
|
||||
BU.progressLayer.title(`${Msg.Lang['shell.burning']}...`);
|
||||
BU.progressLayer.show();
|
||||
statusBarTerminal.addValue(Msg.Lang['shell.bin.reading'] + "...");
|
||||
statusBarTerminal.addValue("\n");
|
||||
|
||||
|
||||
let data = [];
|
||||
try {
|
||||
for (let i of binFile) {
|
||||
@@ -437,30 +435,32 @@ BU.burnWithKFlash = async (binFile, erase) => {
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
statusBarTerminal.addValue("Failed!\n" + Msg.Lang['shell.bin.readFailed'] + "!\n");
|
||||
statusBarTerminal.addValue("\n" + error + "\n", true);
|
||||
statusBarTerminal.addValue(`\n[ERROR] ${error}\n`, true);
|
||||
BU.progressLayer.hide();
|
||||
statusBarTerminal.addValue(`==${Msg.Lang['shell.burnFailed']}==\n`);
|
||||
return;
|
||||
}
|
||||
statusBarTerminal.addValue("Done!\n");
|
||||
let serial = null;
|
||||
try {
|
||||
serial = new Serial(portName);
|
||||
const kflash = new KFlash(serial, (message) => {
|
||||
const kflash = new KFlash(serial);
|
||||
kflash.bind('message', (message) => {
|
||||
statusBarTerminal.addValue(message);
|
||||
});
|
||||
kflash.bind('replaceMessage', (lineNumber, message) => {
|
||||
statusBarTerminal.replaceLine(lineNumber, message);
|
||||
});
|
||||
await kflash.enter();
|
||||
for (let item of data) {
|
||||
await kflash.write(item.data, item.address, item.sha256Prefix ?? true, item?.filename ?? 'main.bin');
|
||||
}
|
||||
BU.progressLayer.hide();
|
||||
layer.msg(Msg.Lang['shell.burnSucc'], { time: 1000 });
|
||||
statusBarTerminal.addValue(`==${Msg.Lang['shell.burnSucc']}==\n`);
|
||||
statusBarTerminal.appendLine(`==${Msg.Lang['shell.burnSucc']}==\n`);
|
||||
} catch (error) {
|
||||
statusBarTerminal.addValue(`[ERROR] ${error.message}\n`);
|
||||
statusBarTerminal.appendLine(`[ERROR] ${error.message}\n`);
|
||||
BU.progressLayer.hide();
|
||||
statusBarTerminal.addValue(`==${Msg.Lang['shell.burnFailed']}==\n`);
|
||||
statusBarTerminal.appendLine(`==${Msg.Lang['shell.burnFailed']}==\n`);
|
||||
} finally {
|
||||
try {
|
||||
serial && await serial.close();
|
||||
@@ -640,7 +640,7 @@ BU.uploadWithAmpy = async (portName) => {
|
||||
let statusBarSerial = mainStatusBarTabs.getStatusBarById(portName);
|
||||
BU.burning = false;
|
||||
BU.uploading = true;
|
||||
statusBarTerminal.setValue(Msg.Lang['shell.uploading'] + '...\n');
|
||||
statusBarTerminal.setValue(`${Msg.Lang['shell.uploading']}...\n`);
|
||||
mainStatusBarTabs.show();
|
||||
mainStatusBarTabs.changeTo('output');
|
||||
const mainWorkspace = Workspace.getMain();
|
||||
@@ -650,12 +650,21 @@ BU.uploadWithAmpy = async (portName) => {
|
||||
BU.progressLayer.show();
|
||||
const serial = new Serial(portName);
|
||||
const ampy = new Ampy(serial);
|
||||
ampy.bind('message', (message) => {
|
||||
statusBarTerminal.addValue(message);
|
||||
});
|
||||
ampy.bind('replaceMessage', (lineNumber, message) => {
|
||||
statusBarTerminal.replaceLine(lineNumber, message);
|
||||
});
|
||||
const code = editor.getCode();
|
||||
let closePromise = Promise.resolve();
|
||||
if (statusBarSerial) {
|
||||
closePromise = statusBarSerial.close();
|
||||
}
|
||||
try {
|
||||
await closePromise;
|
||||
await ampy.enter();
|
||||
await ampy.put('main.py', code);
|
||||
/*const importsMap = BU.getImportModules(code);
|
||||
let libraries = {};
|
||||
for (let key in importsMap) {
|
||||
@@ -665,13 +674,8 @@ BU.uploadWithAmpy = async (portName) => {
|
||||
data,
|
||||
size: importsMap[key]['__size__']
|
||||
};
|
||||
}*/
|
||||
await closePromise;
|
||||
await ampy.enter();
|
||||
statusBarTerminal.addValue('Writing main.py ');
|
||||
await ampy.put('main.py', code);
|
||||
statusBarTerminal.addValue('Done!\n');
|
||||
/*const cwd = await ampy.cwd();
|
||||
}
|
||||
let cwd = await ampy.cwd();
|
||||
const rootInfo = await ampy.ls(cwd);
|
||||
let rootMap = {};
|
||||
for (let item of rootInfo) {
|
||||
@@ -683,19 +687,17 @@ BU.uploadWithAmpy = async (portName) => {
|
||||
if (libraries && libraries instanceof Object) {
|
||||
for (let key in libraries) {
|
||||
if (rootMap[`${cwd}/${key}`] !== undefined && rootMap[`${cwd}/${key}`] === libraries[key].size) {
|
||||
statusBarTerminal.addValue(`Skip ${key}\n`);
|
||||
statusBarTerminal.addValue(`Writing ${key} (Skipped)\n`);
|
||||
continue;
|
||||
}
|
||||
statusBarTerminal.addValue(`Writing ${key} `);
|
||||
await ampy.put(key, libraries[key].data);
|
||||
statusBarTerminal.addValue('Done!\n');
|
||||
}
|
||||
}*/
|
||||
await ampy.exit();
|
||||
await ampy.dispose();
|
||||
BU.progressLayer.hide();
|
||||
layer.msg(Msg.Lang['shell.uploadSucc'], { time: 1000 });
|
||||
statusBarTerminal.addValue(`==${Msg.Lang['shell.uploadSucc']}==\n`);
|
||||
statusBarTerminal.appendLine(`==${Msg.Lang['shell.uploadSucc']}==\n`);
|
||||
if (!statusBarSerial) {
|
||||
mainStatusBarTabs.add('serial', portName);
|
||||
statusBarSerial = mainStatusBarTabs.getStatusBarById(portName);
|
||||
@@ -707,8 +709,8 @@ BU.uploadWithAmpy = async (portName) => {
|
||||
ampy.dispose();
|
||||
BU.progressLayer.hide();
|
||||
Debug.error(error);
|
||||
statusBarTerminal.addValue(`${error}\n`);
|
||||
statusBarTerminal.addValue(`==${Msg.Lang['shell.uploadFailed']}==\n`);
|
||||
statusBarTerminal.appendLine(`[ERROR] ${error.message}\n`);
|
||||
statusBarTerminal.appendLine(`==${Msg.Lang['shell.uploadFailed']}==\n`);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user