Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
products:laboratory_iot_c:exp61 [2024/12/06 16:14] – создано labuser30products:laboratory_iot_c:exp61 [2024/12/06 21:55] (текущий) labuser30
Строка 20: Строка 20:
         <h2>Input led duty between 0 and 1023</h2>         <h2>Input led duty between 0 and 1023</h2>
         <form action="/">         <form action="/">
-            <input type="text" name="duty" value="<=VALUE=>">+            <input type="number" name="duty" min="0" max="1023" value="<=VALUE=>">
             <input type="submit" value="Send">             <input type="submit" value="Send">
         </form>         </form>
Строка 27: Строка 27:
 </file> </file>
  
-<WRAP center round important 60%> 
-Сохрани эту страницу в корне файловой системы микроконтроллера под именем page2.html 
-</WRAP> 
  
 Как видно, мы заменили жестко прописанное число 512 на метку ''<=VALUE=>''. Теперь перед выводом этой страницы в браузер нам нужно производить поиск с ее тексте ''<=VALUE=>'' и замену этой метки на реальное число. Как видно, мы заменили жестко прописанное число 512 на метку ''<=VALUE=>''. Теперь перед выводом этой страницы в браузер нам нужно производить поиск с ее тексте ''<=VALUE=>'' и замену этой метки на реальное число.
  
 Теперь новый код программы: Теперь новый код программы:
-<file python Exp61.py[enable_line_numbers="2", start_line_numbers_at="1"]> +<file arduino Exp61.ino[enable_line_numbers="2", start_line_numbers_at="1"]> 
-from micropyserver import MicroPyServer +#include <ESP8266WiFi.h> 
-import time +#include <ESP8266WebServer.h>
-from machine import Pin, PWM +
-import network +
-import gc +
-_init() +
-gc.collect() +
- +
-Led = Pin(13, Pin.OUT) +
-pwmLed = PWM(Led) +
- +
-wlan_id = "Wi-Fi_Name" +
-wlan_pass = "Wi-Fi_Password" +
- +
-wlan = network.WLAN(network.STA_IF) +
-wlan.active(True) +
-wlan.connect(wlan_id, wlan_pass) +
-time.sleep(1) +
- +
-while wlan.isconnected() == False: +
-    pass +
- +
-print('Device IP:', wlan.ifconfig()[0]) +
  
-def index(request, params): +#define WIFI_NAME     "WiFi_Name" 
-    duty = '512' +#define WIFI_PASSWORD "WiFi_Password" 
-    if ('duty' in params): +#define PIN_LED 13 
-        duty = params['duty'+
-        pwmLed.duty(int(duty)) +
-       +
  
-    html_file = open("page2.html"+ESP8266WebServer server(80);
-    html = html_file.read()+
  
-    html html.replace('<=VALUE=>', duty)+void indexPage() { 
 +  int duty 512; 
 +  if (server.hasArg("duty")) duty server.arg("duty").toInt();  
 +  analogWrite(PIN_LED, duty);
  
-    html_file.close() +  String page = "<!DOCTYPE html>"; 
-    server.send(htmlcontent_type="Content-Type: text/html")+  page += "<html>"; 
 +  page += "<head>"; 
 +  page += "</head>"; 
 +  page += "<body>"; 
 +  page += "<h2>Input led duty between 0 and 1023</h2>"; 
 +  page += R"(<form action="/">)"; 
 +  page += R"(<input type="number" name="duty" min="0" max="1023" value="<=VALUE=>">)"; 
 +  page += R"(<input type="submit" value="Send">)"; 
 +  page += "</form>"; 
 +  page += "</body>"; 
 +  page += "</html>"; 
 +   
 +  page.replace("<=VALUE=>", String(duty)); 
 +  server.send(200, "text/html", page);  
 +}
  
 +void setup() {
 +  Serial.begin(9600);
 +  Serial.println();
 +  pinMode(PIN_LED, OUTPUT);
 +  analogWriteRange(1024);
 +  analogWrite(PIN_LED, 0);
 +  
 +  Serial.print("Connecting to WiFi"); 
 +  WiFi.mode(WIFI_STA);                                         
 +  WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
 +  while (WiFi.status() != WL_CONNECTED) {
 +    Serial.print(".");
 +    delay(500);
 +  }
 +  Serial.println();
 +  Serial.println("WiFi connected");
 +  Serial.print("IP address: ");
 +  Serial.println(WiFi.localIP());
  
-server = MicroPyServer() +  server.on("/", indexPage); 
-server.add_route("/", index+  server.begin();  
-server.start()+
 +void loop() { 
 +  server.handleClient();  
 +}
 </file> </file>
  
 <WRAP center round important 60%> <WRAP center round important 60%>
-Первым делом в коде программы нужно заменить ''Wi-Fi_Name'' на имя нужной ести, а ''Wi-Fi_Password'' на пароль от нее.+Первым делом в коде программы нужно заменить ''WiFi_Name'' на имя нужной сети, а ''WiFi_Password'' на пароль от нее.
 </WRAP> </WRAP>
  
 По сравнению с кодом прошлого эксперимента появилась одна строка По сравнению с кодом прошлого эксперимента появилась одна строка
-<code python[enable_line_numbers="2", start_line_numbers_at="36"]> +<code python[enable_line_numbers="2", start_line_numbers_at="28"]> 
-    html = html.replace('<=VALUE=>', duty)+  page.replace("<=VALUE=>"String(duty));
 </code> </code>
  
-Для замены метки на данные мы применили оператор ''replace(что_меняем, на_что_меняем)''. Теперь после отправки данных из формы нам вернется веб-страница с таким же значением, которое мы вводили перед отправкой.+Для замены метки на данные мы применили метод ''replace(что_меняем, на_что_меняем)''. Теперь после отправки данных из формы нам вернется веб-страница с таким же значением, которое мы вводили перед отправкой.