socket.io-serialport
Expose a serial port over a socket.io instance. Particular thanks go to the serialport, socket.io-stream and hterm projects.
Usage
npm install --save socket.io
npm install --save socket.io-serialport
Then to connect to a serial port and open it (note that the options
field is passed directly to the serialport
instance, however the autoOpen
option will always be forced to false)
const Server = ;const SerialPort = ; const io = 8080; const serialport = io: io route: '/port/ttyS0' captureFile: '/var/log/serialport/ttyS0' retryPeriod: 1000 device: '/dev/ttyS0' options: baudrate: 115200 ; serialport;
Then connect socket.io
clients to the following endpoint
var io = ; var ttyS0 = ;
with the socket.io
instance you can just use data
events
// listen for data from the serial portttyS0; // Send some data to the serial portttyS0;
Or connect socket.io-stream
clients to use streams
// Create a duplex streamvar ttyS0Stream = ss; // listen for data from the serial portttyS0Stream; // Notify the server with a `stream` event to setup// a duplex stream at the other end which will// pipe to and from the serial port; // Send some data to the serial portttyS0Stream;
or both :)
Handling serial port disconnects, etc
Events will be emitted when the state of the remote serial port changes. You can use these events to notify a user, etc.
Also on initial connection of the socket an event should be received giving the current status of the port.
ttyS0.on('status', function(status) {
console.log(status);
});
where status
will be one of
{status: 'open'}
- the port is open{status: 'closing'}
- the port is closing after calling#close
{status: 'closed'}
- the port is closed after calling#close
{status: 'disconnected', error: error}
- the port disconnected and should be reopened after theretryPeriod
{status: 'opening', error: error}
- the port is opening, theerror
field will be set if it is reopening after an error