У корневых окон Tkinter есть метод, называемый after
, который можно использовать для планирования функции, которая будет вызываться через определенный период времени. Если сама эта функция вызывает after
, вы настроили автоматически повторяющееся событие.
Вот рабочий пример:
# for python 3.x use 'tkinter' rather than 'Tkinter'
import Tkinter as tk
import time
class App():
def __init__(self):
self.root = tk.Tk()
self.label = tk.Label(text="")
self.label.pack()
self.update_clock()
self.root.mainloop()
def update_clock(self):
now = time.strftime("%H:%M:%S")
self.label.configure(text=now)
self.root.after(1000, self.update_clock)
app=App()
Имейте в виду, что after
не гарантирует, что функция будет работать точно вовремя. Только расписал задание, которое должно выполняться через определенное количество времени. Это приложение занято, может быть задержка до того, как он будет вызван, поскольку Tkinter является однопоточным. Задержка обычно измеряется в микросекундах.
Вы обновляете данные одновременно, возвращая все три значения в одном запросе.
Это был бы способ сделать это с любым веб-сервером, не говоря уже о том, чтобы работать на чрезвычайно ограниченном процессоре, таком как ESP8266.
Вы можете вернуть все три значения одновременно с помощью кода, который выглядит примерно так:
void handleAll() {
String results_json = "{ \"temperature\": " + String(temp) + ",", +
"\"high\": " + String(hoechst) + "," +
"\"low\": " + String(tiefst) + " }";
server.send(200, "application/json", results_json);
}
Это составляет объект JSON со всеми тремя значениями в нем. JSON - это «объектная нотация JavaScript», и Javascript очень легко собрать и разобрать.
Вам также необходимо обновить код веб-сервера ESP8266, чтобы добавить
server.on("/readAll", handleAll);
С помощью этого изменения вы можете исключить остальные три обработчика / read.
И вам нужно обновить ваш Javascript. Вам просто нужно сделать один вызов в Javascript, преобразовать возвращаемый текст в объект Javascript и прочитать каждое из трех значений из него, чтобы установить элементы в DOM. Это то, что jQuery может сделать так тривиально для вас.
И это 'text/plain'
, а не 'text/plane'
.
Вы также можете проверить jQuery - это значительно упростит ваш код Javascript.
Проще говоря: вы не можете обновлять данные одновременно, потому что есть только одно ядро ЦП. Кроме того, вы должны проектировать с учетом экономии, вам нужно иметь три транзакции, чтобы получить несколько чисел ... Одна из самых простых форм базы данных - это CSV, или «значения, разделенные запятыми»; по существу: значения, разделенные запятыми.
Зная порядок, в котором ваши температуры будут находиться в списке (низкий, текущий, высокий), вы можете просто создать новую переменную или объединить свои переменные в операторе, который выводит данные, это низкий "," текущий " , "high, и это вернет вам что-то вроде -1.23455,23.53556,37.23432, которое вы можете легко разделить на три, посмотрев запятые и используя строковые операторы.
Теперь вы можете получить свои три значения из одной транзакции с устройства с низкой спецификацией!
Удачи! :)