Почему сканер Honeywell Voyager 1450G не пробрасывается в терминальную сессию RDP и как это исправить?

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

При организации работы пользователей в терминальном режиме часто возникает ситуация: сканер штрихкода успешно переведен в режим эмуляции COM-порта, на локальной рабочей станции он функционирует исправно, в настройках подключения удаленного рабочего стола включен проброс последовательных портов, однако внутри сессии RDP на сервере виртуальный порт со сканером отсутствует. В то же время другие устройства могут пробрасываться без сбоев. Разберем причины такого поведения оборудования Honeywell и рассмотрим проверенные способы восстановления работоспособности сканера в 1С.

Выясним причины сбоя при пробросе порта

Для понимания корня проблемы проанализируем механизм трансляции портов протоколом RDP и особенности драйверов Honeywell:

  1. Конфликт системных номеров COM-портов. На стороне Windows Server порты с номерами от COM1 до COM4 зачастую зарезервированы материнской платой или виртуальными контроллерами операционной системы. Если на локальном компьютере сканеру назначен номер из этого диапазона, подсистема перенаправления RDP не может переназначить его поверх системного порта сервера.
  2. Особенности драйвера виртуального порта HSM USB Serial. Сканер Honeywell 1450G подключается по интерфейсу USB и при эмуляции COM-порта использует драйвер CDC-ACM. Виртуальные порты некоторых версий драйверов не генерируют стандартные PnP-оповещения WM_DEVICECHANGE в системе или не регистрируются как стандартный класс устройств Serial, из-за чего клиент удаленного рабочего стола игнорирует данный порт при открытии сессии.
  3. Ограничения групповых политик (GPO). На терминальном сервере может действовать запрет на перенаправление последовательных портов для пользовательских сеансов.

Способ 1. Изменение номера COM-порта на локальном компьютере

Рассмотрим самое простое и распространенное решение. Если виртуальному порту сканера назначен номер, конфликтующий с сервером, его необходимо изменить на локальной машине:

  1. Откроем Диспетчер устройств на клиентской машине.
  2. Развернем ветку Порты (COM и LPT) и найдем наше устройство (например, Honeywell HSM USB Serial Port).
  3. Откроем свойства устройства, перейдем на вкладку Параметры порта и нажмем кнопку Дополнительно.
  4. В поле Номер COM-порта выберем свободный номер выше системного диапазона — например, COM5, COM7 или COM12. Если система сообщает, что порт используется, но физически устройства нет, можно назначить свободный номер из второго десятка.
  5. Сохраним настройки, завершим текущую сессию RDP (через Logoff / Выход, а не простое закрытие крестиком) и подключимся к серверу заново.

Способ 2. Диагностика и ручной маппинг порта в сессии RDP

Проверим, видит ли сервер перенаправленные порты от клиента. Откроем командную строку (CMD) внутри терминальной сессии и выполним диагностику:

Для просмотра доступных портов выполним команду:

change port /query

Если порт успешно перенаправлен, в выводе отобразится строка сопоставления вида \Device\RdpDrPort\;COMx:y\tsclient\COMx. Если сопоставление не произошло автоматически, выполним принудительное связывание сетевого ресурса клиента с портом сессии:

net use COM5: \\tsclient\COM5

В этой команде первый параметр указывает на желаемый номер порта внутри терминального сеанса, а путь \\tsclient\COM5 обращается к физическому порту клиентской машины.

Способ 3. Обновление драйверов на клиенте и сервере

Разберем установку драйверов. Для корректной регистрации виртуального порта в реестре Windows необходим актуальный драйвер Honeywell HSM USB Serial Driver версии 3.5.x или новее. Установку дистрибутива следует выполнять строго от имени администратора до физического подключения сканера к компьютеру.

В ряде конфигураций полезно установить драйвер Honeywell непосредственно на сам терминальный сервер. Это регистрирует необходимые классы устройств и системные библиотеки в операционной системе сервера, что позволяет корректно распознавать транслируемый поток данных.

Способ 4. Переход на режим эмуляции клавиатуры с обработкой внешнего события в 1С

Проанализируем альтернативный вариант, который полностью снимает зависимость от проброса COM-портов. Исторически режим COM-порта выбирали ради асинхронного вызова внешнего события в 1С, чтобы пользователю не приходилось держать фокус ввода в конкретном поле документа.

Однако в современных конфигурациях 1С и типовых библиотеках подключаемого оборудования (БПО) сертифицированный драйвер 1С:Сканеры штрихкода (NativeApi), а также драйверы торгового оборудования АТОЛ поддерживают режим работы Клавиатура с перехватом событий.

Разберем по шагам переход на этот сценарий:

  1. Сбросим сканер штрихкодом из инструкции в стандартный режим USB Keyboard (HID). При этом отпадает необходимость в драйверах виртуального COM-порта.
  2. Установим префикс на сканере штрихкода (например, префикс F7 или комбинацию спецсимволов), считав управляющие коды из руководства по настройке сканера.
  3. В 1С перейдем в раздел Администрирование → Подключаемое оборудование.
  4. Создадим новое устройство с драйвером 1С:Сканер штрихкода (NativeApi).
  5. В параметрах подключения выберем порт Клавиатура (или режим HID) и укажем соответствующий префикс.

При такой настройке сканер транслирует данные как стандартное устройство ввода через RDP без каких-либо сбоев перенаправления, а драйвер 1С перехватывает поток и генерирует штатное внешнее событие ОбработкаВнешнегоСобытия.

Способ 5. Особенности настройки COM-порта в 1С при работе через RDP

Если требуется сохранить именно COM-режим, обратим внимание на специфику заполнения параметров в интерфейсе 1С:

  1. Ручной ввод имени порта: В выпадающем списке портов драйвера торгового оборудования проброшенный порт \\tsclient может отсутствовать. В таком случае имя порта (например, COM5) необходимо вписать в поле вручную с клавиатуры.
  2. Корректировка тайм-аута: Сетевые пакеты протокола RDP могут вносить микрозадержки в передачу байтов. В параметрах драйвера сканера в 1С рекомендуется увеличить параметр Таймаут (интервал ожидания между символами), чтобы штрихкод считывался единой строкой и не дробился на части.

Применив переназначение номера порта на локальной машине или переведя сканер в режим перехвата клавиатурных событий через NativeApi, мы получаем стабильное считывание штрихкодов в удаленной сессии без потери функционала внешних событий 1С.

← На главную