久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2501|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

用思維導(dǎo)圖分析代碼,讓初學(xué)者更輕松搞懂程序的運(yùn)作

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:636442 發(fā)表于 2022-10-22 15:57 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
學(xué)習(xí)和使用ESP8266,在ardoinoIDE寫(xiě)程序一個(gè)多月了。
剛開(kāi)始看代碼時(shí),由于水平比較低,
分析代碼比較難,
所以,在一邊學(xué)習(xí)時(shí),一邊用思維導(dǎo)圖去分析代碼。
分析完,感覺(jué)思路有些清晰,
希望這個(gè)思維導(dǎo)圖對(duì)一些初學(xué)者有些參考意義。



















  1. #include <ESP8266WiFi.h>
  2. #include <DNSServer.h>
  3. #include <ESP8266WebServer.h>

  4. const char* AP_NAME = "qyz-SET-WIFI";//寫(xiě)入自己設(shè)計(jì)的wifi名字
  5. //暫時(shí)存儲(chǔ)wifi賬號(hào)密碼
  6. char sta_ssid[32] = {0};
  7. char sta_password[64] = {0};


  8. //配網(wǎng)頁(yè)面代碼
  9. const char* page_html = "\
  10. <!DOCTYPE html>\r\n\
  11. <html lang='en'>\r\n\
  12. <head>\r\n\
  13.   <meta charset='UTF-8'>\r\n\
  14.   <meta name='viewport' content='width=device-width, initial-scale=1.0'>\r\n\
  15.   <title>Document</title>\r\n\
  16. </head>\r\n\
  17. <body>\r\n\
  18.   <form name='input' action='/' method='POST'>\r\n\
  19.         qyz設(shè)計(jì)測(cè)試: <br>\r\n\
  20.         wifi名稱(chēng): <br>\r\n\
  21.         <input type='text' name='ssid'><br>\r\n\
  22.         wifi密碼:<br>\r\n\
  23.         <input type='text' name='password'><br>\r\n\
  24.         <input type='submit' value='保存'>\r\n\
  25.     </form>\r\n\
  26. </body>\r\n\
  27. </html>\r\n\
  28. ";

  29. const byte DNS_PORT = 53;//DNS端口號(hào)
  30. IPAddress apIP(192, 168, 4, 1);//esp8266-AP-IP地址
  31. DNSServer dnsServer;//創(chuàng)建dnsServer實(shí)例
  32. ESP8266WebServer server(80);//創(chuàng)建WebServer

  33. void handleRoot() {//訪問(wèn)主頁(yè)回調(diào)函數(shù)
  34.   server.send(200, "text/html", page_html);
  35. }

  36. void handleRootPost() {//Post回調(diào)函數(shù)
  37.   Serial.println("handleRootPost");
  38.   if (server.hasArg("ssid")) {//判斷是否有賬號(hào)參數(shù)
  39.     Serial.print("got ssid:");
  40.     strcpy(sta_ssid, server.arg("ssid").c_str());//將賬號(hào)參數(shù)拷貝到sta_ssid中
  41.     Serial.println(sta_ssid);
  42.   } else {//沒(méi)有參數(shù)
  43.     Serial.println("error, not found ssid");
  44.     server.send(200, "text/html", "<meta charset='UTF-8'>沒(méi)有輸入1error, not found ssid");//返回錯(cuò)誤頁(yè)面
  45.     return;
  46.   }
  47.   //密碼與賬號(hào)同理
  48.   if (server.hasArg("password")) {
  49.     Serial.print("got password:");
  50.     strcpy(sta_password, server.arg("password").c_str());
  51.     Serial.println(sta_password);
  52.   } else {
  53.     Serial.println("error, not found password");
  54.     server.send(200, "text/html", "<meta charset='UTF-8'>沒(méi)有輸入2error, not found password");
  55.     return;
  56.   }

  57.   server.send(200, "text/html", "<meta charset='UTF-8'>保存成功");//返回保存成功頁(yè)面
  58.   delay(2000);
  59.   //連接wifi
  60.   connectNewWifi();
  61. }


  62. void initBasic(void){//初始化基礎(chǔ)
  63.   Serial.begin(115200);
  64.   WiFi.hostname("Smart-ESP8266");//設(shè)置ESP8266設(shè)備名
  65. }

  66. void initSoftAP(void){//初始化AP模式
  67.   WiFi.mode(WIFI_AP);
  68.   WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));
  69.   if(WiFi.softAP(AP_NAME)){
  70.     Serial.println("ESP8266 SoftAP is right");
  71.   }
  72. }

  73. void initWebServer(void){//初始化WebServer
  74.   //server.on("/",handleRoot);
  75.   //上面那行必須以下面這種格式去寫(xiě)否則無(wú)法強(qiáng)制門(mén)戶
  76.   server.on("/", HTTP_GET, handleRoot);//設(shè)置主頁(yè)回調(diào)函數(shù)
  77.   server.onNotFound(handleRoot);//設(shè)置無(wú)法響應(yīng)的http請(qǐng)求的回調(diào)函數(shù)
  78.   server.on("/", HTTP_POST, handleRootPost);//設(shè)置Post請(qǐng)求回調(diào)函數(shù)
  79.   server.begin();//啟動(dòng)WebServer
  80.   Serial.println("WebServer started!");
  81. }

  82. void initDNS(void){//初始化DNS服務(wù)器
  83.   if(dnsServer.start(DNS_PORT, "*", apIP)){//判斷將所有地址映射到esp8266的ip上是否成功
  84.     Serial.println("start dnsserver success.");
  85.   }
  86.   else Serial.println("start dnsserver failed.");
  87. }

  88. void connectNewWifi(void){

  89.   WiFi.mode(WIFI_STA);//切換為STA模式
  90.   WiFi.setAutoConnect(true);//設(shè)置自動(dòng)連接
  91.   WiFi.begin();//連接上一次連接成功的wifi
  92.   Serial.println("");
  93.   Serial.print("Connect to wifi");

  94.   int count = 0;
  95.    while (WiFi.status() != WL_CONNECTED) {
  96.     delay(500);
  97.     count++;
  98.     if(count > 10){//如果5秒內(nèi)沒(méi)有連上,就開(kāi)啟Web配網(wǎng) 可適當(dāng)調(diào)整這個(gè)時(shí)間
  99.       initSoftAP();
  100.       initWebServer();
  101.       initDNS();
  102.       break;//跳出 防止無(wú)限初始化
  103.     }
  104.     Serial.print(".");
  105.   }
  106.   Serial.println("");
  107.   if(WiFi.status() == WL_CONNECTED){//如果連接上 就輸出IP信息 防止未連接上break后會(huì)誤輸出
  108.     Serial.println("WIFI Connected!");
  109.     Serial.print("IP address: ");
  110.     Serial.println(WiFi.localIP());//打印esp8266的IP地址
  111.     server.stop();
  112.   }
  113. }

  114. void setup() {
  115.   initBasic();
  116.   connectNewWifi();
  117. }

  118. void loop() {
  119.   server.handleClient();
  120.   dnsServer.processNextRequest();
  121. }
復(fù)制代碼

評(píng)分

參與人數(shù) 2黑幣 +120 收起 理由
wps10025 + 30 贊一個(gè)!
admin + 90

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:310441 發(fā)表于 2022-10-23 08:07 來(lái)自手機(jī) | 只看該作者
思路很清晰!
回復(fù)

使用道具 舉報(bào)

板凳
ID:607710 發(fā)表于 2022-12-19 07:49 來(lái)自手機(jī) | 只看該作者
我一直都是這樣做的,包括自己編寫(xiě)的時(shí)候也是先寫(xiě)大綱。
回復(fù)

使用道具 舉報(bào)

地板
ID:1062304 發(fā)表于 2023-2-14 16:02 | 只看該作者
脈絡(luò)很清晰,有助于思考
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲福利在线观看 | 久久午夜国产精品www忘忧草 | 国产黄色小视频在线观看 | 亚洲精品一区二区三区四区高清 | 欧美精品片 | 国产一在线观看 | www.av在线| 蜜月aⅴ国产精品 | 成人欧美一区二区三区黑人孕妇 | 性色的免费视频 | 黄色三级免费 | 91久久久久久久久久久 | 国产精品中文字幕一区二区三区 | 亚洲a一区 | 国产一级淫片免费视频 | 成人一区二区电影 | 欧美v片 | 巨大荫蒂视频欧美另类大 | 日韩三级在线 | 国产精品久久久久久久免费大片 | 91精品久久久久久久 | 日韩欧美国产精品一区 | 精品久久久久久久久久久久久久 | 欧美成人影院在线 | 久久91精品国产一区二区三区 | 81精品国产乱码久久久久久 | 欧美一区二区三区视频在线观看 | 九九热精品在线 | 国产免费观看一级国产 | 欧美午夜在线 | 91亚洲欧美| 欧美国产视频一区二区 | a级免费黄色片 | 欧美一区二区三区 | 在线观看中文字幕亚洲 | 国产精品成人一区二区 | 亚洲电影第三页 | 日韩av网址在线观看 | 欧美成人性生活 | 日本不卡免费新一二三区 | 91精品国产综合久久小仙女图片 |