При прокатывании ДК с магнитной полосой через ридер появляется окно с надписью "Неверная карта". Если сначала нажать кнопку "Скидка" и в появившемся окне запроса номера карты прокатать карту через ридер, то появляется окно с надписью "Дисконтная карта ',,' не обслуживается".
Такое происходит не на всех картах. Меня смутил номер карты ',,'. Включил расширенный лог для мониторинга клавиатуры в ukm.ini:
Код:
UKM_OPTIONS='--log-add=ckeyboardportstandard'
В логах:
Код:
15:19:14: 0x0004c010: INFO: ckeyboardportstandard: r65
15:19:14: 0x0004c010: INFO: ckeyboardportstandard: r60
15:19:14: 0x0004c010: INFO: ckeyboardportstandard: r42
15:19:14: 0x0004c010: INFO: ckeyboardportstandard: r49
15:19:14: 0x0004c010: INFO: ckeyboardportstandard: r44
15:19:14: 0x00004000: WARNING: debug#/usr/local/storage/home/ukm/build-br-71-2016_06_20_17_43_54/ukm/libukm/ccontext_default.cpp(4051) HandleMCR: Неверная карта
15:19:14: 0x0004c010: INFO: ckeyboardportstandard: r65
15:19:14: 0x0004c010: INFO: ckeyboardportstandard: r60
15:19:14: 0x0004c010: INFO: ckeyboardportstandard: r42
15:19:14: 0x0004c010: INFO: ckeyboardportstandard: r48
15:19:14: 0x0004c010: INFO: ckeyboardportstandard: r30
15:19:14: 0x0004c010: INFO: ckeyboardportstandard: r31
15:19:14: 0x0004c010: INFO: ckeyboardportstandard: r35
15:19:14: 0x0004c010: INFO: ckeyboardportstandard: r40
15:19:14: 0x0004c010: INFO: ckeyboardportstandard: r40
15:19:14: 0x0004c010: INFO: ckeyboardportstandard: r40
15:19:14: 0x0004c010: INFO: ckeyboardportstandard: r40
15:19:14: 0x0004c010: INFO: ckeyboardportstandard: r40
15:19:14: 0x0004c010: INFO: ckeyboardportstandard: r40
15:19:14: 0x0004c010: INFO: ckeyboardportstandard: r40
15:19:14: 0x0004c010: INFO: ckeyboardportstandard: r03
15:19:14: 0x0004c010: INFO: ckeyboardportstandard: r40
15:19:14: 0x0004c010: INFO: ckeyboardportstandard: r03
15:19:14: 0x0004c010: INFO: ckeyboardportstandard: r09
15:19:14: 0x0004c010: INFO: ckeyboardportstandard: r08
15:19:14: 0x0004c010: INFO: ckeyboardportstandard: r09
15:19:14: 0x0004c010: INFO: ckeyboardportstandard: r0f
15:19:14: 0x0004c010: INFO: ckeyboardportstandard: r0c
15:19:14: 0x0004c010: INFO: ckeyboardportstandard: r44
Красным цветом выделено то, что соответствует номеру карты: 0000000303989 (похоже, что r40 - это 0).
Если прокатать карту через ридер, подключенный в разъем клавиатуры на компе, то выглядит все правильно ;0000000303989? (да и в УКМ2 работает).
На картах, которые работают нормально, в логах отсутствует первая часть r65 r60 r42 r49 r44 (до WARNING ... HandleMCR: Неверная карта)
Похоже, что УКМ рассматривает r44 (выделено зеленым цветом) как конец данных и пытается получить номер ДК. Пробовал в шаблоне менять номера дорожек на 1 и 3 с соответствующими префиксами, но это ничего не дало. Менял шаблон так, что после символа ';' все остальное - номер карты, но все равно получал окно "Дисконтная карта ',,' не обслуживается". Подозреваю, что карта криво намагничена.
Может быть, как-то можно сделать так, чтобы r44 был частью префикса в шаблоне?