четверг, 14 апреля 2011 г.

Создание клиентского интерактивного терминала на базе Ubuntu Linux

Нам всем хоть раз в жизни доводилось пользоваться интерактивными платежными терминалами. Обычно, они представляют собой стенд с купюроприемником, лотком для выдачи чеков и, самое главное, сенсорным монитором. Помимо терминалов оплаты существует множество  вариаций комплектации такого оборудования: информационные киоски (вы были в музеях? если да, то вам доводилось видеть информационные терминалы в углах залов), лотерейное оборудование, игровые автоматы, информационные жидкокристаллические панели в залах ожидания аэропортов, вокзалов и пр.
Большая часть такого оборудования работает под управлением MS Windows. Т.е. это обычный компьютер с Windows XP и запущенным на весь экран приложением или браузером. И если терминалы оплаты для нас представляют небольшой интерес, т.к. для их создания помимо программной начинки нужны еще и специфичные аппаратные ресурсы (купюроприемник, да и корпус, тоже нужно изготовить), то сделать информационную панель своими руками может каждый желающий. Более того, такого рода решения очень востребованы на сегодняшний день.
Как сказал в свое время Брежнев: “Экономика должна быть экономной”. Вот и я считаю, что переплачивать за операционную систему на машине, к которой не притронется ни одна человеческая рука, как минимум, неразумно. Строить наше детище мы будем на Ubuntu Linux. Развертка данного рода систем делается на три счета. Приступим!
Раз! На этом этапе нам надо найти системный блок, ЖК (или плазменную) панель, соединить все воедино и водрузить на эту конструкцию Ubuntu Server без GUI. Думаю, описывать подробности не нужно - все и так предельно просто. Главное, не забудьте включить в BIOS компьютера автоматическое включение после пропадания электропитания.
Два! Логично, что наша система должна быть полностью автономной: загружаться сама, и так же самостоятельно запускать все необходимые приложения (в нашем случае мы будем использовать браузер). Перво-наперво, настроим запуск графического интерфейса. Сделаем это с расчетом на минимальные требования к аппаратным ресурсам, поэтому, никаких Gnome’ов, а уж тем более KDE. OpenBox - вот наше все! Выполняем в консоли:
apt-get install openbox xinit x11-xserver-utils firefox
Firefox нам понадобиться на следующем этапе. А пока заставим GUI стартовать сразу при загрузке машины, для этого в файл rc.local добавляем следующую строку:
su -l root -c "startx &" &
На этом же этапе настроим автозапуск firefox. Создаем файл /root/.config/openbox/autostart.sh и записываем туда строку:
(sleep 5 && /usr/bin/firefox &) &
Sleep нужен для того, чтобы успел загрузиться оконный менаджер.
Три! Система автоматически загружается, браузер стартует, теперь следует заняться его настройкой. Во-первых, он должен разворачиваться на весь экран и показывать лишь саму веб-страницу, не отображая всевозможных панелек. Для этих целей воспользуемся плагином “Full Fullscreen”. Во-вторых, после сбоев электропитания мы должны видеть нужную страницу, а не предложение восстановить предыдущую сессию. Набираем в строке браузера about:config, соглашаемся с тем, что мы не объявим джихад браузеру и меняем значение параметра "browser.sessionstore.resume_from_crash" на “false”.
Поздравляю! Вы только что создали свой собственный информационный терминал, который будет работать счастливо, но не долго, а если быть точным - 15 минут. После истечения этого времени, он уйдет в спячку. Для того, чтобы предотвратить сон, добавим в rc.local следующие строки:
setterm -powersave off -blank 0xset s offxset -dpms
Вот и все! Задайте информационный источник в качестве домашней страницы у браузера и можете наслаждаться результатом своих трудов!


«Данный материал написан для «Первого конкурса русскоязычных статей для ОС Ubuntu 2011 года» (konkurs.ubuntu.ru)».

6 комментариев:

DeMitius комментирует...

Эта сторона настройки терминала как раз-таки наиболее унифицирована и понятна. Для меня до сих пор остаётся загадкой управление. Либо это хардварные кнопки по бокам (тогда как ставить соответствие их с обычной клавой?), либо сенсор (тут вообще космос - либо это такие дорогущие сенсорные мониторы, либо это какие-то накладки на обычный LCD). Вот тут, если можно, подробнее.

Maxim Gurkin комментирует...

В терминалах оплаты все довольно просто: существует две разновидности, как вы правильно заметили, одна механическая (с кнопками), другая сенсорная. В первом случае, действительно, программируемые клавиши. Во втором случае экран не LCD, а TFT.

Maxim Gurkin комментирует...

В терминалах оплаты все довольно просто: существует две разновидности, как вы правильно заметили, одна механическая (с кнопками), другая сенсорная. В первом случае, действительно, программируемые клавиши. Во втором случае экран не LCD, а TFT.

DeMitius комментирует...

А как механические кнопки-то программируются? И где можно посмотреть/почитать о сенсорных TFT?

Clafferi комментирует...

Автору респект, очень помог!
Только у меня возникла проблема с уходом в сон, при любых раскладах не срабатывал setterm -powersave off -blank 0xset s offxset -dpms
Проблему решил добавив в /root/.config/openbox/autostart.sh строку:
(sleep 30 && xset s off && xset dpms 0 0 0 &) &

Maxim Gurkin комментирует...

Рад, что статья была полезной :-)

Отправить комментарий