Как пробросить COM-порт сканера штрихкодов с Android-устройства на сервер терминалов

Системный администратор 1С v8.3 (Управляемые формы) 1С:Управление торговлей Торговля и дистрибуция
← На главную

При работе с терминалами сбора данных (ТСД) на базе Android и Bluetooth-сканерами (например, Urovo U2 и кольцо R70) системные администраторы часто сталкиваются с ограничением мобильного клиента Microsoft Remote Desktop (RDP). В отличие от Windows-версии, мобильное приложение для Android не поддерживает нативный проброс последовательных (COM) портов. Это создает сложности при работе в 1С:Управление торговлей 11, так как стандартный режим "в разрыв клавиатуры" требует фокуса в конкретном поле ввода и не всегда корректно инициирует внешнее событие.

В этой статье мы разберем несколько проверенных способов решения этой задачи, начиная от правильной настройки стандартных драйверов 1С и заканчивая созданием сетевого моста для передачи данных.

Способ 1. Использование стандартного драйвера 1С в режиме эмуляции клавиатуры

Многие специалисты ошибочно полагают, что работа "в разрыв клавиатуры" — это всегда неудобно и требует постоянного контроля фокуса. Однако современные драйверы 1С:Сканеры штрихкода (NativeApi) позволяют обрабатывать ввод с клавиатуры так же эффективно, как и с COM-порта, если правильно настроить префиксы.

Рассмотрим этот процесс подробнее:

  1. Настройка сканера: Переведите сканер в режим HID (Keyboard). В настройках ТСД (у Urovo это приложение Scan Settings) добавьте уникальный префикс, который редко используется в обычной печати (например, символы # или $).
  2. Настройка в 1С: Перейдите в раздел "Подключаемое оборудование". При создании нового устройства выберите драйвер "1С:Сканеры штрихкода (NativeApi)".
  3. Параметры драйвера: В настройках драйвера укажите тип подключения "Клавиатура". В поле "Префикс" введите тот же символ, что вы настроили на сканере.

При такой настройке драйвер 1С будет перехватывать поток ввода, находить в нем ваш префикс и генерировать Внешнее событие. Это позволит 1С отрабатывать сканирование мгновенно, даже если курсор не установлен в поле поиска товара. Это самый простой способ, не требующий стороннего ПО.

Способ 2. Трансляция данных через TCP-порт (Serial-over-IP)

Если специфика бизнес-процесса требует именно COM-порта, или режим клавиатуры работает нестабильно, проанализируем вариант создания сетевого моста. Поскольку RDP не пробрасывает порт, мы можем передать данные по протоколу TCP/IP напрямую на сервер, минуя RDP-канал.

Для реализации этой схемы выполните следующие шаги:

  1. На стороне Android: Установите приложение, которое умеет считывать данные из Bluetooth SPP (Serial Port Profile) и транслировать их в TCP-сокет. Существуют как готовые утилиты (например, "Serial-to-TCP Connector"), так и специализированные разработки.
  2. На стороне Сервера (Windows): Установите эмулятор виртуальных COM-портов, который умеет создавать порт из входящего TCP-соединения. Популярным решением является VSPE (Virtual Serial Ports Emulator) или TCP-Com.
  3. Создание моста: В VSPE создайте новое устройство типа TcpServer, укажите локальный порт (например, 4001) и свяжите его с виртуальным COM9.
  4. В 1С: В настройках оборудования выберите созданный COM9.

Теперь, когда сканер считывает код, данные отправляются по Wi-Fi на IP-адрес сервера, попадают в VSPE, который "скармливает" их виртуальному порту. 1С воспринимает это как обычное локальное подключение оборудования.

Способ 3. Использование собственного TCP-транспорта штрихкодов

Разберем ситуацию, когда требуется максимальная надежность. Как отмечали участники сообщества, для больших и сложных штрихкодов (например, маркировка честный знак или длинные EAN-128) можно написать небольшую сервисную утилиту. Суть метода заключается в создании приложения-прослойки.

На стороне 1С в модуле управляемого приложения или в специализированной обработке можно реализовать прослушивание входящих сообщений. Рассмотрим примерный алгоритм работы такой системы:


// Пример логики на стороне сервера 1С (упрощенно)
Процедура ПриНачалеРаботыСистемы()
    // Запуск прослушивания порта, если используется внешняя компонента
    Попытка
        ЗагрузитьВнешнююКомпоненту("ОбщийМакет.КомпонентаTCP", "TCP");
        ОбъектTCP = Новый ("AddIn.TCP.SocketListener");
        ОбъектTCP.Порт = 8080;
        ОбъектTCP.Открыть();
    Исключение
        Сообщить("Не удалось запустить службу перехвата штрихкодов");
    КонецПопытки;
КонецПроцедуры

Данный метод позволяет полностью уйти от ограничений RDP-клиента и зависимости от COM-портов. Данные передаются как чистый текст по сети, что исключает потерю символов при задержках в терминальной сессии.

Способ 4. Работа через Intent-фильтры (Специфика Urovo)

Для устройств Urovo существует продвинутый метод интеграции. ТСД умеет транслировать результат сканирования в систему через Android Intent. Это стандартный механизм межпрограммного взаимодействия в Android.

Выясним, как это использовать для RDP:

Резюме и рекомендации

Проанализировав ситуацию, можно сделать следующие выводы. Если вы хотите избежать "подпиливания" конфигурации 1С и добиться работы "как в COM-порту", лучшим выбором будет Способ №2 (Сетевой мост через TCP). Это обеспечит прозрачную работу драйверов 1С.

Однако, с точки зрения стабильности в условиях нестабильного Wi-Fi, наиболее предпочтительным является Способ №1 с настройкой префиксов и суффиксов в стандартном драйвере 1С. Это минимизирует количество промежуточного ПО и точек отказа в системе. Помните, что для успешной работы в режиме клавиатуры крайне важно наличие корректного суффикса (обычно CR или Enter), чтобы 1С понимала завершение ввода штрихкода.

← На главную