@amperka/nfc
Библиотека для работы с NFC-сканерами и метками.
Позволяет работать с картами Mifare Ultralight: считывать ID карты, читать и записывать данные по страницам карты. Сканер подключается по протоколу I2C и использует пин прерывания IRQ.
// настраиваем I2C1 для работы модуля I2C1.setup({sda: SDA, scl: SCL, bitrate: 400000}); // подключаем модуль к I2C1 и пину прерывания var nfc = require('@amperka/nfc').connect({i2c: I2C1, irqPin: P10}); // активируем модуль nfc.wakeUp(function(error) { if (error) { print('wake up error', error); } else { print('wake up OK'); // слушаем новые метки nfc.listen(); } }); // указываем страницу для чтения данных var page2read = 5; nfc.on('tag', function(error, data) { if (error) { print('tag read error'); } else { // выводим в консоль полученные данные print(data); // читаем указанную страницу данных nfc.readPage(page2read, function(error, buffer) { if(error) { print('page read error'); } else { print('page read result: ', buffer); // обновляем данные для записи. Например, увеличиваем на единицу for (var i in buffer) { buffer[i]++; } // перезаписываем метку новыми данными на ту же страницу nfc.writePage(page2read, buffer, function(error) { if (error) { print('write page ERROR'); } else { print('write page OK'); } }); } }); } // каждые 1000 миллисекунд слушаем новую метку setTimeout(function () { nfc.listen(); }, 1000); });
Функции модуля
Создаёт новый объект NFC. Объект pins должен содержать поля:
i2c— I2C, к которому подключен модуль, напримерI2C1irqPin— пин прерывания.
Класс для работы с nfc-считывателями. Для создания экземпляра используйте функцию connect.
Функция активации модуля. В функцию callback передается параметр error со значением true, если активировать модуль не удалось.
nfc.wakeUp(function(error) { if (error) { print('wake up ERROR'); } else { print('wake up OK'); nfc.listen(); } });
Функция чтения информации со страницы метки. Параметр page указывает номер читаемой страницы. В функцию callback передаются параметры error и buffer. error возвращает false при отсутствии ошибок, а buffer хранит 4 байта данных прочитанной страницы метки.
// указываем номер страницы для чтения var page2read = 2; nfc.readPage(page2read, function(error, buffer) { if(error) { print('page read error'); } else { // печатаем результат чтения байт данных print('page read result: ', buffer); } });
Функция записи информации на страницу метки. Параметр page указывает номер записываемой страницы. Параметр data должен быть массивом из четырех элементов в диапазоне 0…255. Все 4 элемента будут записаны на указанную страницу метки. При отсутствии ошибок записи параметр error функции callback принимает значение false.
// указываем номер страницы для записи var page2write = 3; // подготавливаем данные для записи. var buffer = new Array(2, 0, 1, 6); nfc.writePage(page2write, buffer, function(error) { if (error) { console.log('write page ERROR', result); } else { console.log('write page OK'); } });
Функция устанавливает модуль в режим поиска меток. При обнаружении метки генерируется событие on('tag').
Событие, возникающее при поднесении метки к считывателю. Параметр error имеет значение true, если при считывании произошла ошибка. В принимаемом объекте data находятся следующие поля:
uid— массив, содержащий уникальный идентификатор метки. Для Mifare Ultraligth длина массива равна семи;ATQA— контрольная сумма ответа метки. Для меток Mifare Ultraligth поле должно иметь значение 64.
nfc.on('tag', function(error, data) { if (error) { print('tag read error'); } else { // выводим в консоль полученные данные print(data); } });