arduino esp8266连接WIFI-打印IP地址mac地址--启动服务端server等待连接
arduino esp8266连接WIFI-打印IP地址mac地址--启动服务端server等待连接
arduino ESP8266设置静态IP 方法
#include <ESP8266WiFi.h> const char* ssid = "txw--tech"; const char* password = "xxx"; //const char* host = "data.sparkfun.com"; //const char* host = "172.16.1.242"; const char* host = "172.17.140.245"; //const char* host = "192.168.66.113"; //const char* host = "10.24.15.127"; //const char* host = "192.168.10.101"; const char* streamId = "...................."; const char* privateKey = "...................."; int LED6 = D6; int pinD2 = 2; int pinD0 = 0; int senVal = 0; #define MAX_SRV_CLIENTS 1 //做多多少个客户端可以连接 WiFiServer server(6789); //创建server 端口号是23 WiFiClient serverClients[MAX_SRV_CLIENTS]; //定义最多多少个client可以连接本server(一般不要超过4个) void setup() { Serial.begin(115200); WiFi.mode(WIFI_STA); pinMode(pinD2, OUTPUT); WiFi.begin(ssid, password); Serial.print("\n连接到:"); Serial.println(ssid); uint8_t i = 0; while (WiFi.status() != WL_CONNECTED && i++ < 20) { delay(500); } if (i == 21) { Serial.print("没能连接到:"); Serial.println(ssid); return; } server.begin(); //启动server server.setNoDelay(true);//关闭小包合并包功能,不会延时发送数据 Serial.println("准备好了!使用网络吧 IP是: "); Serial.println(WiFi.localIP()); Serial.println(WiFi.macAddress()); Serial.println("端口: 6789"); } void array_to_string(byte array[], unsigned int len, char buffer[]) { for (unsigned int i = 0; i < len; i++) { byte nib1 = (array[i] >> 4) & 0x0F; byte nib2 = (array[i] >> 0) & 0x0F; buffer[i * 2 + 0] = nib1 < 0xA ? '0' + nib1 : 'A' + nib1 - 0xA; buffer[i * 2 + 1] = nib2 < 0xA ? '0' + nib2 : 'A' + nib2 - 0xA; } buffer[len * 2] = '\0'; } void loop() { uint8_t i; if (server.hasClient()) { //判断是否有新的client请求进来 for (i = 0; i < MAX_SRV_CLIENTS; i++) { //释放旧无效或者断开的client if (!serverClients[i] || !serverClients[i].connected()) { if (!serverClients[i]) { //serverClients[i] 判断指定序号的客户端是否有效 serverClients[i].stop(); //停止指定客户端的连接 } serverClients[i] = server.available();//分配最新的client Serial.print("1个新的客户端: "); Serial.println(i); Serial.println(666); break; //跳出一层for循环 } } //当达到最大连接数 无法释放无效的client,需要拒绝连接 if (i == MAX_SRV_CLIENTS) { WiFiClient client = server.available(); client.stop(); Serial.println("连接被拒绝 "); } } //检测client发过来的数据 for (i = 0; i < MAX_SRV_CLIENTS; i++) { if (serverClients[i] && serverClients[i].connected()) { char recv_msg[1024]; String recv_str_from_client = ""; char ch_str =0x0; int index2 = 0; if (serverClients[i].available()) { //serverClients[i].available() 判断指定客户端是否有可读数据 while (serverClients[i].available()) { // byte recv_word = serverClients[i].read(); char recv_word = serverClients[i].read(); recv_str_from_client = recv_str_from_client + recv_word; //Serial.write(recv_word); //Serial.write("_"); recv_msg[index2] = recv_word; index2++; } recv_msg[index2] = '\0'; Serial.println("string type print"); Serial.println(recv_str_from_client); Serial.write("\n------------------\n"); //Serial.write(recv_msg, index2); //Serial.write("\n------------------\n"); const byte sbuf2[] = "recv_success"; const byte sbuf_error[] = "recv_error"; const char original_open[] = "c11_open"; String original_open2 = "c11_open"; byte recv_str[1024]; String aa = "123"; if (recv_str_from_client.compareTo(original_open2) == 0) { Serial.println("相等"); } else { Serial.println("不相等"); Serial.println("recv_str_from_client:" + recv_str_from_client); Serial.println("original_open:" + original_open2); } //Serial.println(aa); for (int i = 0; i < index2; i++) { recv_str[i] = recv_msg[i]; //Serial.write(recv_str[i]); } recv_str[index2] = 0x0; //0 byte array[4] = { 0xAB, 0xCD, 0xEF, 0x99 }; char recv_str_2[1024] = ""; array_to_string(recv_str, 36, recv_str_2); recv_str_2[index2] = '\0'; //Serial.println(""); //Serial.println("print_recv_str_2"); //Serial.println(recv_str_2); int ori_length = strlen(recv_msg); aa = "ori_length="; aa = aa + ori_length; Serial.println(aa); aa = "index2="; aa = aa + index2; //Serial.println(aa); if (index2 == ori_length) { //Serial.println("相等"); int a2_length = strcmp(recv_str_2, original_open); aa = "a2_length="; aa = aa + a2_length; //Serial.println(aa); String str1 = ""; String str2 = ""; for (int i = 0; i < ori_length; i++) { str1 = str1 + original_open[i]; str2 = str2 + recv_str_2[i]; } int cc = str1.compareTo(str2); aa = "cc="; aa = aa + cc; //Serial.println(aa); //Serial.println(str1); //Serial.println(str2); } else { //Serial.println("不相等"); } // Serial.write(aa,sizeof(aa)); // if (strcmp(recv_str, original_open) == 0) { serverClients[i].write(sbuf2, sizeof(sbuf2) / sizeof(sbuf2[0]));//向客户端发送数据 } // else { serverClients[i].write(sbuf_error, sizeof(sbuf_error) / sizeof(sbuf_error[0]));//向客户端发送数据 } // serverClients[i].write(sbuf2, sizeof(sbuf2) / sizeof(sbuf2[0]));//向客户端发送数据 } } } if (Serial.available()) { //把串口调试器发过来的数据 发送给client size_t len = Serial.available(); //返回可读数据的长度 uint8_t sbuf[len]; Serial.readBytes(sbuf, len); String aa; for (int i = 0; i < sizeof(sbuf); i++) { aa = aa + sbuf[i]; } if (aa == "abc") { digitalWrite(pinD2, HIGH); } else { digitalWrite(pinD2, LOW); } //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); } } } }
欢迎讨论,相互学习。
cdtxw@foxmail.com

浙公网安备 33010602011771号