|
@@ -9,7 +9,7 @@ import { setTimeout, setInterval } from 'timers';
|
|
|
import errHandler from './error_handle';
|
|
|
var iconv = require('iconv-lite');
|
|
|
//const serialPort = new SerialPort();
|
|
|
-
|
|
|
+var serialPort;
|
|
|
// ------ Variabls ------ //
|
|
|
const platform = process.platform;
|
|
|
const tool = join(__dirname, '..', '..', 'tools');
|
|
@@ -303,7 +303,12 @@ function detect(comName, locationId = '') {
|
|
|
*/
|
|
|
export function upload(code, val, socket) {
|
|
|
return new Promise(async (resolve, reject) => {
|
|
|
- var serialPort = await new SerialPort(val, {
|
|
|
+ if (serialPort && serialPort.isOpen) {
|
|
|
+ try {
|
|
|
+ serialPort.close();
|
|
|
+ } catch (e) { }
|
|
|
+ }
|
|
|
+ serialPort = await new SerialPort(val, {
|
|
|
baudRate: 115200,
|
|
|
parity: "none",
|
|
|
stopBits: 1,
|
|
@@ -315,14 +320,37 @@ export function upload(code, val, socket) {
|
|
|
let error = errHandler(err);
|
|
|
socket.emit('upload', { ProgrammerStatus: 'Error', Error: error });
|
|
|
if (serialPort.isOpen) {
|
|
|
- serialPort.close();
|
|
|
+ try {
|
|
|
+ serialPort.close();
|
|
|
+ } catch (e) { }
|
|
|
}
|
|
|
}
|
|
|
else {
|
|
|
- code = code.replace("\r", "\\r")
|
|
|
- code = code.replace("\n", "\\n")
|
|
|
- code = code.replace("\"", "\\\"").replace(/^\s+|\s+$/g, '')
|
|
|
- var complete_command = "rm /home/user/upload.py && printf \"" + code + "\" >> /home/user/upload.py && python /home/user/upload.py" + "\r\n"
|
|
|
+ //code = code.replace(new RegExp("\r", "gm"), "\\r")
|
|
|
+ //code = code.replace(new RegExp("\n", "gm"), "\\n")
|
|
|
+ code = code.replace(new RegExp("\"", "gm"), "\\\"").replace(/^\s+|\s+$/g, '')
|
|
|
+ var complete_command = "rm /home/user/upload.py && echo \"" + code + "\" > /home/user/upload.py && python /home/user/upload.py" + "\r\n";
|
|
|
+ serialPort.on('data', function (data) {
|
|
|
+ resolve();
|
|
|
+ if (data) {
|
|
|
+ if (data.indexOf("root@sipeed:") == -1 && data.indexOf("rm /home/user/upload.py") != 0 && data.indexOf("python /home/user/upload.py") == -1) {
|
|
|
+ socket.emit('repl', { code: data });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ console.log('data received: ' + data);
|
|
|
+ })
|
|
|
+
|
|
|
+ serialPort.on('error', function (err) {
|
|
|
+ if (err) {
|
|
|
+ err = err.message;
|
|
|
+ reject(err);
|
|
|
+ let error = errHandler(err);
|
|
|
+ socket.emit('upload', { ProgrammerStatus: 'Error', Error: error });
|
|
|
+ }
|
|
|
+ console.log(err);
|
|
|
+ return;
|
|
|
+ });
|
|
|
+
|
|
|
serialPort.write(complete_command, function (err, msg) {
|
|
|
if (err) {
|
|
|
err = err.message;
|
|
@@ -330,13 +358,10 @@ export function upload(code, val, socket) {
|
|
|
let error = errHandler(err);
|
|
|
socket.emit('upload', { ProgrammerStatus: 'Error', Error: error });
|
|
|
}
|
|
|
- else {
|
|
|
+ else if (msg) {
|
|
|
resolve();
|
|
|
socket.emit('repl', { code: msg });
|
|
|
}
|
|
|
- if (serialPort.isOpen) {
|
|
|
- serialPort.close();
|
|
|
- }
|
|
|
})
|
|
|
}
|
|
|
});
|
|
@@ -370,6 +395,12 @@ export function upload(code, val, socket) {
|
|
|
*/
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+linuxupload = function () {
|
|
|
+
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
// * 上传插件收到来自前端的 python 文件,将 python 代码通过 ampy 命令上传至模块中
|
|
|
// * ampy --port [端口名] put user_code.py /user_code.py
|
|
|
// * 等待上传插件将代码上传成功以后,运行该文件
|