← На главную
При подключении терминала сбора данных (ТСД) на базе Android к удаленному рабочему столу (RDP) для работы с 1С часто возникает проблема: считанный штрихкод передается на сервер с ощутимой задержкой (от 1 до 3 секунд). При этом текст в поле ввода или в обычном Блокноте вводится посимвольно, с явным эффектом «ручного набора». Разберем физику этого процесса, выясним причину задержек и рассмотрим практические способы настройки ТСД и RDP-сеанса для быстрого сканирования.
Механизм возникновения задержки при сканировании через RDP
Проанализируем цепочку передачи данных, которая происходит при стандартных заводских настройках ТСД:
- Аппаратный сканирующий модуль считывает штрихкод.
- Служба сканера ТСД в режиме эмуляции клавиатуры преобразует полученную строку в последовательность виртуальных нажатий клавиш (события
KeyDown / KeyUp).
- Мобильный RDP-клиент перехватывает эти нажатия и отправляет каждое из них отдельным сетевым пакетом на удаленный сервер через Wi-Fi.
- Сервер принимает нажатия по одному, обрабатывает их и отправляет клиенту графическое подтверждение изменения экрана.
- При наличии сетевой задержки (RTT) даже в 20–40 мс строка длиной в 13–20 символов гарантированно вводится с задержкой в 1–2 секунды, создавая визуальный эффект медленной печати.
- Если на сервере используется клавиатурный драйвер торгового оборудования 1С, он ожидает окончания тайм-аута между символами. Из-за сетевых пауз драйвер может либо разрывать штрихкод на части, либо выдавать ошибку неполного считывания.
Способ 1. Настройка межсимвольного интервала и режима ввода в утилите сканирования ТСД
Рассмотрим по шагам регулировку системных параметров встроенной утилиты сканирования (на устройствах CipherLab это приложение ReaderConfig или аналогичный конфигуратор сканера на других Android-терминалах):
- Отключение межсимвольной задержки: перейдем в раздел настроек сканера (Data Output / Advanced Options) и найдем параметр Key Delay или Inter-Character Delay (межсимвольный интервал). По умолчанию там может стоять искусственная задержка (например, 10–50 мс на символ). Установим значение в
0 ms или переведем параметр в состояние Disable.
- Смена типа эмуляции клавиатуры: в разделе Keyboard Emulation переключим режим вывода данных с
InputMethod (системный метод ввода Android) на прямой ввод скан-кодов KeyEvent. Режим KeyEvent генерирует низкоуровневые события, которые RDP-клиент упаковывает быстрее.
- Использование режима буфера обмена (Clipboard Mode): если утилита сканера поддерживает режим вставки через буфер, включим параметр Clipboard Mode / Paste. В этом случае сканер помещает весь штрихкод в буфер обмена целиком и эмулирует только одно сочетание клавиш
Ctrl+V, что полностью устраняет посимвольную задержку.
Способ 2. Оптимизация параметров операционной системы Android и RDP-клиента
Посмотрим на настройки самой мобильной системы и приложения удаленного доступа, которые могут создавать дополнительные задержки при вводе:
- Отключение предиктивного ввода клавиатуры: стандартная экранная клавиатура Android (IME) с автоисправлением, подсказками и проверкой орфографии перехватывает поток виртуальных нажатий для анализа. Отключим в настройках языка и ввода автокоррекцию, предиктивный набор и проверку правописания.
- Настройка режима передачи клавиш в RDP-клиенте: в расширенных настройках мобильного RDP-клиента выберем режим передачи клавиатуры Scancode вместо Unicode, если такой переключатель присутствует.
- Отключение лишних перенаправлений: отключим в свойствах подключения RDP передачу звука, принтеров и буфера обмена (если не используется Clipboard Mode для сканирования), чтобы снизить накладные расходы на сетевой канал.
Способ 3. Переход на прямую передачу данных по TCP/IP или внешние события
Если специфика сети не позволяет добиться мгновенного ввода через клавиатурную эмуляцию RDP, проанализируем альтернативные технические решения, исключающие посимвольную передачу:
- Передача считанных данных по протоколу TCP/IP: специализированная утилита сканера на ТСД настраивается на отправку считанного кода в виде TCP-пакета на сервер. На сервере принимающая служба транслирует полученный код в виртуальный COM-порт, к которому подключается типовой драйвер сканера 1С в режиме
1С:Сканеры штрихкода (COM). Это гарантирует передачу кода в виде атомарного внешнего события без зависимости от RDP-канала и поля ввода.
- Использование мобильного клиента 1С: запуск базы через мобильный клиент 1С непосредственно на ТСД под управлением Android. В этом сценарии обработка данных сканера выполняется нативно через широковещательные сообщения (Broadcast Intents) и стандартные механизмы внешних событий платформы 1С.