各位版上的大大日安,
小弟是超新手,剛買了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();
以上懇請高手大大指導,感恩。
|