serialport
Version:
Node.js package to access serial ports. Linux, OSX and Windows. Welcome your robotic JavaScript overlords. Better yet, program them!
53 lines (48 loc) • 1.45 kB
JavaScript
const repl = require('repl')
const promirepl = require('promirepl').promirepl
process.env.DEBUG = process.env.DEBUG || '*'
const SerialPort = require('../')
// outputs the path to an arduino or nothing
function findArduino() {
return new Promise((resolve, reject) => {
const envPort = process.argv[2] || process.env.TEST_PORT
if (envPort) {
return resolve(envPort)
}
SerialPort.list((err, ports) => {
if (err) {
return reject(err)
}
let resolved = false
ports.forEach(port => {
if (!resolved && /arduino/i.test(port.manufacturer)) {
resolved = true
return resolve(port.comName)
}
})
if (!resolved) {
reject(
new Error(
'No arduinos found. You must specify a port to load.\n\nFor example:\n\tserialport-repl COM3\n\tserialport-repl /dev/tty.my-serialport'
)
)
}
})
})
}
findArduino()
.then(portName => {
console.log(`port = SerialPort("${portName}", { autoOpen: false })`)
console.log('globals { SerialPort, portName, port }')
const port = new SerialPort(portName, { autoOpen: false })
const spRepl = repl.start({ prompt: '> ' })
promirepl(spRepl)
spRepl.context.SerialPort = SerialPort
spRepl.context.portName = portName
spRepl.context.port = port
})
.catch(e => {
console.error(e.message)
process.exit(1)
})