Ошибка автоматического определения пути к последовательному порту
Я новичок в node-serialport и имею некоторые проблемы с автоматическим обнаружением последовательного порта. Ниже мой код,
var serialport = require('serialport');
var portName = " ";
Код для автоматического определения пути к последовательному порту:-
(Примечание: если я попытался напечатать имя порта на консоли, будет напечатан точный путь к порту, например, COM4, COM3 и т. Д. Но появляется ошибка при открытии порта. См. Ошибку в конце. как жестко закодированные, как var portName = "COM4";
тогда он работает успешно).
serialport.list().then(
ports => {
ports.forEach(port => {
if(port.manufacturer.includes("Silicon Labs")&&port.pnpId.includes("USB\\VID_10C4&PID_EA60\\0001")){
console.log("Port Set");
portName = port.path;
}
})
},
err => {
console.error('Error listing ports', err)
}
);
Код для чтения данных из последовательного порта:-
var myPort = new serialport(portName, {baudRate:9600});
var Readline = serialport.parsers.Readline;
var parser = new Readline();
myPort.pipe(parser);
myPort.on('open', showPortOpen);
parser.on('data', readSerialData);
myPort.on('close', showPortClose);
myPort.on('error', showError);
function showPortOpen() {
console.log('port open. Data rate: ' + myPort.baudRate);
}
function readSerialData(data) {
console.log(data);
return;
}
function showPortClose() {
console.log('port closed.');
}
function showError(error) {
console.log('Serial port error: ' + error);
}
Ошибка открытия последовательного порта:
Serial port error: Error: Opening : Unknown error code 123
Конфигурация компьютера:-
ОС: Windows 10
Версия узла: v12.18.3
Версия NPM: 6.14.6
serialport@9.0.1
1 ответ
Проблема решена. Я внес некоторые изменения в код.
Код для автоматического определения пути к последовательному порту:-
serialport.list().then(
ports => {
ports.forEach(port => {
if(port.manufacturer.includes("Silicon Labs")&&port.pnpId.includes("USB\\VID_10C4&PID_EA60\\0001")){
console.log("Port Set");
portName = port.path;
var myPort = new serialport(portName, {baudRate:9600});
var Readline = serialport.parsers.Readline;
var parser = new Readline();
myPort.pipe(parser);
myPort.on('open', showPortOpen);
parser.on('data', readSerialData);
myPort.on('close', showPortClose);
myPort.on('error', showError);
}
})
},
err => {
console.error('Error listing ports', err)
}
);
Код для чтения данных из последовательного порта:-
function showPortOpen() {
console.log('port open. Data rate: ' + myPort.baudRate);
}
function readSerialData(data) {
console.log(data);
return;
}
function showPortClose() {
console.log('port closed.');
}
function showError(error) {
console.log('Serial port error: ' + error);
}