Mitesh Dube
Mitesh Dube

Reputation: 41

Error in detecting serial port path automatically

I am new to node-serialport and having some issues in detecting serial port automatically. Below is my code,

var serialport = require('serialport');
var portName = " ";

Code for detect serial port path automatically:- (Note: If I tried to print portName on console is prints exact port path e.g. COM4,COM3,etc. But getting error in opening port. See error at the end. And if I assign portName as hard coded, like var portName = "COM4"; then it runs successfully).

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)
  }
 );

Code to read data from serial port:-

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);
}

Error in opening serial port:

Serial port error: Error: Opening : Unknown error code 123

Computer Configuration:-

OS: Windows 10

Node Version: v12.18.3

NPM Version: 6.14.6

[email protected]

Upvotes: 1

Views: 2080

Answers (1)

Mitesh Dube
Mitesh Dube

Reputation: 41

Issue has been solved. I made some changes in the code.

Code for detect serial port path automatically:-

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)
  }
 );

Code to read data from serial port:-

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);
}

Upvotes: 1

Related Questions