Дисплей покупателя cd5220 настройка

Обновлено: 06.07.2024

Друзья и не очень! Вы, наверное, не раз наблюдали на кассах в магазинах такие симпатичные зелёные экранчики, на которых вы видели сумму своей покупки и прочую полезную информацию. А вы не думали о том, что такой экранчик от сломанного аппарата вполне можно попытаться приспособить для домашних нужд? А если, например, подключить это к компьютеру, дабы оно выводило какую-нибудь полезную информацию? Вот этим мы сейчас и займёмся.

Оговорюсь сразу: не стоит бежать и ломать первый попавшийся кассовый аппарат, не прочитав всего текста. Пост написан, прежде всего, для людей, которым случайно попался именно вот такой дисплейный модуль, как у меня, и они не знают, что с этим модулем делать. Дело в том, что, во-первых, этот конкретный модуль отличается "немного нестандартной" системой команд, а во-вторых, по сей день слишком мало на свете софта, предназначенного для таких дисплеев.

Итак. Те, кому это не интересно, проходят мимо, а остальных прошу под кат.

читать дальше
Итак, попался в мои лапы некий суровый чугуниевый POS-терминал отечественного производства, который называется "Штрих-М". Неисправный. После нескольких безуспешных попыток оживить девайс целиком, я начал засматриваться на довольно большой двухстрочный зелёный VFD-дисплей на нём. Как выяснилось, этот дисплей называется "дисплеем покупателя" и тем же "Штрихом" встраивается в POS и продается отдельно.

После расковыривания агрегата и изучения модуля выяснилось следующее. Это тайваньский VFD модуль компании Flytech с подключением по RS-232 интерфейсу (COM-порт) и полем 2x20 символов. На самой плате распаян разъём 10P10C, на который подводится и питание модуля, и интерфейсные линии. Паниковать не стоит, туда прекрасно влезает обычный 8P8C разъём (RJ-45) и отлично работает. Но об этом чуть ниже.

Вот фотография раскуроченного POS с первыми попытками достучаться до дисплея.


Хочу выразить признательность производителю сурового агрегата "Штрих-М" за то, что на их сайте выложена документация по протоколу обмена для этого модуля и драйвер с утилитой тестирования. Драйвер нам не нужен будет, а вот утилита проверки дисплея пригодится.


Итак, что надо сделать, чтобы VFD начала работать отдельно от терминала?
Во-первых, найти COM-порт. Во-вторых, найти разъём или кабель DB9F, чтобы подключить дисплей к ком-порту.

Скачиваем мануал к дисплею, ссылку на который я давал выше, и видим, что нам от ком-порта нужны только три провода: GND, TxD и DSR.


Будьте внимательны: на разъёме 10P10C, который распаян на плате, крайние два контакта (по одному с каждой стороны) не используются, но нумеруются в мануале.


Схема подключения, как на скане выше. Третий контакт разъёма 10P10C подключаем к третьему контакту ком-порта, 4 контакт разъёма 10P10C подключаем к 5 контакту ком-порта, 6 или 7 контакт разъёма 10P10C подключаем к 5 контакту ком-порта, оставшийся из них подключаем к -12В питания, 8 или 9 контакт разъёма 10P10C подключаем к +12 В питания. На стороне компьютера надо еще дополнительно замкнуть 7 и 8 контакты ком-порта для возврата синхросигнала, в противном случае можно получить подвисший софт. Остальные "ноги" не используются.


Подключаем получившееся чудо к порту, подаем питание и запускаем программку "Тест драйвера дисплея покупателя" из комплекта драйверов, ссылку на который я опять же давал выше (вы же скачали его, правда?). Нажимаем там кнопку "Визуальная настройка", выставляем номер порта, скорость 9600 бод, 8N1, протокол Firinch, длину строки 20 и 2 строки, и жмём "Тест". В случае успеха вы увидите вот такую картину:



Если текст вывелся - значит, все ОК, и можно идти дальше. Если нет - проверяем правильность соединений, настройки утилиты и положение переключателей на плате VFD. Переключатели эти можно просто переключить все восемь штук в положение ON (в сторону платы). В таком варианте работать оно будет (это дефолтные настройки: скорость 9600, кодовая страница US English, протокол обмена Firinch\CD5220). В мануале к дисплею есть таблицы положений переключателей, если потребуется эти самые настройки поменять.

Можно ещё послать текст на VFD через HyperTerminal или другую программу для работы с последовательным портом. Например, текст "Hello World!" на снимке ниже был подан на дисплей именно через "Гипертерминал". Служебные команды тоже можно посылать "вручную". Например, для очистки экрана можно послать последовательность ESC @ (жмём кнопку Эскейп и следом вводим "собаку"). Это команда инициализации экрана. В мануале к дисплею прописаны все управляющие последовательности, некоторые из которых нам пригодятся позже.


Если текст выводится и вообще дисплей работает, можно, эстетики ради, выкинуть лишнюю интерфейсную плату и подключить кабель от ком-порта и кабель питания напрямую к плате дисплея. Если вы, разумеется, сразу так не сделали. Берем обычный RJ-45 разъём (8P8C) и вставляем в него наши кабели. В точно том же порядке, как припаивали к плате. Не забываем, что у 8P8C на два контакта меньше, поэтому контакт №2 на плате (TxD) становится контактом №1 в RJ-45.


После обжимки RJ-45 и подключения к плате дисплея мы получаем функционально законченное устройство без лишнего хлама.


Коричневая конструкция, видимая слева от интерфейсного разъема, является 3-контактным разъемом от дохлого процессорного кулера, в котором замкнуты крайние контакты. Раньше там сидел выключатель питания дисплея.


Теперь, эту конструкцию неплохо было бы проверить на работоспособность. Выводим что-нибудь на дисплей, и если оно не выводится - внимательно проверяем правильность обжимки.





Теперь дело за программным обеспечением. Дело в том, что и так маловато софта, который способен выводить какую-нибудь полезную информацию на LCD или VFD дисплей. Плюс к этому, при попытках приспособить подобный софт сказывалась, в первую очередь, нестандартая система команд именно этого дисплея. Например, часто используемая таким софтом команда очистки дисплея, у этой платы кодируется символом 12 ASCII (FF), или 0x0C в шестнадцатеричной системе, тогда как софт лепит в порт команду 21 (NAK), она же 0x15, которую девайс успешно игнорирует. Сочетание различий в этой и других командах приводит к некорректной работе девайса: текст, хоть и выводится сам по себе корректно, начинает плавать в разные стороны, дисплей периодически начинает показывать полную чушь, или даже совсем отключиться.

Как пример, команда перевода курсора в начало строки, выдавленная в порт каким-нибудь плагином WinAmp, напрочь игнорируется, и начало второй строки получается там, где закончилась первая. Выглядит это всё забавно, но нечитабельно - учитывая то, что тот текст, которому не хватило места в этой самой второй строке, автоматически переносится дисплеем на первую строку, затирая часть уже существующей там информации.


К сожалению, подавляющее количество подобного ПО имеет в своем составе несколько предустановок для разных дисплеев (среди которых, конечно же, нет нашего) и поменять несколько команд в каком-либо из этих предустановок на правильные не представляется возможным, поскольку предустановки лежат в виде библиотек. Можно, конечно, взять и написать библиотеку самому, взяв за основу API программы или примеры для программирования, выложенные на официальном сайте, но это не ко мне - я не программист.

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

Первой, и пока единственной программой с такой возможностью, которую я нашёл, был MediaPortal - оболочка для мультимедиа-центров и прочих домашних кинотеатров на базе ПК. В комплекте с программой идёт плагин Mini Display, который поддерживает команды для целой кучи дисплеев.


А самое главное, что среди этой кучи была обнаружена предустановка под названием Generic Serial Character VFD/LCD driver, позволяющая всписать в несколько полей нужные командные последовательности символов!


Итак, ставим MediaPortal. Язык выбираем английский! Или потом меняем в настройках на английский. После установки в настройках программы (выполненных в виде отдельной программы MediaPortal Configuration) включаем плагин MiniDisplay. Затем кнопка Config переносит нас в настройки самого плагина , где мы выбираем порт, количество столбцов и строк символов на дисплее, а кнопка Advanced переносит нас ещё глубже - к установкам скорости порта и назначаемым командным последовательностям.


В соответствии с мануалом к дисплею, заносим в поля соответствующие последовательности. Обращаю ваше внимание, что плагин требует записи последовательностей в шестнадцатеричных числах, в виде 0x00, разделённых пробелами (если конкретная команда состоит из нескольких символов. Так, например, команду смещения курсора вправо, по мануалу определяемая символом Ht (09 в шестнадцатеричной форме), в соответствующее поле плагина надо записыать как 0x09, а команда инициализации дисплея Esc @ (она же 1B 40) превращается в 0x1B 0x40.

Заполнив поля согласно мануалу или моим скриншотам, можно закрывать конфигуратор и запускать сам Медиапортал. После загрузки оболочки, в случае корректно выставленных настроек и управляющих последовательностей, на экране должно высветиться вот это:


Затем можно погулять по пунктам меню. Каждое действие в Медиапортале - перемещение по меню, входы и выходы по иерархии меню, запуск и остановка воспроизведения медиафайлов - должно отображаться на дисплее.


Единственный момент, который я пока не победил. По причине отсутствия мозгов или тому виной банальная лень - не знаю. Дисплей, доставшийся мне на растерзание и программа MediaPortal поддерживают разные кодировки русского языка. Именно поэтому я говорил про английский язык чуть раньше. Дисплей требует кодировку CP866 для русского языка, в настройках же Медиапортала я не нашёл пункта, отвечающего за кодировку посылаемого на мини дисплей текста.


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

Читайте также: