我正在使用 ESP-12 作为接收和响应移动应用程序的服务器。它接收并响应最多 4 个查询(有时只有一个,有时是 2-4 个),但随后停止接收。如果我断开连接并重新连接,它将比以前少接收/响应 1 个命令。有人对如何解决这个问题有想法吗?
我基本上是在模拟 WiFi OBD/ELM327 模块并向应用程序(例如 Torque)提供响应。我的代码如下:
#include
const char *ssid = "ELMSim";
const char *OKresponse = "OK\r";
const char *ELMresponse = "ELM327 v1.5\r";
const char *CMD = ">\r";
WiFiServer服务器(35000);
//调整值的锅
int RPMsensorPin = 0;
int RPMtxValue = 0;
IP 地址 myIP(192, 168, 4, 1);
void setup() {
Serial.begin(38400);
延迟(100);
序列号.println();
Serial.println("正在配置接入点...");
WiFi.mode(WIFI_AP_STA);
WiFi.softAPConfig(myIP, myIP, IPAddress(255, 255, 255, 0)); // 子网 FF FF FF 00
WiFi.softAP(ssid);
Serial.println("AP IP地址:");
Serial.println(我的 IP);
服务器.开始();
}
void loop() {
WiFiClient client = server.available();
如果(客户端){
延迟(10);
Serial.println("客户端已连接");
客户端.println(CMD);
while(client.connected()) {
延迟(10);
while(client.available()){
String RHRequest = client.readStringUn
til('\r');
Serial.println(RHRequest);
如果(RHRequest.equals(“AT Z”)){
延迟(10);
client.println(ELMresponse);
Serial.print("ELMSim 发送的响应...");
Serial.println(ELMresponse);
延迟(10);
客户端.println(CMD);
}
else if(RHRequest.equals("AT SP 0")) {
client.println(RHRequest);
Serial.print("ELMSim 发送的响应...");
Serial.println(RHRequest);
延迟(10);
client.println(OKresponse);
序列号.print("
Serial.println(OKresponse);
延迟(10);
客户端.println(CMD);
Serial.print("ELMSim 发送的响应...");
序列号.println(CMD);
}
else if(RHRequest.equals("AT AL")) {
client.println(RHRequest);
Serial.print("ELMSim 发送的响应...");
Serial.println(RHRequest);
延迟(10);
client.println(OKresponse);
Serial.print("ELMSim 发送的响应...");
Serial.println(OKresponse);
延迟(10);
客户端.println(CMD);
Serial.print("ELMSim 发送的响应...");
序列号.println(CMD);
else if(RHRequest.equals("AT E0")) {
client.println(RHRequest);
Serial.print("ELMSim 发送的响应...");
Serial.println(RHRequest);
延迟(10);
client.println(OKresponse);
Serial.print("ELMSim 发送的响应...");
Serial.println(OKresponse);
延迟(10);
客户端.println(CMD);
Serial.print("ELMSim 发送的响应...");
序列号.println(CMD);
}
else if(RHRequest.equals("AT S0")) {
client.println(OKresponse);
Serial.print("ELMSim 发送的响应...");
Serial.println(OKresponse);
客户端.println(CMD);
Serial.print("ELMSim 发送的响应...");
序列号.println(CMD);
}
else if(RHRequest.equals("AT H0")) {
client.println(OKresponse);
客户端.println(CMD);
}
else if(RHRequest.equals("AT ST FF")) {
client.println(OKresponse);
客户端.println(CMD);
}
else if(RHRequest.equals("01 00")) {
client.println("410080000001 \r");
延迟(100);
client.println("4100BFFFB993 \r");
}
//else if(RHRequest.equals("01 0C")) {
//string rpmread = (a0value,
//rpmsend = concat 41010,rpmread
client.flush();
}
} }
}