Показаны различия между двумя версиями страницы.
| Следующая версия | Предыдущая версия | ||
| products:laboratory_iot:exp61 [2020/06/18 19:03] – создано labuser29 | products:laboratory_iot:exp61 [2024/12/06 16:33] (текущий) – labuser30 | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| - | ===== Эксперимент 61. Подмена данных в веб- странице ===== | + | ===== Эксперимент 61. Подмена данных в веб-странице ===== |
| + | |||
| + | В прошлом эксперименте мы научились создавать простые веб-страницы с формой для отправки данных на сервер. На странице было текстовое поле, в которое можно было ввести значение от 0 до 1023. После ввода числа и нажатия на кнопку Send происходила отправка данных из формы на сервер. Сервер принимал эти данные, | ||
| + | |||
| + | Все хорошо, | ||
| + | |||
| + | Чтобы это сделать нам необходимо заменять данные в веб странице. Изначально мы прописали в ней жестко | ||
| + | |||
| + | <code html> | ||
| + | <input type=" | ||
| + | </ | ||
| + | |||
| + | Теперь нам нужно подумать как вместо 512 выводить каждый раз другое значение, | ||
| + | |||
| + | <file html page2.html[enable_line_numbers=" | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | <form action="/"> | ||
| + | <input type=" | ||
| + | <input type=" | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <WRAP center round important 60%> | ||
| + | Сохрани эту страницу в корне файловой системы микроконтроллера под именем page2.html | ||
| + | </ | ||
| + | |||
| + | Как видно, мы заменили жестко прописанное число 512 на метку ''< | ||
| + | |||
| + | Теперь новый код программы: | ||
| + | <file python Exp61.py[enable_line_numbers=" | ||
| + | from micropyserver import MicroPyServer | ||
| + | import time | ||
| + | from machine import Pin, PWM | ||
| + | import network | ||
| + | import gc | ||
| + | _init() | ||
| + | gc.collect() | ||
| + | |||
| + | Led = Pin(13, Pin.OUT) | ||
| + | pwmLed = PWM(Led) | ||
| + | |||
| + | wlan_id = " | ||
| + | wlan_pass = " | ||
| + | |||
| + | wlan = network.WLAN(network.STA_IF) | ||
| + | wlan.active(True) | ||
| + | wlan.connect(wlan_id, | ||
| + | time.sleep(1) | ||
| + | |||
| + | while wlan.isconnected() == False: | ||
| + | pass | ||
| + | |||
| + | print(' | ||
| + | |||
| + | |||
| + | def index(request, | ||
| + | duty = ' | ||
| + | if (' | ||
| + | duty = params[' | ||
| + | pwmLed.duty(int(duty)) | ||
| + | |||
| + | |||
| + | html_file = open(" | ||
| + | html = html_file.read() | ||
| + | |||
| + | html = html.replace('< | ||
| + | |||
| + | html_file.close() | ||
| + | server.send(html, | ||
| + | |||
| + | |||
| + | server = MicroPyServer() | ||
| + | server.add_route("/", | ||
| + | server.start() | ||
| + | </ | ||
| + | |||
| + | <WRAP center round important 60%> | ||
| + | Первым делом в коде программы нужно заменить '' | ||
| + | </ | ||
| + | |||
| + | По сравнению с кодом прошлого эксперимента появилась одна строка | ||
| + | <code python[enable_line_numbers=" | ||
| + | html = html.replace('< | ||
| + | </ | ||
| + | |||
| + | Для замены метки на данные мы применили оператор '' | ||