我正在使用arduino ide来编程esp8266(wifi模块)并且我在模块上创建了一个tcp服务器然后我使用tcp客户端测试程序来发送和接收数据。这是我正在使用的代码 我设法从模块发送数据但无法从手机接收任何数据,任何人都可以帮助我吗? 这是我正在使用的代码
#include <ESP8266WiFi.h>
int i =0;
char ssid[] = "moataz";
char pass[] = "58295829";
int status = WL_IDLE_STATUS;
WiFiServer server(1050);
void setup()
{
Serial.begin(115200);
WiFi.mode(WIFI_AP_STA);
WiFi.begin("moataz", "58295829");
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("connectedd");
server.begin();
IPAddress myAddress = WiFi.localIP();
Serial.println(myAddress);
delay(200);
}
bool alreadyConnected = 0;
void loop() {
WiFiClient client = server.available();
if (client) {
if (!alreadyConnected) {
client.flush();
Serial.println("We have a new client");
client.println("Hello, client!");
alreadyConnected = true;
}
}
if (client.available() > 0) {
char thisChar = client.read();
Serial.println("We got data");
Serial.println(thisChar);
delay(200);
}
}
答案 0 :(得分:1)
删除WifiClient
后,关闭连接,然后您的标记alreadyConnected
不表示连接状态。
您的代码应该是第一次运行
为了接受TCP连接,发送“Hello,client!”,读取1个字符,关闭TCP连接,你可以这样继续:
void loop() {
WiFiClient client = server.available();
if (client) {
Serial.println("We have a new client");
client.println("Hello, client!");
if (client.available() > 0) {
char thisChar = client.read();
Serial.println("We got data");
Serial.println(thisChar);
delay(200);
}
}
}
如果您想保持连接打开,则需要将其保持在循环之外。
此示例WiFiTelnetToSerial.ino显示了如何维护WIFIClient
的列表。