#include
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连接到接入点
- ssid要使用的ssid(工作站名称)。 请注意,此方法使用char数组作为输入。 有关如何将arduino字符串对象转换为char数组(最多15个字符),请参见
http://arduino.cc/en/Reference/StringToCharArray。
- password 假定接入点密码wpa / wpa2(最多15个字符)
- return 如果在时限内(15秒)收到有效的IP,返回将返回true
- 例子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)
- channel 如果要发送到服务器,请设置为SERVER。 如果我们是服务器,值可以在’1’ - ‘3’之间
- message 一个字符数组,最长25个字符。
- return 如果消息已发送,则为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
- Example wifi.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];
参考文献:
https://github.com/ekstrand/ESP8266wifi