При подключении торгового оборудования к 1С часто возникает ситуация, когда цифры (цена, сумма, количество) отображаются корректно, а вместо наименований товаров или приветственных сообщений на экране появляются непонятные символы — так называемые «кракозябры». Эта проблема особенно актуальна для дисплеев покупателя, работающих через интерфейс RS-232 (COM-порт). Давайте подробно разберем причины этой неисправности и способы ее устранения, начиная от аппаратной настройки и заканчивая программными командами.
Для начала проанализируем ситуацию: если цифры выводятся правильно, значит, физическое соединение между компьютером и дисплеем установлено верно, и скорость передачи данных (Baud Rate) совпадает. Проблема заключается в интерпретации кодов символов. Дисплей получает от 1С числовой код буквы, но ищет его не в той таблице символов или использует неверный протокол управления (эмуляцию).
Рассмотрим основные шаги по приведению дисплея в рабочее состояние.
Большинство профессиональных дисплеев покупателя (например, модели Posiflex, Partner Tech или Birch) имеют на нижней или задней панели блок маленьких переключателей, называемых DIP-переключателями или «штырьками». Именно они определяют внутренний режим работы устройства еще до того, как оно получит данные от программы.
Разберем типичную конфигурацию для блока из 8 переключателей:
Важный нюанс: После изменения положения переключателей устройство необходимо обязательно перезагрузить (выключить и включить питание), чтобы новые настройки вступили в силу.
Даже если мы выбрали правильный режим эмуляции, дисплей должен понимать, какую именно таблицу символов использовать для отображения букв. Проанализируем программную сторону вопроса. Текст из 1С может приходить в разных кодировках:
Если в настройках драйвера 1С (например, «АТОЛ: Драйвер устройств ввода» или «Штрих-М») есть параметр Кодовая таблица или CharSet, попробуем изменить его значение. Для большинства моделей, поддерживающих кириллицу, актуальны значения 17 или 19. Эти индексы соответствуют русской кодовой странице в прошивке устройства.
Иногда аппаратных переключателей недостаточно, и дисплею нужно «объяснить» программно, что мы будем присылать русский текст. Рассмотрим, как это сделать через инициализацию устройства. Мы можем отправить специальную последовательность команд (Control Sequences) прямо в порт.
Для протокола Epson типичная команда выбора таблицы символов выглядит как ESC t n. Посмотрим на пример в HEX-формате:
// Команда переключения на кодовую страницу 866 (кириллица)
// 1B (ESC) + 74 (t) + 07 (номер страницы)
// В некоторых моделях номер страницы может быть другим (например, 08 или 11)
В современных конфигурациях 1С (например, на базе БПО — Библиотеки подключаемого оборудования) эти параметры задаются в окне настройки оборудования. Если мы используем стандартный драйвер 1C:Дисплей покупателя, необходимо проверить в настройках поле «Модель». Выбор модели Generic / Текстовый дисплей часто помогает избежать проблем со спецсимволами, так как в этом режиме драйвер не пытается управлять шрифтами, а передает «чистый» текст.
Выясним еще одну возможную причину — нестабильное питание. Если цифры выводятся четко, а текст превращается в случайный набор символов, который меняется при каждом обновлении экрана, это может указывать на просадки напряжения. Дисплеи покупателя потребляют значительный ток для работы подсветки и отрисовки сегментов.
Если дисплей подключен через переходник USB-to-RS232, напряжения от порта может быть недостаточно. Проанализируем ситуацию: рекомендуется использовать штатный внешний блок питания на 12V. Также стоит проверить настройки COM-порта в диспетчере устройств Windows: параметры Data bits: 8, Stop bits: 1, Parity: None должны строго соответствовать настройкам в 1С.
Чтобы окончательно убедиться, поддерживает ли ваше устройство кириллицу, запустим режим самотестирования. Обычно это делается удержанием кнопки (если она есть) при включении питания или специфическим положением DIP-переключателей (см. документацию конкретной модели).
В режиме теста дисплей выведет на экран свою версию прошивки и все доступные символы. Если в распечатке или на экране среди символов нет русских букв, значит, данная модель не имеет кириллического шрифта в ПЗУ, и решить проблему программно не получится — потребуется замена устройства на локализованное.
Подведем итог: для исправления «непонятного шрифта» в первую очередь переведите DIP-переключатели в режим EPSON MODE (штырьки 4 и 5 вверх), затем в настройках драйвера 1С выберите кодовую страницу, соответствующую кириллице (обычно 17 или 19 для CP866), и убедитесь в стабильности питания устройства.