usb-barcode-transform
v1.0.2
Published
A NodeJs transform stream to convert a barcode (from an USB scanner) into a string representation.
Downloads
1
Readme
Barcode USB scanner stream
A NodeJs transform stream to convert a barcode (from an USB scanner) into a string representation.
npm --save usb-barcode-transform
Scanner Example
const fs = require('fs');
const Scanner = require('usb-barcode-transform/scanner');
const stream = fs.createReadStream("/dev/input/by-id/usb-USB_Adapter_USB_Device-event-kbd",{
flags: 'r',
encoding: null,
fd: null,
autoClose: true
});
stream
.pipe(new Scanner())
.pipe(process.stdout);
Groupped Scanner Example
The scanner will send every single character as an ASCII character. The Group
stream estract only visible characters and exclude any escape sequence.
const fs = require('fs');
const barcode = require('usb-barcode-transform');
const stream = fs.createReadStream("/dev/input/by-id/usb-USB_Adapter_USB_Device-event-kbd",{
flags: 'r',
encoding: null,
fd: null,
autoClose: true
});
stream
.pipe(new barcode.Scanner())
.pipe(new barcode.Group())
.pipe(process.stdout);
The Group
send a single event that represent the decoded value (1234567)
without any escape sequence or carriage return \n
.
Basics
The event struct in the linux kernel have this interface
struct input_event {
struct timeval time;
unsigned short type;
unsigned short code;
unsigned int value;
};
'time' is the timestamp, it returns the time at which the event happened. Type is for example EV_REL for relative moment, EV_KEY for a keypress or release. More types are defined in include/uapi/linux/input-event-codes.h.
'code' is event code, for example REL_X or KEY_BACKSPACE, again a complete list is in include/uapi/linux/input-event-codes.h.
'value' is the value the event carries. Either a relative change for EV_REL, absolute new value for EV_ABS (joysticks ...), or 0 for EV_KEY for release, 1 for keypress and 2 for autorepeat.