Перевод торгового оборудования со старых операционных систем (например, Windows 7) на современную Windows 10 часто преподносит неприятные сюрпризы системным администраторам и специалистам по автоматизации. Особенно остро это ощущается при работе с принтерами документов (АСПД) и контрольно-кассовой техникой (ККТ) производства компании «Штрих-М». Устройства, которые годами стабильно работали на «семерке», в Windows 10 могут внезапно перестать определяться, выдавать ошибки связи или критически замедлять печать чеков из 1С:Розница или других конфигураций.
В этой статье мы подробно разберем, почему возникают подобные сбои, и пошагово рассмотрим методы их устранения. Мы затронем как аппаратные нюансы работы микросхем-эмуляторов COM-порта (FTDI и Prolific), так и программные настройки параметров связи внутри драйвера «Штрих-М» и самой платформы 1С.
---
При прямом подключении АСПД или ККТ к порту USB компьютера под управлением Windows 10 операционная система пытается автоматически подобрать драйвер из своего центра обновлений. Очень часто это приводит к тому, что в Диспетчере устройств появляется неопределенный девайс с восклицательным знаком под именем FT232R USB UART, либо система определяет его как Составное USB-устройство, но при этом виртуальные COM-порты, необходимые для работы драйвера ККТ, не создаются.
Выясним причину такого поведения оборудования. Для связи по USB компания «Штрих-М» традиционно использует интегральные микросхемы британской компании FTDI (в частности, популярнейший чип FT232RL). Существуют две основные причины сбоя при работе с этими чипами в Windows 10:
0000, после чего устройство навсегда переходит в разряд неопознанных с ошибкой «Запуск этого устройства невозможен (Код 10)».Рассмотрим подробнее алгоритм решения проблемы с определением FTDI:
Шаг 1. Отключение автоматического обновления драйверов Windows. Чтобы система принудительно не накатывала новые заблокированные версии ПО, необходимо временно запретить ей это делать. Зайдите в «Свойства системы» -> «Дополнительные параметры системы» -> вкладка «Оборудование» -> «Параметры установки устройств» и выберите вариант «Нет (устройство может работать неправильно)».
Шаг 2. Установка старой стабильной версии драйвера. Нам потребуется надежная версия драйвера FTDI, которая «лояльно» относится к неоригинальным чипам и не блокирует их (например, версия 2.08.14 или 2.12.28). Скачайте архив с этой версией драйвера и распакуйте его в отдельную папку на диске.
Шаг 3. Ручное обновление в Диспетчере устройств. Нажмите правой кнопкой мыши по проблемному устройству «FT232R USB UART», выберите «Обновить драйвер» -> «Найти драйверы на этом компьютере» и укажите путь к распакованной папке с версией 2.08.14. После успешной установки в системе должны появиться разделы USB Serial Converter в системных устройствах и вожделенный USB Serial Port (COMx) в разделе «Порты (COM и LPT)».
Если устройство определилось как «Составное устройство», выполните следующие действия:
C:\Program Files (x86)\Штрих-М\Драйвер ККТ...\Drivers\). Нам нужен файл разметки драйвера виртуального порта — receipt_printer.inf или receipt_printer8.inf.---
Очень часто ноутбуки или современные системные блоки не оснащены физическими COM-портами (RS-232), из-за чего АСПД приходится подключать через специализированные кабели-переходники USB-to-Serial. Одним из самых распространенных переходников на рынке является модель Gembird USS-102, построенная на базе микросхемы Prolific PL2303.
Пользователи при этом часто сталкиваются со следующей симптоматикой: тест драйвера определяет кассу успешно, но при попытке распечатать чек устройство начинает печатать крайне медленно, буквально «выплевывая» по одной строчке раз в несколько секунд, либо печать обрывается на середине с ошибкой FFFFFFh («Нет связи») или выдает некорректные суммы в чеке.
Проанализируем ситуацию. Старые ревизии чипов Prolific (например, PL-2303HX версии A), выпущенные до 2012 года, официально не поддерживаются разработчиком в операционной системе Windows 10. Попытка запустить такой переходник на стандартных драйверах приводит к нестабильной передаче пакетов данных. Дешевые переходники не имеют качественного экранирования кабеля и гальванической развязки, из-за чего на высоких скоростях обмена данными (стандартная скорость ККТ — 115200 bps) возникают сильные электромагнитные наводки и искажения сигнала. Пакеты данных теряются, касса не успевает подтверждать прием информации, и драйвер вынужден постоянно отправлять команды заново, что визуально выражается в медленной «построчной» печати.
Разберем по шагам, как решить проблему медленной печати через переходники:
Шаг 1. Откат драйвера Prolific. Для стабильной работы старых чипов PL2303 на Windows 10 необходимо принудительно установить старую версию драйвера Prolific (например, версию 3.2.0.0 или 3.3.2.102 от 2008-2012 годов). Процедура аналогична ручной установке драйверов FTDI через Диспетчер устройств с обязательным отключением автообновлений Windows.
Шаг 2. Снижение скорости обмена (Baud rate) в таблицах ККТ. Помехоустойчивость кабеля резко возрастает при снижении частоты передачи сигнала. Мы должны принудительно уменьшить скорость работы порта кассы со стандартных 115200 bps до более стабильных 19200 bps или даже 9600 bps. Для этого:
Таблицу №5 «Параметры интерфейса» и откройте ее.BaudRate (или «Скорость») установите значение, соответствующее скорости 19200 (обычно это код 4) или 9600 (код 3).Шаг 3. Увеличение таймаута связи. В настройках свойств подключения как в «Тесте драйвера ККТ», так и непосредственно в параметрах торгового оборудования в программе 1С:Розница необходимо увеличить значение параметра Таймаут. По умолчанию там установлено значение 100–150 мс. При использовании переходников рекомендуется увеличить этот показатель до 300–1000 мс (в особо тяжелых случаях до 3000 мс). Это даст системе время дождаться ответа от кассы даже при возникновении задержек на линии.
Шаг 4. Радикальное решение (аппаратное). Если программные методы не помогают добиться стабильной и быстрой печати, рекомендуется отказаться от дешевых китайских переходников. Настоятельно советуем использовать качественные промышленные преобразователи (например, брендов Moxa или Ugreen) на оригинальных чипах FTDI. Для стационарных компьютеров лучшим решением станет установка физической платы расширения PCI-Express со стандартными COM-портами, как показывает практика, это полностью снимает любые проблемы совместимости.
---
Особо примечателен случай, описанный в сообщении 11: при подключении АСПД тест связи проходит успешно, отчет без гашения (X-отчет) печатается без нареканий, однако при попытке пробить фискальный чек из документа «Чек ККМ» в 1С:Розница система возвращает ошибку 33h или FFFFFFh.
Выясним причину этой ошибки. Код ошибки 33h генерируется самой прошивкой кассового аппарата и означает: «Некорректные параметры в команде». В отличие от простых сервисных команд (таких как печать отчетов, которые не несут в себе сложных структурированных данных), команда регистрации позиции чека содержит множество фискальных реквизитов (наименование товара, цена, ставка НДС, количество, признаки способа и предмета расчета, данные покупателя и т.д.). Если хотя бы один из этих параметров передан некорректно, ККТ отвергает всю команду целиком.
Рассмотрим основные источники возникновения ошибки 33h и способы их устранения:
4.13.577 или 4.9.0.163), которые гарантируют обратную совместимость со старыми конфигурациями 1С на обычных и управляемых формах.---
Сценарий проблемы: системный администратор настроил связь, касса успешно отвечает на запросы в утилите «Тест драйвера ККТ», однако при запуске сеанса 1С:Розница программа выдает ошибку о том, что порт занят другим процессом, и связь установить невозможно.
Рассмотрим природу монопольного доступа к COM-портам в Windows. Любой COM-порт (физический или виртуальный) спроектирован так, что единовременно монопольно захватывать его может только одно активное приложение. Если у вас открыта запущенная утилита «Тест драйвера» и в ней установлена галочка «Устройство включено», порт ККТ будет намертво заблокирован для любых других программ, включая 1С.
Для предотвращения конфликтов совместного доступа применим следующие правила настройки:
EthernetOverUSB (или сторонние утилиты мониторинга портов), убедитесь, что служба настроена на прослушивание именно сетевого порта (RNDIS), а не управляющего COM-порта ККТ. В противном случае служба будет циклически перехватывать управление устройством, вызывая периодические ошибки «Порт занят» в 1С.---
Для понимания того, как платформа 1С взаимодействует с драйвером торгового оборудования на низком уровне, рассмотрим пример кода инициализации подключения к АСПД/ККТ «Штрих-М» через COM-порт. Этот код наглядно демонстрирует программную установку параметров связи, о которых мы говорили выше (номер порта, скорость обмена и таймаут ожидания):
// Инициализация объекта драйвера Штрих-М
Попытка
ПодключениеВнешнейКомпоненты("AddIn.SHTRIH_M_Фискальный_регистратор");
ОбъектДрайвера = Новый ("AddIn.SHTRIH_M_Фискальный_регистратор");
Исключение
Сообщить("Не удалось загрузить внешнюю компоненту Штрих-М! Проверьте регистрацию dll.");
Возврат;
КонецПопытки;
// Настройка параметров связи с учетом наших рекомендаций
ОбъектДрайвера.ConnectionMode = 1; // Режим подключения: Локальный COM-порт
ОбъектДрайвера.ComNumber = 3; // Будем использовать созданный виртуальный COM3
ОбъектДрайвера.BaudRate = 4; // Устанавливаем стабильную скорость 19200 bps (код 4)
ОбъектДрайвера.Timeout = 1000; // Увеличиваем таймаут ожидания ответа до 1000 мс
// Попытка установить связь с устройством
РезультатСвязи = ОбъектДрайвера.Connect();
Если РезультатСвязи = 0 Тогда
Сообщить("Связь с АСПД Штрих-М успешно установлена на скорости 19200 bps!");
// Здесь можно выполнять чтение параметров или печать отчетов
ОбъектДрайвера.Disconnect(); // Обязательно освобождаем порт после работы
Иначе
Сообщить("Ошибка подключения к ККТ: " + ОбъектДрайвера.ResultCodeDescription);
КонецЕсли;
Применение описанных в данной статье комплексных мер — от контроля версий системных драйверов FTDI/Prolific до тонкой настройки скоростей интерфейса ККТ и таймаутов в 1С — гарантирует бесперебойную и быструю работу оборудования «Штрих-М» в операционной системе Windows 10.