При подключении торгового оборудования к рабочим местам кассиров часто возникает ситуация: на одном терминале клавиатурный считыватель магнитных карт (MSR) работает штатно, автоматически отсекая служебные символы дорожек (например, знак начала ; и окончания ?), а на втором терминале с аналогичными настройками в поле ввода попадает сырая строка вида ;502408?. В результате программа не распознает карту или требует ручного подтверждения.
Разберем детально, почему возникает такая рассинхронизация в поведении оборудования и как по шагам восстановить правильную обработку данных.
Клавиатурный считыватель магнитных карт (работающий в режиме HID Keyboard) эмулирует нажатия клавиш клавиатуры. Для конфигураций 1С и фронт-офисных систем («1С-Рарус: Рестарт», «1С:Розница» и др.) драйвер торгового оборудования должен перехватывать последовательность ввода с помощью системных хуков (Low-Level Keyboard Hook) или механизмов Raw Input.
Если драйвер не успевает распознать последовательность как аппаратное считывание или не находит ожидаемого суффикса, текст передается напрямую в активный элемент формы как обычный ручной ввод с клавиатуры. Выясним основные факторы, влияющие на это:
CR / Enter или LF). Если в настройках драйвера 1С суффикс не указан или не совпадает со служебным кодом ридера, драйвер ожидает продолжения ввода и не инициирует событие внешней компоненты.; и ? транслируются как ж и ,. В этом случае драйвер-перехватчик не находит заданный префикс ; и пропускает сырой поток.Стандартный текстовый редактор «Блокнот» отображает только печатные символы и скрывает управляющие коды. Проанализируем физический поток данных с помощью специализированных утилит:
MSR112A Demo Application) или воспользуемся тестом драйвера торгового оборудования (например, «АТОЛ: Драйвер устройств ввода»).0x0D (CR, 13) или 0x0A (LF, 10), их обязательно требуется учесть в настройках 1С.Перейдем к настройке торгового оборудования в информационной базе. Разберем правильное заполнение параметров обработки обслуживания:
Для второй дорожки стандартный префикс равен ; (код 59).
Суффикс дорожки часто состоит из знака окончания ? (код 63) и кода клавиши Enter (код 13 / #13).
?#13 или символ перевода каретки).Для гарантированной работы клавиатурного эмулятора настроим системное окружение Windows на проблемном моноблоке:
Если параметры драйвера подобраны верно, но чтение периодически сбоит, рассмотрим настройку самого считывателя через сервисную утилиту производителя:
;, ?, %). В этом случае считыватель будет отдавать только «чистый» номер карты и управляющий суффикс Enter.Intercharacter Delay на значение 0 или 1 мс.