本文共 5080 字,大约阅读时间需要 16 分钟。
#include <SerialESP8266wifi.h>
SerialESP8266wifi(Stream serialIn,Stream serialOut,byte resetPin)
SerialESP8266wifi wifi(swSerial, swSerial, 10);
SerialESP8266wifi(Stream serialIn, Stream serialOut, byte resetPin, Stream debugSerial)
SerialESP8266wifi wifi(swSerial, swSerial, 10, Serial);
boolean begin()调用这个方法将在ESP8266上做一个hw重置并设置基本参数
- 取决于模块是否正确启动,返回将返回true或false - 例子:boolean esp8266started = wifi.begin();
boolean connectToAP(char * ssid, char password)*
告诉ESP8266连接到接入点
boolean apConnected = wifi.connectToAP("myaccesspoint", "password123");
boolean isConnectedToAP() 检查模块是否连接了有效的IP - return 如果模块具有有效的IP地址,将返回true - 例子boolean apConnected = wifi.isConnectedToAP();
boolean connectToServer(char ip, char port)告诉ESP8266打开到服务器的连接
- ip 要连接的服务器的IP地址 - port 要使用的端口号 - return 如果连接在5秒内建立,则为true - 例子boolean serverConnected = wifi.connectToServer("192.168.5.123", "2121");
boolean isConnectedToServer() 检查服务器是否连接 - return 如果我们连接到服务器将返回true - 例子boolean serverConnected = wifi.isConnectedToServer();
setTransportToTCP() AND setTransportToUDP()告诉ESP8266连接到服务器时使用哪个传输。 默认是TCP。 disconnectFromServer() 告诉ESP8266关闭服务器连接
- 例子wifi.disconnectFromServer();
boolean send(char channel, char * message)发送消息 - 发送别名send(char channel, char * message, true)
boolean sendOk = wifi.send(SERVER, "Hello World!");
boolean send(char channel, char * message, boolean sendNow)发送队列消息以供稍后发送 - channel 如果要发送到服务器,请设置为SERVER。 如果我们是服务器,值可以在’1’ - ‘3’之间 - message 一个字符数组,最长25个字符。 - sendNow 如果为false,则将消息附加到缓冲区,如果为true,则会立即发送消息 - return 如果消息已发送,则为true - Example wifi.send(SERVER, "You", false);wifi.send(SERVER, " are ", false);wifi.send(SERVER, "fantastic!", true); // ie wifi.send(SERVER, "fantastic!");
endSendWithNewline(bool endSendWithNewline)默认情况下,所有消息都使用换行符和回车符(println)发送,您可以禁用它
- endSendWithNewline 发送消息而不是println - Examplewifi.endSendWithNewline(false);
boolean checkConnections(&connections)更新预先初始化指向Wifi连接
- return - 更新的指针是3个连接的数组: boolean connected 如果连接则为true。 char channel 频道号码,可以通过发送。 - 例子WifiConnection *connections;wifi.checkConnections(&connections);for (int i = 0; i < MAX_CONNECTIONS; i++) { if (connections[i].connected) { // See if there is a message WifiMessage msg = wifi.getIncomingMessage(); // Check message is there if (msg.hasData) { processCommand(msg); } }}
boolean isConnection(void) 如果客户端连接,则返回true,否则返回false。 如果不打扰多客户端的话,不用WifiConnection指针就可以使用上面的指针。
WifiMessage getIncomingMessage(void) 检查消息的串行缓冲区。返回是WifiMessage类型,如下所示。 请参阅示例检查客户端连接示例以了解用法
WifiMessage listenForIncomingMessage(int timeoutMillis) 将听取最多timeoutMillis毫秒的新消息。 尽可能多地调用此方法,并尽可能使用尽可能大的timeoutMillis来捕获尽可能多的消息。
void loop(){ WifiMessage in = wifi.listenForIncomingMessage(6000); if (in.hasData) { Serial.print("Incoming message:"); Serial.println(in.message); if(in.channel == SERVER) Serial.println("From server"); else{ Serial.print("From channel:"); Serial.println(in.channel); } } // Do other stuff }
boolean startLocalAPAndServer(char ssid, char password, char* channel, char* port)将创建一个本地访问点并启动一个本地服务器
- ssid - password - channel - port - return - 例子boolean localAPAndServerStarted = wifi.startLocalAPAndServer("my_ap", "secret_pwd", "5", "2121");
boolean stopLocalAPAndServer()禁用访问点(服务器不会停止,因为需要重启) boolean isLocalAPAndServerRunning()检查本地访问点和服务器是否正在运行 每次发送(…)和listenForIncomingMessage(..)被称为监视程序检查配置的访问点,服务器和本地访问点和服务器是否仍在运行,如果不是,它们将重新启动或重新连接。如果ESP8266应该重置,也会发生同样的事情。 注意:实际上只有发送方法可以检测与服务器的连接丢失。 为了确保你已经连接起来,偶尔发送一次。
在串行ESP8266wifi.h中,您可以更改一些内容:
- HW_RESET_RETRIES 3 是begin()尝试启动ESP8266模块的最大次数 - SERVER_CONNECT_RETRIES_BEFORE_HW_RESET 30 是在执行ESP8266的硬件复位之前,看门狗将尝试与服务器建立连接的时间 - 传入和传出邮件的最大字符数可通过编辑进行更改:char msgOut[26]; char msgIn[26];
- 如果ssid和密码长度的限制不适合您,请更改: char _ssid[16];char _password[16];char _localAPSSID[16];char _localAPPassword[16];
参考文献: 转载地址:http://biqqf.baihongyu.com/