Перейти к основному контенту

Принцип декодирования при TCPCardReader'е

Декодирование на стороне TCPCardReader'a включается строкой

useDecodeCards=1  

в TCPCardReader..ini в настройках конкретного считывателя:

[READER1]
COMPORT=6
COMPORTPARAMS=baud=9600 data=8 parity=N stop=1
Prefix=;
Postfix=?
useDecodeCards=1
StartTermChars=i
FinishTermChars=?#13;#10;#0;

Таким образом при включении декодирования TCPCardReader отправляет часть трека начинающегося с символа следующего за StartTermChars и заканчивающимся символом стоящим перед одним из FinishTermChars в Decodecards.

Итак Decodecards получает только эту часть и декодирует (преобразовывает/выделяет идентификатор) её.

В decodecards.ini В секции [mask] перечисляются маски по префиксам которых можно разделять декодирование разных карт

[mask]
card_em = ne*
card_mifare = fare*
card = *

В данном примере если пришедший от TCPCardReader'a трек содержит префикс "ne" ,то обработка такого трека будет описана  в секции [cards.card_em]card_em]. Соответственно если трек содержит префикс "fare" то обработка такого трека описана в секции [cards.card_mifare]. Символ  "*"  в данном случае означает любое количество символов.

Далее в секциях с названием "cards." и левой частью до знака равенства в секции [mask] конкретного типа трека настраивается декодирование.

[cards.card_em]
ExcludedPrefix=ne[
code=2
CardDecodeType = MASK
mask=****dddddddd
DecodeTypeEx = 0

Сначала удаляется часть не участвующая в декодировании используя параметр ExcludedPrefix.

Далее происходит декодирование(выделение трека) применением маски mask=.

mask=****dddddddd

Здесь * означает любой один символ который игнорируется.

Символы "d"  или "h" означают систему счисления в которой пришел в decodecards.