Настройки DECODECARDS.INI БЕЗ ИСПОЛЬЗОВАНИЯ USEMASK (USEMASK=0) - ПО УМОЛЧАНИЮ. СТАРЫЙ, НЕ РЕКОМЕНДУЕТСЯ К ИСПОЛЬЗОВАНИЮ. [cards] ;В этой секции прописываются префиксы для карт. ТИП КАРТЫ ОПРЕДЕЛЯЕТСЯ ПРЕФИКСОМ. Существуют 4 типа карт CardPrefix - обменная гостевая, действующая на территории комплекса. CardPrefix Может быть пустым. Пример CardPrefix = ;CardPrefix =770a87121234a ; CardPrefix =770A199999999A ; CardPrefix =750= RegularCardPrefix - постоянная карта клиента. RegularCardPrefix не может быть пустым. Если не используется, то следует написать , например RegularCardPrefix=йцукен Пример RegularCardPrefix=10 ;RegularCardPrefix=йцукен StaffCardPrefix - постоянная карта сотрудника. StaffCardPrefix не может быть пустым. Если не используется, то следует написать , например StaffCardPrefix =фывапр Пример ; StaffCardPrefix = 770=00260001= StaffCardPrefix = 778=87121234= StaffCardPrefix = 778=201050001 PDSCardPrefix -карта ПДС. PDSCardPrefix не может быть пустым. Если не используется, то следует написать , например PDSCardPrefix =ячсмит Пример PDSCardPrefix = 811876 !!!CardPrefix, RegularCardPrefix, StaffCardPrefix, PDSCardPrefix НЕ ДОЛЖНЫ СОВПАДАТЬ МЕЖДУ СОБОЙ!!! FirstSignEquallyAsLetterA = 0 - Интерпретировать первый встретившийся символ "=" в треке как символ "A". Используется FirstSignEquallyAsLetterA = 1 для совместного использования GKHOST и инфотерминалов TimeKeeper [cards.Card] CardDecodeType - алгоритм извлечения истинного номера карты ANGSTREMCARD - для карт E-Marine со считывателем СРЧ-125 ANGSTREMBRASLET- для карт E-Marine со считывателем СРЧ-2М LAST8 - последние 8 цифр LAST9 - последние 9 цифр MASK - накладывается маска Используются параметры mask и bitmask Например, mask=**hh* - взять 3-й и 4-й символ как цифры в шестнадцатиричном формате или mask=**dd* - взять 3-й и 4-й символ как цифры в десятичном формате bitmask=$00FFFFFF - и применить к ним битовую маску MaskType= MaskType Может принимать значение MaskType=ARRAYOFBYTES или MaskType= (пусто-по умолчанию) Если MaskType=ARRAYOFBYTES, то анализируется параметр mask. Значения должны быть типа "с". Например, mask = *cccc* Это значит, что при декодировании из трека возьмём 2-5 символы, представим каждый символ в 16-ричном формате. Объединим 16-ричные представления символов и применим к ним маску bitmask. Получим результат. Пример. Со считывателя пришёл трек "Пупкин". Если mask =*cccc*, то для обработки берём часть "упки". Представляем в 16-ричном виде у - F3 п - EF к - EA и - E8 Объединяем. Получаем F3EFEAE8 . Накладываем маску bitmask=$7FFFFFFF -> Получили 73EFEAE8 - в 16-ричном формате или 1945103080 - в 10-тичном формате REPLACECARDNO - замена трека значением параметра NewCardNo NewCardNo - это числовая константа (integer), которая подставляется как результат декодирования. code=2 - идентификатор карты в базе. ПАРАМЕТРЫ CODE ДЛЯ ВСЕХ ТИПОВ КАРТ ДОЛЖНЫ БЫТЬ РАЗЛИЧНЫМИ. [cards.RegularCard] Аналогично [cards.Card] [cards.StaffCard] Аналогично [cards.Card] [cards.PDSCard] Аналогично [cards.Card] ИСПОЛЬЗОВАНИЕ USEMASK=1 Добавлена секция [mask] В ней настраиваются маски карт в формате - ИМЯ МАСКИ=МАСКА Добввлена секция [general] с параметром usemask=1 (По умолчанию 0) - использовать секцию MASK или не использовать Если usemask=1, то секция [cards] игнорируется Если usemask=1, тогда при декодировании проверяется, какой маске соответствует считанный трек. После этого происходит обращение к секции [cards.ИМЯ МАСКИ] Извлекается параметр ExcludedPrefix - отделяемый от трека префикс, а также CardDecodeType. Применяется алгоритм декодирования и возвращается номер карты. Пример 1. Трек равен 778=12345678=1234567 . Он удовлетворяет маске card2. Отрезаем от трека ExcludedPrefix. Получили 1234567. К этому числу не применяем никакой алгоритм декодирования, так как CardDecodeType не заполнен. В результате получаем 1234567 - истинный номер карты. Пример 2. Трек равен 05987654321 . Он удовлетворяет маске card. Отрезаем от трека ExcludedPrefix. Получили 987654321. К этому числу применяем алгоритм декодирования MASK. Согласно алгоритму декодирования берем 5 первых символов в 10-чном формате. В результате получаем 98765 - истинный номер карты. [general] usemask=1 [mask] card = 05* card2= 778=12345678=* [cards.Card2] ExcludedPrefix=778=12345678= code=2 [cards.Card] ExcludedPrefix=05 code=2 CardDecodeType = MASK mask=ddddd bitmask=$FFFFFFFF