Почему сканирование штрихкода через RDP на ТСД происходит с задержкой и как это исправить?

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

При подключении терминала сбора данных (ТСД) на базе Android к удаленному рабочему столу (RDP) для работы с 1С часто возникает проблема: считанный штрихкод передается на сервер с ощутимой задержкой (от 1 до 3 секунд). При этом текст в поле ввода или в обычном Блокноте вводится посимвольно, с явным эффектом «ручного набора». Разберем физику этого процесса, выясним причину задержек и рассмотрим практические способы настройки ТСД и RDP-сеанса для быстрого сканирования.

Механизм возникновения задержки при сканировании через RDP

Проанализируем цепочку передачи данных, которая происходит при стандартных заводских настройках ТСД:

  1. Аппаратный сканирующий модуль считывает штрихкод.
  2. Служба сканера ТСД в режиме эмуляции клавиатуры преобразует полученную строку в последовательность виртуальных нажатий клавиш (события KeyDown / KeyUp).
  3. Мобильный RDP-клиент перехватывает эти нажатия и отправляет каждое из них отдельным сетевым пакетом на удаленный сервер через Wi-Fi.
  4. Сервер принимает нажатия по одному, обрабатывает их и отправляет клиенту графическое подтверждение изменения экрана.
  5. При наличии сетевой задержки (RTT) даже в 20–40 мс строка длиной в 13–20 символов гарантированно вводится с задержкой в 1–2 секунды, создавая визуальный эффект медленной печати.
  6. Если на сервере используется клавиатурный драйвер торгового оборудования 1С, он ожидает окончания тайм-аута между символами. Из-за сетевых пауз драйвер может либо разрывать штрихкод на части, либо выдавать ошибку неполного считывания.

Способ 1. Настройка межсимвольного интервала и режима ввода в утилите сканирования ТСД

Рассмотрим по шагам регулировку системных параметров встроенной утилиты сканирования (на устройствах CipherLab это приложение ReaderConfig или аналогичный конфигуратор сканера на других Android-терминалах):

  1. Отключение межсимвольной задержки: перейдем в раздел настроек сканера (Data Output / Advanced Options) и найдем параметр Key Delay или Inter-Character Delay (межсимвольный интервал). По умолчанию там может стоять искусственная задержка (например, 10–50 мс на символ). Установим значение в 0 ms или переведем параметр в состояние Disable.
  2. Смена типа эмуляции клавиатуры: в разделе Keyboard Emulation переключим режим вывода данных с InputMethod (системный метод ввода Android) на прямой ввод скан-кодов KeyEvent. Режим KeyEvent генерирует низкоуровневые события, которые RDP-клиент упаковывает быстрее.
  3. Использование режима буфера обмена (Clipboard Mode): если утилита сканера поддерживает режим вставки через буфер, включим параметр Clipboard Mode / Paste. В этом случае сканер помещает весь штрихкод в буфер обмена целиком и эмулирует только одно сочетание клавиш Ctrl+V, что полностью устраняет посимвольную задержку.

Способ 2. Оптимизация параметров операционной системы Android и RDP-клиента

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

  1. Отключение предиктивного ввода клавиатуры: стандартная экранная клавиатура Android (IME) с автоисправлением, подсказками и проверкой орфографии перехватывает поток виртуальных нажатий для анализа. Отключим в настройках языка и ввода автокоррекцию, предиктивный набор и проверку правописания.
  2. Настройка режима передачи клавиш в RDP-клиенте: в расширенных настройках мобильного RDP-клиента выберем режим передачи клавиатуры Scancode вместо Unicode, если такой переключатель присутствует.
  3. Отключение лишних перенаправлений: отключим в свойствах подключения RDP передачу звука, принтеров и буфера обмена (если не используется Clipboard Mode для сканирования), чтобы снизить накладные расходы на сетевой канал.

Способ 3. Переход на прямую передачу данных по TCP/IP или внешние события

Если специфика сети не позволяет добиться мгновенного ввода через клавиатурную эмуляцию RDP, проанализируем альтернативные технические решения, исключающие посимвольную передачу:

  1. Передача считанных данных по протоколу TCP/IP: специализированная утилита сканера на ТСД настраивается на отправку считанного кода в виде TCP-пакета на сервер. На сервере принимающая служба транслирует полученный код в виртуальный COM-порт, к которому подключается типовой драйвер сканера 1С в режиме 1С:Сканеры штрихкода (COM). Это гарантирует передачу кода в виде атомарного внешнего события без зависимости от RDP-канала и поля ввода.
  2. Использование мобильного клиента 1С: запуск базы через мобильный клиент 1С непосредственно на ТСД под управлением Android. В этом сценарии обработка данных сканера выполняется нативно через широковещательные сообщения (Broadcast Intents) и стандартные механизмы внешних событий платформы 1С.
← На главную