Почему периодически зависают сканеры штрихкодов Honeywell 5145 в 1С и как это исправить?

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

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

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

Причина 1: Зависание потока чтения в устаревших версиях драйвера ScanOPOS

В типовых решениях 1С прошлых версий для работы с COM-портом применяется драйвер ScanOPOS линейки 8.0.x. При возникновении малейшего тайм-аута или сбоя дескриптора порта на уровне операционной системы устаревшая COM-компонента блокирует поток чтения. Сканер продолжает считывать штрихкоды на аппаратном уровне, но в платформе событие ВнешнееСобытие перестает генерироваться до перезапуска процесса 1cv8.exe.

Разберем по шагам, как исправить программную часть:

  1. Обновим компоненту ScanOPOS до версии 8.1.7.9 или выше, в которой переработан механизм перехвата ошибок COM-портов.
  2. Перейдем на использование сертифицированного драйвера 1С:Сканеры штрихкода (NativeApi) вместо устаревшей библиотеки ScanOPOS. Компоненты NativeApi корректно обрабатывают кратковременные потери связи с шиной USB и автоматически восстанавливают чтение данных.
  3. В качестве альтернативного решения рассмотрим установку специализированных драйверов торгового оборудования от сторонних интеграторов (например, драйвер устройств ввода АТОЛ).

Причина 2: Спящий режим и управление электропитанием USB-контроллеров

Операционная система Windows по умолчанию экономит питание и может кратковременно отключать питание корневых USB-концентраторов или переводить контроллер в режим ожидания. Для торгового оборудования это приводит к разрыву виртуального последовательного соединения без уведомления программы 1С.

Выполним полную настройку электропитания:

  1. Откроем «Диспетчер устройств» Windows, перейдем в ветку Контроллеры USB.
  2. Откроем свойства каждого элемента (Корневой USB-концентратор, Generic USB Hub) и на вкладке Управление электропитанием снимем флаг Разрешить отключение этого устройства для сохранения энергии.
  3. В панели управления перейдем в раздел Электропитание, выберем текущую схему («Высокая производительность») и нажмем Изменить дополнительные параметры питания.
  4. В дереве параметров раскроем узел Параметры USB -> Параметр временного отключения USB-порта и установим значение Запрещено.

Причина 3: Аппаратная несовместимость с портами USB 3.0 и двунаправленным обменом

Сканеры Honeywell 5145 разработаны на базе интерфейса USB 1.1/2.0. При подключении к портам USB 3.0 (синие разъемы, контроллеры xHCI) эмуляция COM-порта нередко зависает из-за некорректной обработки очередей пакетов. Кроме того, внутренняя прошивка сканера может ожидать подтверждения приема (ACK/NAK) от программы.

Проверим и исправим аппаратные параметры:

  1. Подключим сканер строго в разъем USB 2.0 (черного цвета) непосредственно на задней панели системного блока, избегая передних панелей и несогласованных удлинителей.
  2. По сервисной книжке сканера штрихкодов перепрограммируем устройство в режим Enable Uni-Directional USB Serial Emulation Mode (однонаправленный обмен). Если сканер находится в двунаправленном режиме (Bi-Directional), а 1С не отправляет устройству квитанции о получении данных, внутренний буфер сканера переполняется, и устройство перестает передавать последующие коды.
  3. В «Диспетчере устройств» откроем свойства созданного виртуального COM-порта (Параметры порта -> Дополнительно): установим Управление потоком в значение Нет (None) и снизим уровни буферов приема/передачи FIFO до минимальных значений.

Причина 4: Альтернативная настройка — переход в режим клавиатуры (HID)

Если виртуальный COM-порт продолжает работать нестабильно на конкретной связке оборудования, переведем сканер в режим эмуляции клавиатуры. Чтобы при этом в 1С не требовалось нажимать клавишу F7 или удерживать фокус в поле ввода, выполним корректную программную настройку суффиксов.

Пошаговый порядок настройки:

  1. Считаем сервисный штрихкод из руководства пользователя сканера для перевода в режим USB Keyboard Emulation (HID).
  2. Запрограммируем в сканере передачу суффиксов возврата каретки (CR / LF) — ASCII-коды 13 и 10.
  3. В 1С откроем форму настройки торгового оборудования (сканера штрихкода).
  4. В параметрах подключения укажем суффикс 13 (или 13, 10) и увеличим значение чувствительности/тайм-аута между символами до 100–150 мс.
  5. В таком режиме драйвер распознает быстро введенный поток символов как сигнал сканера и сгенерирует внешнее событие в коде формы, аналогично работе через COM-порт.

Пример программной обработки события в коде формы 1С

При корректной передаче штрихкода через драйвер устройства ввода платформа вызывает предопределенную процедуру формы:


Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
    
    // Проверяем источник внешнего события торгового оборудования
    Если Источник = "BarCodeScaner" ИЛИ Источник = "СканерШтрихкода" Тогда
        
        // Получаем переданный штрихкод
        ТекущийШтрихкод = СокрЛП(Данные);
        
        // Выполняем поиск товара в информационной базе
        ОбработатьШтрихкодТовара(ТекущийШтрихкод);
        
    КонецЕсли;

КонецПроцедуры

Применение обновленных драйверов, отключение спящего режима USB и правильный выбор однонаправленного режима эмуляции позволяют полностью устранить зависания сканеров Honeywell при интенсивной работе на кассовых узлах.

← На главную