0.1.1 • Published 5 months ago

@iqrok/pcsclite.helper v0.1.1

Weekly downloads
-
License
MIT
Repository
gitlab
Last release
5 months ago

pcsclite Helper

this package is only a wrapper for pcsclite. Only tested on Ubuntu/Debian using ACR122U and MIFARE 1K card.

Prerequisites

You must install these packages first

sudo apt install libpcsclite1 libpcsclite-dev pcscd libacsccid1

NOTE: libacsccid1 is required for ACR122U reader

these kernel modules must be removed in order to make pcsc reader detected:

# remove kernel modules temporarily
sudo rmmod pn533_usb pn533 nfc

# block kernel modules permanently
echo "install nfc /bin/false" | sudo tee -a /etc/modprobe.d/blacklist.conf
echo "install pn533 /bin/false" | sudo tee -a /etc/modprobe.d/blacklist.conf
echo "install pn533_usb /bin/false" | sudo tee -a /etc/modprobe.d/blacklist.conf

You can execute enablepcsc.sh, included in this repository, to simplify the steps above.

Installation

npm install @iqrok/pcsclite.helper

Example

const RFID = require('@iqrok/pcsclite.helper');

// check if pcscd is available or not
if(!RFID){
	console.error('pcscd service is not running!', RFID);
	return;
}

(async () => {
	await RFID.setTimeout(0xff);

	RFID.on('reader', received => {
		console.log('reader', received);
	});

	RFID.on('status', received => {
		console.log('status', received);
	});

	RFID.on('error', received => {
		console.log('error', received);
	});

	RFID.on('data', received => {
		console.log('data', received);
	});

	RFID.on('blocks', received => {
		console.log('blocks', received);
	});

	RFID.on('removed', received => {
		console.log('card removed', received);
	});

	RFID.on('uid', received => {
		console.log('card uid', received);
	});

	RFID.on('ready', async protocol => {
		const obj = {
			id: '12345678',
			time: Date.now(),
		};

		const input = JSON.stringify(obj);
		const block = 4;

		const write = await RFID.writeBlocks(input, block);

		const read = [
			await RFID.readBlocks(block),
			await RFID.readBlocksString(block),
			await RFID.readBlocksJSON(block),
		];

		const status = await RFID.status(block);

		console.log('--------- Data Written ---------');
		console.log('Input :', input);
		console.log('Write :', write);
		console.log('--------- Data Read ---------');
		console.log('RAW', read[0]);
		console.log('STRING', read[1]);
		console.log('JSON', read[2]);
		console.log('--------- ---- ---- ---------');
	});
})();

Events

Event NameTriggered on
readerreader status is changed
statusreader connection status is changed
card-statusrequest RFID card status
errorthere's error in reader or card action
dataincoming data from RFID card
blocksincoming data after reading multiple blocks
readyRFID card is connected to reader
removedRFID card is removed from reader
uidRFID card uid
0.1.0

7 months ago

0.1.1

5 months ago

0.0.2

3 years ago

0.0.1

3 years ago