前言git
本文研究WeMos D1如何在STA模式下進行TCP Server通訊,模塊直接鏈接AP(手機熱點或者路由器),進入局域網中和其餘無線設備通訊,WIFI模塊做爲服務端,局域網中其餘設備做爲客戶端。github
1、基礎知識數組
1.模塊鏈接AP服務器
路由器名字:lxy2305,密碼:123456789a:WiFi.mode(WIFI_STA);
2.Socket套接字實現TCP Server流程網絡
服務端套接字使用流程以及和客戶端交互框圖以下所示:socket
3.WiFiServer庫簡介tcp
在Wemos D1實際開發中,並不須要直接操做socket套接字進行TCP通訊,使用WiFiServer庫即可進行快速開發,其百度腦圖以下:ide
函數具體用法以下表:函數
2、實例oop
1. 程序
#include <ESP8266WiFi.h> #include <WiFiClient.h> #include <WiFiServer.h> #define CLIENTS_MAX_NUMS 4 /* Set these to your desired credentials. */ const char *ssid = "lxy2305"; const char *password = "123456789a"; WiFiServer server(8089); WiFiClient serverClients[CLIENTS_MAX_NUMS]; void setup() { Serial.begin(115200); WiFi.begin(ssid, password); Serial.println("\r\nconnecting to router... "); //等待wifi鏈接成功 while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(500); } Serial.println(""); Serial.print("WiFi connected, local IP address:"); Serial.println(WiFi.localIP()); delay(500); Serial.println("Start tcp server..."); server.begin(); server.setNoDelay(true); } void loop() { int i = 0; if (server.hasClient()) { for (i = 0; i < CLIENTS_MAX_NUMS; i++) { if (!serverClients[i] || !serverClients[i].connected()) { if (serverClients[i]) { serverClients[i].stop(); } serverClients[i] = server.available(); continue; } } } for (i = 0; i < CLIENTS_MAX_NUMS; i++) { if (serverClients[i] && serverClients[i].connected()) { if (serverClients[i].available()) { while (serverClients[i].available()) { String recv_data = serverClients[i].readStringUntil('\r'); Serial.println("recv data from tcp server:"); Serial.println(recv_data); // send back serverClients[i].println(recv_data); } } } } delay(50); } server.begin();
上述程序中,首先設置模塊爲WIFI_STA模式,接着鏈接路由器,而後啓動一個TCP Server,接着在loop()函數中不斷查詢是否有新的Client接入,若是有,則放到serverClients數組中,而後再ServerClients數組中遍歷查看是否收到Client數據,若是收到數據則原返回相同數據。
3、運行
程序編譯上傳後設備執行Log以下:
打開網絡助手,鏈接服務器192.168.1.8:8089,8089爲代碼中指定的port,192.168.1.8爲模塊聯網後分配的地址;啓動後向TCP服務器發送數據,服務器返回一樣數據,以下圖所示:
啓動兩個TCP Client,同時鏈接模塊起來的TCP Server,分別發送數據給模塊,而後模塊原路返回數據給對應的客戶端。
從上可知,模塊TCP Server功能正常運行。
4、結語
如您在使用過程當中有任何問題,請加QQ羣進一步交流,也能夠github提Issue。
QQ交流羣:906015840 (備註:物聯網項目交流)
獲取源碼:關注公衆號,回覆wemos便可
一葉孤沙出品:一沙一世界,一葉一菩提