2010-03-01 3 views
0

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

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

любая другая идея?

ответ

2

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

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

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

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

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

+0

спасибо за подробное объяснение. Я не уверен, насколько размер программы будет увеличиваться при встраивании веб-сервера или добавлении пакета, но я дам эту попытку. – 2010-03-02 01:10:51

0

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

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

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

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

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

+0

спасибо. я буду больше смотреть в JSON. решение, которое вы предложили, - это то, что мне нужно. – 2010-03-02 01:12:41

1

В итоге я использовал Wt, хотя обновлял для справок в будущем.

+0

Вы OP, это другая учетная запись? – jzd

Смежные вопросы