完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
客户端模式
连接到网络中,向服务器发送或请求数据 服务器模式 通俗的说,就是8266开一个热点,然后手机连上这个热点可以和它在网页中进行通讯 服务器模式程序 WifiAccessPoint 文件-示例-ESP8266WIFI-WifiAccessPoint /* 创建Wifi热点提供网站服务 */ #include #include #include #ifndef APSSID #define APSSID "ESPap" //wifi名称,可修改 #define APPSK "thereisnospoon" //wifi密码,可修改 #endif const char *ssid = APSSID; const char *password = APPSK; ESP8266WebServer server(80); /* 连上wifi之后,进入浏览器输入192.168.4.1 ,可以直接访问8266的网站服务 */ void handleRoot() { server.send(200, "text/html", " You are connected");} void setup() { delay(1000); Serial.begin(115200); Serial.println(); Serial.print("Configuring access point..."); /* 如果不想设置wifi密码,把下面的password删掉 像这样: WiFi.softAP(ssid); */ WiFi.softAP(ssid, password); IPAddress myIP = WiFi.softAPIP(); Serial.print("AP IP address: "); Serial.println(myIP); server.on("/", handleRoot); server.begin(); Serial.println("HTTP server started"); } void loop() { server.handleClient(); } 连上热点之后访问服务器确实出现了You are connected,为什么呢?? 因为 server.on("/", handleRoot);这一句代码表示当服务器根目录被访问到的时候,就调用handleRoot函数 下面做一点小修改,热点控制LED WifiAccessPoint - LED_BUILTIN /* 通过浏览器将将灯设置为相反状态,亮就让你灭,灭就让你亮。 每访问一次网站,灯的状态就会发生变化(可刷新重复访问) */ #include #include #include #ifndef APSSID #define APSSID "ESPap" //wifi名称,可修改 #define APPSK "thereisnospoon" //wifi密码,可修改 #endif const char *ssid = APSSID; const char *password = APPSK; ESP8266WebServer server(80); void handleRoot() { server.send(200, "text/html", " You are connected");digitalWrite(LED_BUILTIN,!digitalRead(LED_BUILTIN)); //将灯设置为相反状态,亮就让你灭,灭就让你亮 } void setup() { delay(1000); Serial.begin(115200); Serial.println(); Serial.print("Configuring access point..."); WiFi.softAP(ssid, password); IPAddress myIP = WiFi.softAPIP(); Serial.print("AP IP address: "); Serial.println(myIP); server.on("/", handleRoot); server.begin(); Serial.println("HTTP server started"); pinMode(LED_BUILTIN, OUTPUT); } void loop() { server.handleClient(); } WifiAccessPoint - GPIO - LED 这样不过瘾吗???你说网页没变啊?? 那我就变化一下吧 这里只对上面的代码修改了一处函数,每访问服务器一次就变化一下灯的状态,并读取状态显示在网页中。 void handleRoot() { digitalWrite(LED_BUILTIN,!digitalRead(LED_BUILTIN)); String str = " You are connectedLED State: " + String(digitalRead(LED_BUILTIN)) ;server.send(200, "text/html", str); } 这里需要说明的是,8266上的LED是负逻辑,就是状态为1为灭灯 但是GPIO上是正逻辑,不信试试一下D6外接LED和电阻,状态为1表示亮 void handleRoot() { digitalWrite(D6,!digitalRead(D6)); //将灯设置为相反状态,亮就让你灭,灭就让你亮 String str = " You are connectedLED State: " + String(digitalRead(D6)) ;server.send(200, "text/html", str); } void setup() { /************** 不变 ***/ pinMode(D6, OUTPUT); } 404 有人就问啊,网站不是有很多页面吗?那我连上8266访问一下其它页面会怎么样?? 试试就试试,你以为我是谁,在地址栏反复刷新太无聊??看一下嘿嘿 地址栏输入192.168.4.1/led,回车Not found: /led 地址栏输入192.168.4.1/io,回车Not found: /io… 辣我想让塔出现404页面怎么搞?? server.onNotFound(handleNotFound); 这个说明当有人企图浏览不存在的网址的时候,就会调用handleNotFound函数,然后我们就可以在函数里定义404页面辣 /* 1.通过浏览器将将外置LED灯设置为相反状态,亮就让你灭,灭就让你亮,每访问一次网站,灯的状态就会发生变化(可刷新重复访问) 2.显示灯的状态 3.增加404页面提示 */ #include #include #include #ifndef APSSID #define APSSID "ESPap" #define APPSK "123789" #endif const char *ssid = APSSID; const char *password = APPSK; ESP8266WebServer server(80); void handleRoot() { digitalWrite(D6,!digitalRead(D6)); String str = " You are connectedLED State: " + String(digitalRead(D6)) ;server.send(200, "text/html", str); } void handleNotFound(){ // 当浏览器请求的网络资源无法在服务器找到时, server.send(404, "text/plain", "404: Not found,There is nothing"); // NodeMCU将调用此函数。中文的话会乱码-.- } void setup() { delay(1000); Serial.begin(115200); Serial.println(); Serial.print("Configuring access point..."); WiFi.softAP(ssid,password); IPAddress myIP = WiFi.softAPIP(); Serial.print("AP IP address: "); Serial.println(myIP); server.on("/", handleRoot); server.onNotFound(handleNotFound); server.begin(); Serial.println("HTTP server started"); pinMode(D6, OUTPUT); } void loop() { server.handleClient(); } 整蛊专家 有点的网站管理后台通常就是这样的 那我们也给自己写一个假的管理后台吧 192.168.4.1/admin server.on("/admin", handleadmin); 这个说明说明捏??那就是当有人企图访问网站下的admin目录,就调用handleadmin函数处理这种情况-.- 不信你试试哇,正常情况下会红红的居中显示 This is a fake web, you are cheated -.-!!! /* 1.通过浏览器将将外置LED灯设置为相反状态,亮就让你灭,灭就让你亮,每访问一次网站,灯的状态就会发生变化(可刷新重复访问) 2.显示灯的状态 3.增加404页面提示 */ #include #include #include #ifndef APSSID #define APSSID "ESPap" #define APPSK "123789" #endif const char *ssid = APSSID; const char *password = APPSK; ESP8266WebServer server(80); void handleRoot() { digitalWrite(D6,!digitalRead(D6)); String str = " You are connectedLED State: " + String(digitalRead(D6)) ;server.send(200, "text/html", str); } void handleadmin(){ server.send(200, "text/html", " This is a fake web, you are cheated -.-!!!!");} void handleNotFound(){ server.send(404, "text/plain", "404: Not found,There is nothing"); } void setup() { delay(1000); Serial.begin(115200); Serial.println(); Serial.print("Configuring access point..."); WiFi.softAP(ssid,password); IPAddress myIP = WiFi.softAPIP(); Serial.print("AP IP address: "); Serial.println(myIP); server.on("/", handleRoot); server.on("/admin", handleadmin); server.onNotFound(handleNotFound); server.begin(); Serial.println("HTTP server started"); pinMode(D6, OUTPUT); } void loop() { server.handleClient(); } |
|
|
|
只有小组成员才能发言,加入小组>>
3278 浏览 9 评论
2956 浏览 16 评论
3458 浏览 1 评论
9000 浏览 16 评论
4051 浏览 18 评论
1109浏览 3评论
572浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
568浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2302浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1859浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 11:15 , Processed in 1.179917 second(s), Total 80, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号