Подключение считывателя ESMART Reader к ПО "Абонемент". Настройка совместной работы считывателей ESMART и IronLogic (Z-2/Matrix-III)

Рис.1 Внешний вид считывателя ESMART Reader
 
Подключаем считыватели, устанавливаем драйвера и открываем COM-порты через PuTTy
 
Рис.2 Треки полученные со считывателей 
 
На считыватель Esmart Reader (в режиме эмуляции COM-порта) пришел трек: 04614912234F80, в свою очередь на считыватель IronLogic Z-2 USB RD-ALL трек той же карты передается в виде: Mifare[12234F80046149] 004,24905  (0144,08).
Видим, что 04614912234F80 получается из 12234F80046149 путем перемены местами 8 начальных и 6 конечных симоволов. Для такой перестановки в утилите decodecards (с версии 1.28) существует параметр "DecodeTypeEx=4".
Произведем настройку TCPCardReader (с использованием утилиты decodecards) таким образом, чтобы идентификаторы прикрепленные с помощью считывателя Esmart Reader совпадали с идентификаторами прикрепленными на IronLogic Z-2 (IronLogic Matrix-III), такая настройка может потребоваться, например, в случае использования на объекте турникетов (на них, как правило, устанавливаются считыватели Matrix-III) и т.п.
 

Настройка на стороне утилиты TCPCardReader (__WORKSTATION/TcpCardReader/)

В утилите TCPCardReader настраиваем 2 считывателя, утилиту decodecards не используем (useDecodeCards=0)
 
Фрагмент файла tcpcardreader.ini:
 
[READER1]
isKBReader=0
COMPORT=25
COMPORTPARAMS=baud=9600 data=8 parity=N stop=1
;Параметр Prefix задаёт строку, которая передаётся клиентам перед первым прочтенным символом
Prefix=;
;Параметр Postfix задаёт строку, которая передаётся клиентам после последнего прочтенного символа
Postfix=?
;Использовать decodecards.dll
useDecodeCards=0
StartTermChars=#10;
FinishTermChars=#13;

[READER2]
COMPORT=19
COMPORTPARAMS=baud=9600 data=8 parity=N stop=1
;Параметр Prefix задаёт строку, которая передаётся клиентам перед первым прочтенным символом
Prefix=;
;Параметр Postfix задаёт строку, которая передаётся клиентам после последнего прочтенного символа
Postfix=?
PrefixAfterFirstSymbol=0
;Использовать decodecards.dll
useDecodeCards=0
StartTermChars=;
FinishTermChars=?#13;#10;#0;
NeedCheckAndReopenCom=1

Настройка на стороне ПО "Абонемент" (__WORKSTATION/exe/)

В ПО "Абонемент", утилита decodecards используется по умолчанию для обработки треков поступающих из TcpCardReader либо через при подключении считывателя напрямую. 
 
Фрагмент файла abonementmanager.ini:
 
[TCPCardReader]
PORT=7760
HOST=127.0.0.1
; Если используется TCPCardReader для чтения com-портом, то установите UseTCPCardReader=1
UseTCPCardReader=1
StartTermChars=;
FinishTermChars=?#13;#10;#0;
 
Фрагмент файла decodecards.ini:
 
[general]
usemask=1
TrackResultLog=

[mask]
card3 = Em-Marine*
card2 = Mifare* 
card = *

[cards.Card]
code=2
CardDecodeType = MASK
mask=hhhhhhhhhhhhhh

[cards.Card2]
ExcludedPrefix=Mifare[
code=2
CardDecodeType = MASK
mask=hhhhhhhhhhhhhh
DecodeTypeEx=4

[cards.Card3]
ExcludedPrefix=Em-Marine[
code=2
CardDecodeType = MASK
mask=****dddddddd

 

Настройка на стороне rKeeper для совпадения получаемых номеров с настройками выше для ПО "Абонемент"

 

Рис.3 Пример настроек устройства в rKeeper7,

в случае работы считывателя в режиме COM

Рис.4 Пример настроек устройства в rKeeper7,

в случае работы считывателя в режиме клавиатуры

 

Примеры настроек устройства в rKeeper7 приведены на рис.3-4

Пример кода и настроек MCR-алгоритма:

Код алгоритма, соответствующий декодированию, описанному выше для Абонемент:

 

function MCR1000689(DeviceSignal: Integer; DeviceIdent: Integer; var Parameter: String): Boolean;
var
track,trn:string;
begin
  if (DeviceIdent<>951)
  then  Result := False
  else
  begin
     track:=Parameter;
     trn:=Copy(track,7,8)+Copy(track,1,6);
     Parameter:=int64tostr(strtoint64('$'+trn));
     result:=true;
  end;
end;

Рис.6 Пример настроек MCR-алгоритма