Как исправить неверное сканирование кодов маркировки сигарет (DataMatrix) сканером Datalogic QuickScan QD2430 через RDP на Windows 10

Системный администратор Торговля и дистрибуция
← На главную

Приветствуем вас, уважаемые коллеги! Сегодня мы совместно разберем одну из самых распространенных и неприятных проблем, с которой сталкиваются системные администраторы и специалисты по автоматизации при внедрении маркировки «Честный Знак» (в частности, для табачной продукции). Речь идет о ситуации, когда современный двумерный сканер Datalogic QuickScan QD2430, прекрасно работающий на локальном компьютере, начинает искажать данные при передаче через сессию удаленного рабочего стола (RDP) на операционной системе Windows 10.

В рамках этой статьи мы детально проанализируем физические и программные причины этой неполадки, а также рассмотрим пошаговые практические методы ее решения — от простых корректировок параметров RDP-клиента до перевода оборудования в профессиональный режим работы.

Физика процесса: почему ломается передача символов через RDP?

Давайте выясним первопричину происходящего. Когда сканер штрихкодов настроен в режиме эмуляции клавиатуры (режимы USB Keyboard или Keyboard Wedge), операционная система воспринимает его как обычное устройство ввода. Процесс сканирования выглядит для компьютера так, словно оператор со сверхчеловеческой скоростью нажимает клавиши на клавиатуре.

Двумерный код маркировки сигарет (DataMatrix) устроен очень сложно. Он содержит буквы разного регистра (строчные и заглавные), цифры и специальные управляющие символы. Чтобы передать, например, заглавную букву «D» или специальный символ, сканер должен сымитировать нажатие управляющей клавиши Shift, затем нажать клавишу буквы, а после — отпустить Shift. Весь этот цикл передачи одного символа занимает миллисекунды.

А теперь посмотрим, что происходит при работе через RDP на разных операционных системах:

  1. В Windows 7: Локальный обработчик клавиатурных прерываний и старый клиент RDP успевали вовремя обрабатывать быстрый поток сигналов нажатия и отпускания клавиш. Сигналы уходили на сервер синхронно.
  2. В Windows 10: Архитектура перехвата ввода клавиатуры (Keyboard Hook) в клиенте mstsc.exe была существенно изменена для повышения безопасности и поддержки новых функций ОС. При передаче высокоскоростного потока данных от сканера через сеть микрозадержки (пинг) приводят к рассинхронизации пакетов. Сервер получает команду «нажать Shift» с опозданием, либо команда «отпустить Shift» теряется в очереди.

В результате на стороне сервера мы наблюдаем хаотичное изменение регистра букв (строчные становятся заглавными, и наоборот), а также появление неверных спецсимволов. Например, вместо косой черты / в блокнот или форму 1С передается знак вопроса ?, поскольку в английской раскладке клавиатуры клавиша / при зажатом Shift выдает именно ?.

Ниже мы подробно разберем четыре эффективных метода устранения этой проблемы.

Решение №1. Профессиональный подход — перевод сканера в режим виртуального COM-порта (USB-COM)

Использование клавиатурного режима для кодов маркировки — это в принципе компромиссный и нестабильный вариант. Код маркировки сигарет содержит скрытый символ разделителя групп данных — GS (ASCII 29). В клавиатурном режиме сканер чаще всего не может передать его корректно, что делает невозможным правильную проверку кода в 1С и системе маркировки.

Самым надежным и правильным решением является перевод сканера в режим эмуляции COM-порта с последующим пробросом порта в RDP-сессию. В этом режиме данные передаются не как нажатия клавиш, а как единый массив (строка данных) напрямую в порт. Давайте разберем этот процесс по шагам:

  1. Скачайте и установите на локальный компьютер с Windows 10 официальный драйвер виртуального COM-порта — Datalogic USB COM Driver.
  2. Распечатайте или откройте на экране официальное руководство по программированию сканера Datalogic QuickScan QD2430. Найдите раздел интерфейсов и сосканируйте управляющий штрихкод Select USB-COM-STD (эмуляция стандартного USB COM-порта).
  3. Подключите сканер к компьютеру. Откройте «Диспетчер устройств» Windows 10 и разверните ветку Порты (COM и LPT). Убедитесь, что устройство успешно определилось и ему назначен номер (например, COM3).
  4. Настройте подключение к удаленному рабочему столу. Запустите mstsc.exe, нажмите кнопку Показать параметры, перейдите на вкладку Локальные ресурсы. В нижней части в блоке «Локальные устройства и ресурсы» нажмите кнопку Подробнее.... Установите галочку напротив пункта Порты и нажмите «ОК».
  5. Подключитесь к серверу Windows Server 2016. Откройте диспетчер устройств на сервере — вы увидите перенаправленный порт (он будет подписан как COM3 (перенаправлено...)).
  6. В программе 1С перейдите в меню подключения торгового оборудования, добавьте новый сканер штрихкодов, выберите сертифицированный драйвер «1С:Сканеры штрихкода (COM)» и укажите номер перенаправленного порта.

При таком подходе данные будут передаваться мгновенно и без малейших искажений, независимо от раскладки клавиатуры и скорости сети.

Для понимания того, как 1С обрабатывает данные, поступающие из COM-порта, рассмотрим концептуальный пример кода на стороне платформы:


// Пример обработки внешнего события от сканера в модуле управляемого приложения
Процедура ПриВнешнемСобытии(Источник, Событие, Данные) Экспорт
    
    // Проверяем, что событие пришло именно от нашего сканера
    Если Источник = "BarCodeScanner" Или Событие = "BarCode" Тогда
        
        ОчищенныеДанные = СокрЛП(Данные);
        
        // Передаем штрихкод в модуль обработки маркировки
        ОбработкаМаркировкиКлиент.ОбработатьКодМаркировки(ОчищенныеДанные);
        
    КонецЕсли;
    
КонецПроцедуры

Решение №2. Настройка задержки между символами (Intercharacter Delay)

Если специфика вашей учетной системы или архитектура сети категорически не позволяют использовать виртуальный COM-порт, и вам приходится оставаться в клавиатурном режиме, необходимо искусственно «замедлить» сканер. Это нужно для того, чтобы буфер клавиатурного ввода Windows 10 и RDP-клиент успевали синхронизировать нажатия клавиш-модификаторов (таких как Shift).

Для этого в сканере Datalogic QD2430 предусмотрен параметр Intercharacter Delay (задержка между отправкой отдельных символов штрихкода):

  1. По умолчанию в сканере установлена задержка, равная 0 миллисекунд (максимальная скорость передачи).
  2. Откройте полное руководство по программированию сканера (Product Reference Guide) и перейдите к разделу настроек Keyboard Wedge -> Intercharacter Delay.
  3. Последовательно сосканируйте программирующие штрихкоды для установки задержки в диапазоне от 10 до 30 миллисекунд (оптимально начать с 20 мс).
  4. Альтернативный вариант: подключите сканер к локальному компьютеру и воспользуйтесь фирменной утилитой конфигурирования Datalogic Aladdin. В графическом интерфейсе найдите параметр задержки между символами, измените его значение на 20 ms и запишите конфигурацию в память устройства.

Визуально для кассира или кладовщика скорость сканирования практически не изменится, но микроскопические паузы позволят RDP-клиенту стабильно обрабатывать каждый символ маркировки.

Решение №3. Изменение параметров клавиатуры в RDP-клиенте

Иногда решить проблему удается локальной перенастройкой самого клиента подключения к удаленному рабочему столу на компьютере пользователя с Windows 10. По умолчанию RDP-клиент перехватывает и обрабатывает многие комбинации клавиш особым образом.

Проанализируем шаги по изменению этих параметров:

  1. Откройте окно запуска подключения к удаленному рабочему столу (mstsc.exe).
  2. Разверните параметры подключения и перейдите на вкладку Локальные ресурсы.
  3. В блоке «Клавиатура» найдите настройку Использовать сочетания клавиш Windows.
  4. Поменяйте значение по умолчанию («Только в полноэкранном режиме») на строгий вариант На этом компьютере.

Это заставит локальную систему Windows 10 перехватывать системные хуки клавиатуры на локальном уровне до отправки их в виртуальный канал RDP, что существенно разгрузит клавиатурный буфер удаленной сессии и уменьшит количество ошибок с некорректным регистром.

Решение №4. Использование альтернативного режима клавиатуры (USB-KBD-ALT)

У сканеров Datalogic есть уникальная встроенная функция обхода проблем с раскладками клавиатуры и управляющими клавишами. Этот режим называется USB-KBD-ALT (эмуляция ввода через Alt-коды).

При активации этого режима сканер перестает имитировать нажатие обычных клавиш букв. Вместо этого он преобразует каждый символ штрихкода в числовой ASCII-код и передает его путем быстрой имитации зажатой клавиши Alt и ввода цифр на цифровой клавиатуре (Numpad). Этот метод обладает следующими преимуществами:

Для перевода сканера в этот режим найдите в руководстве программирования штрихкод с названием Select USB-KBD-ALT (или аналогичный режим эмуляции Alt-последовательностей) и сосканируйте его.

Решение №5. Использование специализированного софта (USB Redirector)

В сложных корпоративных сетях с жесткими политиками безопасности Active Directory проброс стандартных COM-портов средствами RDP может быть заблокирован групповыми политиками. В этом случае на помощь приходят специализированные программные продукты для виртуализации USB-портов.

Примером такого решения является программа USB Redirector RDP Edition:

  1. На локальный компьютер пользователя устанавливается клиентская часть программы.
  2. На сервере Windows Server 2016 разворачивается серверная часть.
  3. Программа полностью «забирает» USB-порт со сканером на локальной машине и инкапсулирует его напрямую в сессию RDP. Сервер видит устройство так, будто сканер физически подключен к его USB-порту.

Это позволяет использовать любые локальные драйверы непосредственно внутри удаленной сессии без применения встроенных механизмов проброса Microsoft.

Подведем итоги и выберем оптимальную стратегию

Мы подробно разобрали причины некорректного считывания DataMatrix и несколько способов исправления ситуации. Для наглядности сопоставим предложенные методы в таблице:

Метод решения Сложность настройки Надежность для маркировки Рекомендуемый сценарий
USB-COM (Решение 1) Средняя Максимальная (100%) Основной промышленный стандарт для работы с маркировкой в 1С.
Intercharacter Delay (Решение 2) Низкая Средняя Когда нет возможности установить драйверы виртуального COM-порта.
Параметры RDP (Решение 3) Очень низкая Низкая Как быстрый вспомогательный шаг в дополнение к другим методам.
USB-KBD-ALT (Решение 4) Низкая Высокая Когда критически важна независимость от раскладки клавиатуры.

Внедряйте профессиональный подход с виртуальными COM-портами, настраивайте оборудование правильно, и пусть ваши системы маркировки работают бесперебойно и точно!

← На главную