UNPKG

modbus-browser

Version:

🔦 A Modbus TCP browser application as a command-line client.

50 lines (48 loc) • 1.57 kB
const _ = require('lodash'); const net = require('net'); const signale = require('signale'); const program = require('commander'); const Modbus = require('jsmodbus'); /** * Exporting the initialization routines, ensuring * that the environment is properly configured. */ module.exports = [ /** * Connecting to the server. */ (input, output, next) => { let connected = false; // Creating a new TCP socket. input.socket = new net.Socket(); // The unit identifier to use on the server. input.unitId = parseInt(program.unitId) || 1; // Creating a new Modbus TCP client. input.client = new Modbus.client.TCP(input.socket, input.unitId); // The remote server port. input.port = _.isString(program.port) ? parseInt(program.port) : 502; // The connection options. input.opts = { host: program.server, port: input.port }; // Setting the socket timeout. input.socket.setTimeout(10 * 1000); // Listening for socket events. input.socket .on('connect', () => { connected = true; next(); }) .on('error', (err) => { input.socket.destroy(); return (output.fail(err)); }) .on('timeout', () => { if (!connected) { input.socket.destroy(); return (output.fail(`The connection to '${program.server}:${input.port}' has timed out.`)); } }); // Initiating the connection. signale.pending(`Initiating a connection to '${program.server}:${input.port}'`); input.socket.connect(input.opts); } ];