electron如何调用第三方应用

electron如何调用第三方应用

主要通过node官方模块的child_process,实际操作代码如下:

1
2
const spawn = require("child_process").spawn;
const ide = spawn("\"" + path.join(arduinoPath, "/arduino") + "\"", ["\"" + filename + "\""], { shell: true });

在本次应用中,主要实现了,通过第三方Arduino软件编译并上传hex的过程。
代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
const os = require("os");
var t = os.tmpdir();
var tmpdir = fs.mkdtempSync(t + "/osepp-");
fs.mkdirSync(tmpdir + "/buildpath");
fs.mkdirSync(tmpdir + "/sketch");
fs.writeFileSync(tmpdir + "/sketch/sketch.ino", arg.code);
var builder = "\"" + arduinoPath + "/arduino-builder\"";
var argHardware = "-hardware \"" + arduinoPath + "/hardware\"";
var argTools = "-tools \"" + arduinoPath + "/hardware/tools/avr\"";
var argcFlag = "-tools \"" + arduinoPath + "/tools-builder\"";
var argLibraries = "-libraries \"" + arduinoPath + "/libraries\"";
var argFlag = "-fqbn arduino:avr:uno";
var argFile = "\"" + tmpdir + "/sketch/sketch.ino\"";
var argBuildPath = "-build-path \"" + tmpdir + "/buildpath\"";

const spawn = require("child_process").spawn;
const genhex = spawn(builder, [argHardware, argTools, argcFlag, argLibraries, argFlag, argBuildPath, argFile], { shell: true });
_mainWindow.webContents.send('uploadHex-status', 'verify');
genhex.on("close", (exitcode) => {
if (exitcode == 0) {
var file = "\"" + tmpdir + "/buildpath/sketch.ino.hex" + "\"";

var app = "\"" + arduinoPath + "/hardware/tools/avr/bin/avrdude\"";
var argConf = "-C\"" + arduinoPath + "/hardware/tools/avr/etc/avrdude.conf\"";
var argCpu = "-patmega328p -carduino -D";
var argPort = "-P\"" + arg.com + "\"";
var argBaud = "-b115200";
var argFile = "-Uflash:w:\"" + file + "\":i";
const spawn = require("child_process").spawn;
const upload = spawn(app, [argConf, argCpu, argFile, argPort, argBaud, " -q"], { shell: true });
upload.on("close", (exitcode) => {
_mainWindow.webContents.send('uploadHex-ok');
});
} else {
_mainWindow.webContents.send('uploadHex-err');
}
});

参考

https://github.com/DIYOSEPP/oseppBlock

本文地址: http://gehaiqing.com/2019/09/16/electron-import-third-app/