Ошибка автоматического определения пути к последовательному порту

Я новичок в 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);
}
Другие вопросы по тегам