2015-01-25 4 views
2

Я новичок в разработке python. У меня есть программа для управления некоторыми датчиками (I/O), которые работают в цикле While True:.HTML-интерфейс для программы python, запущенной в цикле

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

Мне не нравится, как я могу взаимодействовать между сценарием python, который прослушивает веб-запросы и мою программу python. Должен ли я создавать веб-прослушиватель в качестве потока, запущенного моей основной программой? Использование каких-то глобальных переменных?

ответ

1

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

Вот основной Python bottle программа, которую вы можете использовать для ваших целей:

 from bottle import route, run 

     @route('/') 
     def hello(): 
      #using jquery 
      return """<script> poll get_temp with JavaScript here</script><div id="temp">temp will update here</div>""" 

     @route('/get_temp') 
     def getTemp(): 
      temp = readDataBaseForTemp() 
      return temp 

     run(host='localhost', port=8080, debug=True) 

при запуске этой программы вы можете использовать браузер, чтобы взаимодействовать с ним на http://localhost:8080/ < --- это вызовет JavaScript, что будет опросить сервер за темп. Очевидно, что это не полно, но это общая идея.

Идея здесь в том, что JavaScript просто делает звонок на веб-сервер Python (используя URL http://localhost:8080/get_temp), который запускает ваш скрипт myTemperatureControl Python. Когда ваш скрипт выполнил и вернет значение температуры, он затем отправит данные обратно на JavaScript, который попросил его, чтобы веб-страница могла быть соответствующим образом обновлена.

Что касается вашего скрипта myTemperatureControl.py, вы можете отправить вывод показаний температуры в общее место, которое будет доступно для веб-сервера. Как правило, для этой цели у вас будет настройка базы данных.

while True: 
    if temperature > 30: 
     output = 1 
    else: 
     output = 0 
    #update database or file with output 
+0

Спасибо, ваш пример ясен, но более или менее то, что я уже видел. Но ... сейчас очень важно сделать следующий шаг :-) Я имею в виду, что мой сценарий, где я обрабатываю датчик, уже работает, я должен запускать много строк кода. Просто, чтобы это было ясно: представьте себе, что у меня есть когда проверка температуры повышается, когда температура превышает порог. Я хотел бы видеть на моей веб-странице статус выхода и температуру. Если я вызываю скрипт ТОЛЬКО при открытии веб-страницы, вывод не контролируется каждый раз. Программа должна запускаться отдельно. Надеюсь, это ясно. –

+0

Что вам нужно, просто. Настройте сервер бутылок для обслуживания браузера веб-страницы, которая имеет простую функцию JavaScript, которая вызывает сервер, чтобы проверять температуру каждый так часто и сообщать об обновлениях на веб-странице. Ваш веб-просмотр должен только открыть веб-страницу один раз, а JavaScript сделает все остальное. –

+0

Хорошо, но, как javascript может получить доступ к переменной python, это мой вопрос. Не проблема, как показать значение на экране, проблема в том, как я могу получить температуру. Например: внутри 'getTemp()' выше есть 'yourPythonScript()', но переменная обрабатывается внутри другой запущенной программы, такой как 'myTemperatureControl.py' ... так как я могу? –

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