Local Server File: save as Serial_Port_Server.js
////////////
/*
Author: Prashant Patil
Date Created: 02/23/2019
Version: 1.0
Copyright: MIT
The Serial_Port_Server.js file along with the Serial_Port_Client can be used to debug the serial port devices.
*/
/ Serial Port Interface **/
var SerialPort = require(‘serialport’);
// Create Serial port and disable “auto open port during creation”
var port = new SerialPort(‘COM3’, {
autoOpen: false,
baudRate: 19200,
dataBits: 8,
stopBits: 1,
parity: ‘none’,
rtscts: false,
xon: true,
xoff: true,
xany: false });
var serial_terminator = ‘\n’
// open serial port
port.open();
/*
Serial Port Event managment
Functions below execute whenever corresponding event occures. For example,
port open, port close, whenever data is available at serial port.
*/
// port open event
port.on(‘open’, function() {
console.log(‘Serial port opened succesfully!’);
// flush serial port
port.flush(function() {
console.log('port flushed.');
});
});
// port close event
port.on(‘close’, function() {
console.log(‘Serial port closed succesfully!’);
});
// port error event if can’t open port
port.on(‘error’, function(err) {
return console.log(‘Error opening port: ‘, err.message);
});
// Read data that is available but keep the stream from entering “flowing mode”
port.on(‘readable’, function () {
//console.log(‘Data:’, port.read());
//console.log(‘Data:’, port.read.setEncoding()());
port.setEncoding(‘ascii’)
console.log(‘Recieved Character:’, port.read());
});
/** Creating WebScoket Server to serve Serial_Port_Client.html **/
const WebSocket = require(‘ws’);
// Create WebSocket Server.
const wsServer = new WebSocket.Server({ port: 1234 });
/* When created WebSocket server detects connection with a clint, it create a socket “socket” that
is now use to communicate with this clinet */
wsServer.on(‘connection’, function(socket){
console.log(‘Websocket Opened! Serial_Port_Server.js server has made connection with Serial_Port_Client.html.’);
/* event callback when the server recieves message from client with socket “socket” */
socket.on(‘message’, async function incoming(cmd_from_client) {
//console.log('Message from Serial_Port_Clent.html: %s', cmd_from_client);
// send the recieved cmd to serial port
port.write(cmd_from_client.concat(serial_terminator), function(err) {
console.log('Send to Serial port:\n%s', cmd_from_client);
if (err) {
return console.log('Error on writing to serial port: ', err.message);
}
console.log('Message Sent!\n');
});
});
/*
Web-socket event managment
*/
// executing when connecting to clinet, for example, when browser is refreshed.
socket.on(‘error’, function(err) {
console.log('Error connecting to Serial_Port_Client.html:', err);
});
// executing when connecting to clinet is closed.
socket.on(‘close’, function(close_message) {
console.log('connection to Serial_Port_Client.html is closed:', close_message);
});
});
/////////////////////
HTML File
//////////////////
////////////////////