GUI на основе веб-браузера - PullRequest
0 голосов
/ 01 марта 2010

Я работаю над приложением в Linux, которое будет взаимодействовать с оборудованием. Одним из требований является создание GUI в веб-браузере. Приложение будет основано на C ++. Я не знаком с вещами, реализованными в Интернете, поэтому я хочу знать, возможно ли это сделать (в настоящее время это консольное приложение, получающее данные из строки txt file / cmd) GUI будет просто с помощью кнопки и показывает выходные сообщения в браузере из приложения. Я хочу знать, какие технологии / языки задействованы и как это можно сделать. некоторые идеи, которые я прочитал, но еще не нашли ничего конкретного. если у вас есть идеи по этому поводу или лучше предложение, пожалуйста, поделитесь

  • запустить приложение в фоновом режиме и связаться с браузером?
  • вызывать функции библиотеки напрямую из браузера?

есть еще идеи?

Ответы [ 3 ]

2 голосов
/ 01 марта 2010

Я бы начал с настройки обычного HTTP-сервера, такого как lighttp или Apache httpd.

Вы говорите, что у вас уже есть программа командной строки, которая выполняет реальную работу - в качестве первого шага я бы использовал это повторно и настроил бы веб-сервер для вызова вашей программы с использованием CGI - см. Пример http://httpd.apache.org/docs/2.2/howto/cgi.html для apache

Наконец, я бы выбрал некоторые javascript-фреймворки, такие как jQuery или YUI с возможностями Ajax, чтобы отправлять запросы на сервер для вызова скрипта CGI из веб-страницы. Вы также можете создать веб-приложение на основе форм без ajax или какой-либо среды, но это потребует от вас добавления в программу всех видов логики для генерации HTML-страниц. Используя Ajax, вы можете оставить приложение командной строки как есть и проанализировать любые ответы, которые оно дает, с помощью javascript, а затем использовать его для динамического изменения веб-страницы таким образом, чтобы это имело смысл для пользователя.

Если все это работает, то я бы попытался выяснить, как упаковать все эти компоненты. Возможно, вы просто хотите создать простой архив со всеми программами внутри, или, возможно, вы захотите пойти так далеко, как встроить веб-сервер в вашу программу. В качестве альтернативы вы можете захотеть сделать это наоборот и переписать вашу программу как модуль ISAPI, который вы можете подключить к своему веб-серверу. Или, если он недостаточно интегрирован, вы можете написать свой собственный (частичный) HTTP-сервер. Это действительно ваше дело (я бы, наверное, потратил время и силы на поиск самого скудного, самого подлого существующего http-сервера с открытым исходным кодом и использовал бы его вместо этого)

В любом случае, предыдущие шаги не будут потеряны в работе. Скорее всего, разработка веб-страницы будет составлять существенную часть работы, поэтому я бы, вероятно, создал бы быстрое и грязное рабочее решение, сначала используя старый трюк CGI, а затем разработал веб-страницу к моему удовлетворению. На этом этапе вы уже можете получить приемлемое распространяемое решение, просто поместив все программы в один архив (конечно, вам также придется настроить конфигурацию веб-сервера, например, изменить порт по умолчанию, чтобы он не мешал существующим веб-серверам). Только после этого я бы потратил время на создание более интегрированного и причудливого решения.

1 голос
/ 07 января 2011

Я закончил с использованием Wt, хотя я бы обновил для дальнейшего использования.

0 голосов
/ 01 марта 2010

Вот как я думал об этом, в порядке сложности для меня :

  1. Создание простого веб-сайта на языке сервера (PHP / Python), который может взаимодействовать (т.е. запускать и обрабатывать возврат) вашего приложения

  2. Измените ваше приложение, чтобы оно имело встроенный веб-сервер, который просто выводил HTML (параметры командной строки, полученные через URL)

  3. Измените приложение для публикации JSON и используйте javascript на простой HTML-странице, чтобы вставить его.

Вы могли бы написать Java-апплет (как вы отметили эту ветку), но Я думаю, что вы теряете время. Это может быть довольно просто, если вы готовы потратить 10 минут на поиск нескольких простых команд.

...