UNPKG

rc522-c7z

Version:

Node.js package for Rapsberry Pi & RC522 RFID Reader combo, with TypeScript support

58 lines (44 loc) 1.2 kB
import { spawn } from 'child_process'; import * as path from 'path'; import * as readline from 'readline'; let registeredCallback = null; let child = null; let mainProcessShutdown = false; let initChildProcess = () => { const tmp = path.join(__dirname, 'rc522_output.js'); child = spawn('node', [tmp]); let linereader = readline.createInterface(child.stdout, child.stdin); linereader.on('line', (rfidTagSerialNumber) => { if (!(registeredCallback instanceof Function)) { return; } registeredCallback(rfidTagSerialNumber); }); child.on('close', () => { if (mainProcessShutdown) { return; } initChildProcess(); }); }; process.once('SIGTERM', () => { process.exit(0); }); process.once('SIGINT', () => { process.exit(0); }); process.once('exit', () => { mainProcessShutdown = true; child.kill(); }); process.once('uncaughtException', (error) => { if (process.listeners('uncaughtException').length === 0) { mainProcessShutdown = true; child.kill(); throw error; } }); initChildProcess(); export function listen(callback) { registeredCallback = callback; }