Я из встроенного фона и не имею общего представления об электроне и узле js. Я пытаюсь сделать простое демонстрационное приложение, которое может открыть выбранный пользователем последовательный порт. В части HTML у меня есть одна кнопка подключения, которая открывает порт, одно раскрывающееся меню для доступных COM-портов в окнах и одно раскрывающееся меню для разных скоростей.
Я могу получить выбранный пользователем порт и скорость передачи данных с помощью события «onChange» тега select. Проблема здесь в том, что для создания объекта serialport требуется порт. Как я могу переопределить тот же конструктор в Node js? Если я иду в неправильном направлении, можете ли вы предложить хороший стиль кодирования для этого кода?
Я пробовал жестко кодировать COM-порт, и это прекрасно работает. Я попытался переопределить объект serialport с новым портом, но он не открывает порт и не выдает никакой ошибки.
Вот мой код:
var serialport = require('serialport');
var SerialPort = serialport.SerialPort;
var portSelected, baudSelected;
var select = document.getElementById("comport-select");
select.options[select.options.length] = new Option("COM Port", "select-port-option")
serialport.list((err, ports) => {
ports.forEach(function(port) {
select.options[select.options.length] = new Option(port.comName, port.comName);
})
if (err) {
document.getElementById('error').textContent = err.message
return
} else {
document.getElementById('error').textContent = ''
}
if (ports.length === 0) {
document.getElementById('error').textContent = 'No ports discovered'
}
})
var port = new serialport('COM Port', { autoOpen: false, flowControl: false })
const Readline = serialport.parsers.Readline;
const parser = new Readline();
port.pipe(parser);
//Onchange event routine for COM port dropdown menu
function getPort()
{
portSelected = document.getElementById("comport-select").value;
console.log(portSelected);
}
//Onchange event routine for baudrate dropdown menu
function getBaud()
{
baudSelected = Number(document.getElementById("baud-select").value);
console.log(baudSelected);
serialport.baudRate = baudSelected;
}
//Onclick event routine that configures and opens the port
function openPort()
{
console.log(baudSelected);
port = serialport(portSelected, { autoOpen: false, flowControl: false });
port.open(function (err) {
if (err) {
return console.log('Error opening port: ', err.message)
}
});
};
function onOpen()
{
console.log('connection is opened');
}
parser.on('open', onOpen);
port.write('V');
function onData(data)
{
console.log(data);
}
parser.on('data', onData);