ESP8266局域网 路由器下作服务器模式串口透传 arduino uno示例 模板参考
ESP8266服务器模式串口透传编译需要下载8266的库文件后才可以正常
#include <ESP8266WiFi.h> #define MAX_SRV_CLIENTS 5 //最大同时联接数,即你想要接入的设备数量,8266tcpserver只能接入五个,哎 const char *ssid = "icloud"; ////这里是我的wifi,你使用时修改为你要连接的wifi ssid const char *password = "icloudelectron"; //你要连接的wifi密码 IPAddress local_IP(192, 168, 43, 181);//加入路由器时192, 168, 0, 1开始或根据路由分配的起始IP可到路由器中查看 IPAddress gateway(192, 168, 43, 1);//加入路由器时192, 168, 0, 1/手机自建服务器时路由网关192, 168, 43, 1 IPAddress subnet(255, 255, 255, 0); WiFiServer server(8266);//你要的端口号,随意修改,范围0-65535 WiFiClient serverClients[MAX_SRV_CLIENTS]; void setup() { Serial.begin(9600); delay(10); pinMode(16, OUTPUT); digitalWrite(16, 0); WiFi.config(local_IP, gateway, subnet);//192.168.0.200 WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); } server.begin(); server.setNoDelay(true); //加上后才正常些 } void loop() { blink(); uint8_t i; if (server.hasClient()) { for (i = 0; i < MAX_SRV_CLIENTS; i++) { if (!serverClients[i] || !serverClients[i].connected()) { if (serverClients[i]) serverClients[i].stop();//未联接,就释放 serverClients[i] = server.available();//分配新的 continue; } } WiFiClient serverClient = server.available(); serverClient.stop(); } for (i = 0; i < MAX_SRV_CLIENTS; i++) { if (serverClients[i] && serverClients[i].connected()) { digitalWrite(16, 0);//有链接存在,就一直长亮 if (serverClients[i].available()) { while (serverClients[i].available()) Serial.write(serverClients[i].read()); } } } if (Serial.available()) { size_t len = Serial.available(); uint8_t sbuf[len]; Serial.readBytes(sbuf, len); //push UART data to all connected telnet clients for (i = 0; i < MAX_SRV_CLIENTS; i++) { if (serverClients[i] && serverClients[i].connected()) { serverClients[i].write(sbuf, len); //向所有客户端发送数据 delay(1); } } } } void blink() { static long previousMillis = 0; static int currstate = 0; if (millis() - previousMillis > 200) //200ms { previousMillis = millis(); currstate = 1 - currstate; digitalWrite(16, currstate); } }
有问题的留言

浙公网安备 33010602011771号