Reputation: 41
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
Upvotes: 1
Views: 2080
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