Skip to main content
Version: 10.x.x

📦 serialport

| npm | github |

import { SerialPort } from 'serialport'
// or
const { SerialPort } = require('serialport')

This package provides everything you need to start talking over your serialport. It provides a high level Stream Interface, auto detecting bindings, and a set of parser streams.

tip

Most of the api is covered in the Stream Interface docs.

Historically this was the only package involved and it contained everything. Since version 7 the internals have been split into their own modules and can be required separately, allowing a user to only install what they need.

This allows for smaller installs and alternative interfaces, bindings and parsers.

SerialPort

The SerialPort class uses the @serialport/bindings-cpp binding with the Stream Interface class.

import { SerialPort } from 'serialport'

const serialport = new SerialPort({ path: '/dev/example', baudRate: 9600 })
serialport.write('ROBOT POWER ON')

list

SerialPort.list()

Calls the bindings-cpp list() function directly.

binding

SerialPort.binding

The detected platform binding.

port

const port = new SerialPort({ path: '/dev/robot', baudRate: 9600 })
port.port // instance of platform specific bindings

The PortBinding object opened for the port.

SerialPortMock

The SerialPortMock class includes the @serialport/binding-mock binding with the Stream Interface class.

import { SerialPortMock } from 'serialport'

const path = '/dev/example'
SerialPortMock.binding.createPort(path)
const serialport = new SerialPortMock({ path, baudRate: 9600 })
serialport.write('ROBOT POWER ON')

list

SerialPortMock.list() // Promise<PortInfo[]>

Calls the mock binding list function directly which returns all created ports.

binding

SerialPortMock.binding

The MockBinding class being used by the port.

port

The port property only exists on an open port. You can't emit data when it's closed.

SerialPortMock.binding.createPort('/dev/robot')
const port = new SerialPortMock({ path: '/dev/robot', baudRate: 9600 })
port.on('open', () => {
port.port.emitData('data')
})

The MockPortBinding object opened for the port.

Parsers

This package exports the following parsers;

// for example
import { SerialPort, SpacePacketParser } from 'serialport'

These Parsers are all Transform streams that process incoming data. To use the parsers, you must create them and then pipe the Serialport to the parser. Be careful to only write to the SerialPort object and not the parser.

const { SerialPort, ReadlineParser } = require('serialport')
const port = new SerialPort({ path, baudRate })
const parser = new ReadlineParser()
port.pipe(parser)
parser.on('data', console.log)
port.write('ROBOT PLEASE RESPOND\n')
// ROBOT ONLINE

// Creating the parser and piping can be shortened to
const parser = port.pipe(new ReadlineParser())