Вы можете отправлять порты, которые функция serialport.list ()
предоставляет через IPC, в ваш основной процесс, где вы помещаете их в шаблон, а затем устанавливаете это как меню вашего приложения.
Например, процесс рендеринга 'file:
const serialport = require ("serialport");
const { ipcRenderer } = require ("electron");
get_ports = function () {
console.log ('clicked');
serialport.list ((err, ports) => {
if (err) {
console.log (err);
return;
} else {
ipcRenderer.send ("serialports", ports);
}
})
}
А затем внутри вашего основного процесса 'file:
// `template' as in your question
const { ipcMain, Menu } = require ("electron");
ipcMain.on ("serialports", (event, data) => {
var portsSubmenu = [];
for (port in data) {
portsSubmenu.push ({ label: port.comName });
}
template[1].submenu[0].submenu = portsSubmenu;
Menu.setApplicationMenu (Menu.buildFromTemplate (template));
});
Индексы подменю, которое вы хотите изменить (здесь template[1].submenu[0]
), изменятся, если вы добавите новыйэлементы до вашего "Ports"
элемента.