2015-05-09 2 views
2

У меня встроенная плата, в которой работает приложение Qt (разработанное мной, у меня есть исходный код), это приложение всегда активно и у него нет графического интерфейса (нет отображения!), Я бы хотел добавить веб-страницу, которая работает как монитор (показать некоторые простые значения) и разрешить настройку некоторых параметров для приложения ... Первой целью будет простая веб-страница, позволяющая установить переменную в приложении и показать статус другой переменной в «реальном времени».Добавить веб-интерфейс во встроенное приложение QT

Плата является ARM, работает Linux и веб-сервер доступен, я уже использовал успешно CGI и PHP ...

Как я могу общаться между веб-части и процесс применения? Я могу использовать cgi для вызова другого приложения, которое связывается с основным приложением с помощью сокета, но я думаю, что есть лучшие решения ...

просмотр в Интернете Я думаю, что ключевые слова Json-Ajax-JQuery, но я не знаю найдите какой-нибудь пример, полезный для моего случая.

Спасибо за любую посоветуйте и/или, например

+0

Если ваши потребности не слишком сложны, вы можете написать простой HTTP-сервер поверх QTcpServer. Вот один из примеров: http://doc.qt.digia.com/solutions/4/qtservice/qtservice-example-server.html – MrEricSir

+0

Как говорит @MrEricSir, вы должны быть заинтересованы в добавлении своего http-сервера с помощью https: // github .com/azadkuh/qhttp и процесс в вашем приложении. – AlexandreP

+0

Спасибо за ответы, на прошлой неделе я играл с различными технологиями, и я еще не решил, я бы предпочел избежать внедрения http-сервера в моем приложении, чтобы обеспечить большую гибкость, это только первая демонстрация, но это будет стандарт для разных применений; на данный момент я думаю, что лучшим решением будет использование веб-сокетов, которые взаимодействуют с веб-сервером в «стандартном» режиме, я видел, что можно использовать их со всеми важными веб-языками ... – Nadir

ответ

0

Связь между веб стороной и Qt стороны могут быть реализованы с помощью QTcpSocket (в дополнение к HTTP встроенного серверного решения). Рамка Node.js позволяет это.

Существует пример сервера JavaScript TCP и реализацию сокетов с Node.js

TCP socket programming in node.js

Вы также можете быть заинтересованы в чтении ответов на How to get sensor data over TCP/IP in nodejs?

+0

Спасибо, t знаю nodejs, и в эти дни я играю с этим, я добавил QWebSocket в свое приложение, которое общается с простым скриптом для nodeJS, который управляет соединениями с клиентами, он хорошо работает на моем ПК, проблема в том, что порт nodeJS на моем устройстве (и компилировать плагины также) - не простая задача, на данный момент я думал: может ли веб-страница клиента взаимодействовать непосредственно с моим приложением в javascript? – Nadir

0

У вас есть много различных вариантов для обработки этого, и то, как вы это делаете, зависит в основном от того, что вы чувствуете себя уверенным в этом. Некоторые из альтернатив:

  1. Создать веб-сервер в пределах вашего собственного приложения, которое прослушивает порт 80 и обрабатывает все коммуникации HTTP с клиентами:

    а) WebServers сложные животные, которые не легко осуществить. Начните с примера (http://doc.qt.digia.com/solutions/4/qtservice/qtservice-example-server.html) и внесите изменения в соответствии с вашими потребностями. Если вы ничего не делаете, это было бы легко выполнить.

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

    c) Это упрощает ваши зависимости, только один демон/приложение запускается, а на встроенную платформу не устанавливается другое программное обеспечение, поэтому проще установить.

  2. Запустите полномасштабный веб-сервер (apache, nginx, lightty и т. Д.) И любой серверный код, который вам нужен для поддержки вашего использования (php, cgi, perl, python и т. Д.).

    a) Вам не придется слишком беспокоиться о технических деталях сетевого программирования и способах реализации протокола HTTP. Это особенно ценно, если у вас нет большого опыта сетевого программирования.

    b) Вы можете создавать специальные ключи командной строки в своем приложении, чтобы сценарий на стороне сервера мог вызвать вашу программу и проанализировать вывод, чтобы получить его данные. Вы также можете использовать файл FIFO, который записывается вашим приложением и читается скриптом на стороне сервера (см. mkfifo).

    c) Установка будет намного сложнее, с другой частью программного обеспечения, которая должна быть установлена ​​(веб-сервер) и настроена правильно. Масштабы этой проблемы зависят от того, как вы собираетесь развертывать свое программное обеспечение, если оно предназначено только для вашего собственного использования или для клиентов и т. Д.

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