各位版上的大大日安, 
小弟是超新手,剛買了AI生醫感測健康大應用,是旗標出的。 
書上是用拼圖式教學,所以他把一些東西模組化了。正因為如此,所以學起來的觀念很不扎實。 
而且說真的如果對架構孰悉了,Key in跟Copy and past應該會比拼圖快。(我個人的觀點,不知道有沒有使用很久的大大有不一樣的看法?) 
所以,我還是比較傾向回去看程式碼。我對於程式架構的兩個區塊已經有初步的認識。 
我的硬體是ESP8266 
下方是我目前的程式碼 
我的問題如下: 
 
 
#include <ESP8266WiFi.h> 
#include <ESP8266WebServer.h> 
#include "data/webpages.h" 
 
unsigned long TCon; 
int BAC; 
ESP8266WebServer _esp8266WebServer(80); 
 
void handleRoot() { 
#ifndef WEBPAGE_IN_PROGMEM 
  _esp8266WebServer.send(200, "text/html", mainPage); 
#else 
  _esp8266WebServer.send_P(200, PSTR("text/html"), mainPage); 
#endif 
} 
 
void handleNotFound() { 
#ifndef WEBPAGE_IN_PROGMEM 
  _esp8266WebServer.send(404, "text/html", errorPage); 
#else 
  _esp8266WebServer.send_P(404, PSTR("text/html"), errorPage); 
#endif 
} 
 
void handleSetting() { 
#ifndef WEBPAGE_IN_PROGMEM 
  _esp8266WebServer.send(200, "text/html", settingPage); 
#else 
  _esp8266WebServer.send_P(200, PSTR("text/html"), settingPage); 
#endif 
} 
 
void BAC_return() { 
  _esp8266WebServer.send(200, u8"text/plain", String(BAC)); 
} 
 
 
// setup() 會先被執行且只會執行一次 
void setup() { 
  pinMode(A0, INPUT); 
 
  TCon = millis(); 
  while (!WiFi.softAP(u8"alcohol", u8"12345678", 1,false)); 
  _esp8266WebServer.on("/measure", BAC_return); 
  _esp8266WebServer.on("/", handleRoot); 
  _esp8266WebServer.onNotFound(handleNotFound); 
  _esp8266WebServer.on("/setting", handleSetting); 
  _esp8266WebServer.begin(); 
 
} 
 
// loop() 裡面的程式會不斷重複執行 
void loop() { 
  _esp8266WebServer.handleClient(); 
  if (millis() - TCon > 100) { 
    BAC = analogRead(A0); 
    TCon = millis(); 
  } 
 
} 
 
我的問題如下: 
1.#include "data/webpages.h"  這一行的意思,是不是說去目前的路徑下的一個叫data的資料夾,找webpages.h這個檔案? 
 
2.在大部分的情況下,以下這些東西是真的需要了解他,還是說只要照抄就好? 
void handleRoot() { 
#ifndef WEBPAGE_IN_PROGMEM 
  _esp8266WebServer.send(200, "text/html", mainPage); 
#else 
  _esp8266WebServer.send_P(200, PSTR("text/html"), mainPage); 
#endif 
} 
 
void handleNotFound() { 
#ifndef WEBPAGE_IN_PROGMEM 
  _esp8266WebServer.send(404, "text/html", errorPage); 
#else 
  _esp8266WebServer.send_P(404, PSTR("text/html"), errorPage); 
#endif 
} 
 
void handleSetting() { 
#ifndef WEBPAGE_IN_PROGMEM 
  _esp8266WebServer.send(200, "text/html", settingPage); 
#else 
  _esp8266WebServer.send_P(200, PSTR("text/html"), settingPage); 
#endif 
} 
 
void BAC_return() { 
  _esp8266WebServer.send(200, u8"text/plain", String(BAC)); 
} 
 
3.在大部分的情況下,是不是只要修改其中的Wifi ID與密碼,還有第2行的BAC_return就可以了?然後/measure以及/setting這些是路徑名稱嗎?如果是的話這些路徑會存在哪邊呢? 
  while (!WiFi.softAP(u8"alcohol", u8"12345678", 1,false)); 
  _esp8266WebServer.on("/measure", BAC_return); 
  _esp8266WebServer.on("/", handleRoot); 
  _esp8266WebServer.onNotFound(handleNotFound); 
  _esp8266WebServer.on("/setting", handleSetting); 
  _esp8266WebServer.begin(); 
 
以上懇請高手大大指導,感恩。 
 |