RFIDCHIP.info
Все ЦТО России: размещение и поиск ЦТО на интерактивной карте
Русский Английский Немецкий 
< Новости > < Наш "Hard" & "Soft" > < Загрузки > < On-line магазин > < Конференции на kkm.info > < Техническая документация > < Поиск > < Гостевая книга > < Внедрения технологии и обзоры > < Разделы > < Ссылки > < Контакты >

v Описание библиотеки MiReader.dll для работы с нашими(MikleSoft™) ридерами Mifare.

10.05.2005, Mr. Y


О библиотеке

Данная библиотека предназначена для реализации интерфейса программоного обеспечения с бесконтактным ридером смарт-карт стандарта Mifare разработки компании MikleSoft. Подробная информация о ридерах MiReader™ доступна в его разделе

Предупреждение

Поскольку библиотека предназначена для работы с ридерами MiReader™ стандарта Mifare (Standard и UltraLight), для более полного понимания назначения функций настоятельно рекомендуется ознакомиться с принципами работы с картами соответствующих типов:
Mifare 1K-4K, Mifare UltraLight
В данной документации описаны не все функции, а лишь достаточный минимум, необходимый для интерграции ридера в ваши приложения.

Функции библиотеки

Функции библиотеки имеют в названиях префикс, определяющий область работы функции. Префикс "Pcd" означает, что данная функция работает с ридером (микропроцессором устройства), а префикс "Picc" - функции работы с картой непосредственно (команды, адресованые карте).
макрос FCT_PREF в данном контексте используется, как однобайтовое знаковое целое число (signed char).

const char * Mf500LibInfo(unsigned long key)

Возвращает указатель на строку (оканчивающуюся ноль-символом), содержащую версию библиотеки.

FCT_PREF Mf500InterfaceOpen(unsigned long mode, unsigned long options)

Устанавливает интерфейс с ридером (открывает COM-порт). Успешное выполнение функции не гарантирует, что к указанному порту подключен ридер, а сигнализирует лишь о доступности порта и его успешном открытии.
Входные параметры:
mode - всегда 0x40 (указывает на установку интерфейса через COM-порт)
options - номер СОМ-порта (реального или виртуального)
Возвращает:
MI_OK или MI_POLLING в случае успешного установления интерфейса
MI_INTERFACE_ERROR в случае ошибки

FCT_PREF Mf500InterfaceClose(void)

Закрывает интерфейс с ридером (закрывает COM-порт).
Входные параметры: отсутствуют.
Возвращает: MI_OK в любом случае

FCT_PREF Mf500HostCodeKey(unsigned char *uncoded, unsigned char *coded)

Переводит 6-байтовый ключ в 12-байтовый кодированный формат, более устойчивый к искажениям.
Входные параметры:
uncoded - указатель на 6 байтовую область памяти, где хранится некодированный ключ
Возвращает:
coded - указатель, куда будет записано 12 байт кодированного ключа

Функции работы с ридером

Все приведенные ниже функции в случае успеха возвращают MI_OK (0), а в случае ошибки - отрицательный код ошибки.

FCT_PREF Mf500PcdConfig(void)

Загружает в ридер базовые настройки. В общем случае в вызове этой функции нет необходимости, т.к. настройки загружаются автоматически при включении питания ридера (начиная с прошивки версии 1.1).

FCT_PREF PcdBeep(unsigned char num)

Функция издает звуковой сигнал с указанным номером.
Входные параметры:
num - номер звукового сигнала

FCT_PREF PcdGetSnr(unsigned char *snr)

Функция чтения четырехбайтового серийного номера ридера.
Выходные параметры:
snr - четырехбайтовый серийный номер ридера

FCT_PREF PcdRfReset(unsigned short ms)

Функция выключает радиополе на указанное число миллисекунд, что ведет к сбросу всех карт в поле и переходу из в состояние IDLE (ожидание).
Входные параметры:
ms - число в миллисекундах, на которое будет выключено поле. Для сброса карт Mifare Standard достаточно 10мс.

Функции работы с картой

FCT_PREF Mf500PiccRequest(unsigned char req_code, unsigned char *atq)

Посылает запрос картам, находящимся в радиополе.
Входные параметры:
req_code - код запроса:
PICC_REQIDL (0x26) - запрос карт, находящихся в режиме ожидания (idle);
PICC_REQALL (0x52) - запрос всех карт в радиополе
Возвращает:
В случае успешного выполнения, по адресу atq записывает 2 байта - тип карты (метки).

FCT_PREF Mf500PiccAnticoll (unsigned char bcnt, unsigned char *snr)

Антиколлизия - получение полного номера карты
Входные параметры:
bcnt - число известных бит в номере карты
snr - четырехбайтовое поле, содержащее фрагмент номера
Возвращает:
snr - четырехбайтовое поле, содержащее номер карты полностью

FCT_PREF Mf500PiccCascAnticoll (unsigned char select_code, unsigned char bcnt, unsigned char *snr)

Функция для реализации каскадной антиколлизии. Используется при работе с картами UltraLight.
Входные параметры:
select_code - код запроса (для второго уровня - 0x95)
bcnt - число известных бит в номере карты (на данном уровне)
snr - четырехбайтовое поле, содержащее фрагмент номера
Возвращает:
snr - четырехбайтовое поле, содержащее номер карты полностью (для данного уровня)

FCT_PREF Mf500PiccSelect(unsigned char *snr, unsigned char *sak)

Функция выбора карты с указанным номером.
Входные параметры:
snr - 4-байтовый серийный номер карты
Возвращает:
sak - байт SAK (Select Acknowledge) - подтверждение выбора карты в соответствии с ISO

FCT_PREF Mf500PiccCascSelect(unsigned char select_code,unsigned char *snr, unsigned char *sak)

Функция выбора карты с указанным номером для реализации каскадного выбора. Используется при работе с картами UltraLight.
Входные параметры:
select_code - код запроса (для второго уровня - 0x95)
snr - 4-байтовый серийный номер карты
Возвращает:
sak - байт SAK (Select Acknowledge) - подтверждение выбора карты в соответствии с ISO

FCT_PREF Mf500PiccActivateIdle(unsigned char br, unsigned char *atq, unsigned char *sak, unsigned char *uid, unsigned char *uid_len)

Данная функция совмещает в себе функции антиколлизии и выбора, т.е. выполняет все необходимые действия для выбора одной карт, находящихся в режиме ожидания (idle). Используется при работе с картами Standard и UltraLight.
Входные параметры:
br - код скорости работы с картой (для Mifare Standard и Ultralight должен быть равен 0!)
Возвращает:
atq - двухбайтовый ответ на запрос карты (для определения типа выбранной карты)
sak - байтовый ответ выбор карты (по стандарту)
uid - уникальный серийный номер карты
uid_len - длина номера карты (для Mifare Standard=4, для UltraLight=7)

FCT_PREF Mf500PiccActivateWakeup(unsigned char br, unsigned char *atq, unsigned char *sak, unsigned char *uid, unsigned char *uid_len);

Функция полностью аналогична предыдущей, за исключением того, что выбирает карты не только в состоянии IDLE (ожидание), но и HALT (останов).

FCT_PREF Mf500PiccAuth(unsigned char auth_mode, unsigned char key_sector, unsigned char block)

Функция для авторизации доступа к указанному сектору. Ключ при этом берется из внутренней защищенной памяти.
Входные параметры:
auth_mode - тип ключа (ключ А или ключ Б): PICC_AUTHENT1A или PICC_AUTHENT1B
key_sector - номер сектора в памяти (0..15), где хранится ключ
block - номер блока на карте, к которому хотим получить доступ

FCT_PREF Mf500PcdLoadKeyE2(unsigned char key_type, unsigned char sector, unsigned char *uncoded_keys);

Записывает 6-байтовый (некодированный) ключ во внутреннюю защищенную EEPROM ридера.
Входные параметры:
key_type - тип ключа (ключ А или ключ Б): PICC_AUTHENT1A или PICC_AUTHENT1B
sector - номер сектора в памяти (0..15), куда записывается ключ
uncoded_keys - указатель на 6-байтовый ключ в некодированном виде

FCT_PREF Mf500PiccAuthKey(unsigned char auth_mode, unsigned char *snr, unsigned char *keys, unsigned char sector)

Функция авторизации доступа к указанному сектору с указанием ключа в явном виде.
Входные параметры:
auth_mode - тип ключа (ключ А или ключ Б): PICC_AUTHENT1A или PICC_AUTHENT1B
snr - указатель на четырехбайтовую область памяти, где лежит номер текущей карты
keys - ключ в кодированном 12-байтовом формате
sector - номер блока на карте, к которому пытаемся получить доступ

FCT_PREF Mf500PiccRead(unsigned char addr, unsigned char* data)

Функция чтения 16 байт с карты по указанному адресу.
Входные параметры:
addr - номер блока, который читаем (для UltraLight - номер страницы)
Возвращает:
data - указатель, куда будут записаны прочитанные 16 байт

FCT_PREF Mf500PiccWrite(unsigned char addr, unsigned char* data)

Функция записи 16 байт на карты по указанному адресу. При работе с картами UltraLight несмотря на передачу 16 байт, записываются только первые 4 из них (одна страница).
Входные параметры:
addr - номер блока, в который пишем (для UltraLight - номер страницы)
data - указатель на 16 байт, которые следует записать (для UltraLight значимы только первые 4 из них, остальные рекомендуется заполнять нолями)

FCT_PREF Mf500PiccValue(unsigned char dd_mode, unsigned char addr, unsigned char *value, unsigned char trans_addr)

Функция для работы с блоками-значениями (Value-блоками). Для работы функции соответствующий блок предварительно должен быть отформатирован, как value-блок.
Входные параметры:
dd_mode - тип операции с полем:
PICC_DECREMENT - декремент значения (уменьшение)
PICC_INCREMENT - инкремент значения (увеличение)
PICC_TRANSFER - запись значения (бэкап)
PICC_RESTORE - запись значения (восстановление)
addr - номер блока, с которым производится операция
trans_addr - номер блока, куда будет записан результат операции

FCT_PREF Mf500PiccValueDebit(unsigned char dd_mode, unsigned char addr, unsigned char *value)

Функция аналогична предыдущей, но для карт с механизмом автоматического бэкапа.

FCT_PREF Mf500PiccHalt()

Команда перевода карты в режим останов (HALT). Из этого режима потом карта может быть выведена только функцией запроса с кодом 0x52 (PICC_REQALL) или функцией Mf500PiccActivateWakeup.
Входные параметры: нет

Функции работы с каталогом

Внимание: нижеприведенные функции реализованы в прошивке 1.21 и библиотеке интерфейса MiReader.dll версии 1.2. Назначение этих функций - упрощение работы с картами в нашем формате для мультифункционального применения. В случае ошибки выполнения, помимо стандартных кодов, функции могут возвращать:
CE_FORMAT (-83) // неправильный формат карты (нет каталога)
CE_CHECKSUM (-84) // ошибка К.С. каталога.

FCT_PREF MksFindCard(unsigned short Mask, unsigned short*Found, unsigned char*snr)

Команда поиска и выбора карты указанного типа.
Входные параметры:
Mask - Маска типа искомой карты (ответ на запрос - ATQ) в соответствии с ISO/IEC 14443A (для 1К Mifare Standard = 0x0004).
Возвращает:
Found - ATQ выбранной карты,
snr - четырехбайтовый серийный номер выбранной карты, соответствующей указанному типу (если таковая найдена).

FCT_PREF MksReopen()

Выбирает последнюю карту, с которой осуществлялась работа. Функция может быть полезна для повышения надежности разрабатываемых приложений (на больших расстояниях возможна потеря связи с картой).

FCT_PREF MksReadCatalog(unsigned short* Catalog)

Чтение каталога карты. Функция сама выполняет авторизацию, т.ч. для ее работы необходимо лишь выбрать карту.
Возвращает:
Catalog - массив из 17 целых беззнаковых 2-байтных чисел - каталог карты*.
*Каталог карты состоит из 16 элементов, однако в последний(17ый) заносится его контрольная сумма.

FCT_PREF MksWriteCatalog(unsigned short *Catalog)

Функция записи каталога на карту. Для корректной работы карта должна быть форматирована (записан заголовок), а также авторизована для доступа к блоку №4 и №5 с правами записи.
Входные параметры:
Catalog - массив из 16 целых беззнаковых 2-байтных чисел - каталог карты*
*В соответствии с форматом, значения первых двух элементов игнорируются. Контрольная сумма каталога считается автоматически.


>> добавить комментарий ^ вверх Техническая документация <<


число посещений статьи: 14495


r

Copyright © 1998-2010 MikleSoft™ company