完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在使用 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.readStringUntil('\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(); } } } } |
|
相关推荐
1个回答
|
|
问题可能是与您的代码或网络设置有关。以下是一些可能的解决方案:
1. 检查您的代码:请确保您的代码不会阻塞。如果您的代码在等待数据时阻塞,服务器将无法继续接收数据。您可以尝试使用非阻塞代码或将其放在单独的线程中。 2. 检查您的网络设置:请确保您的 ESP-12 和移动应用程序之间的网络连接稳定。如果连接不稳定,您可能会失去数据包或接收/发送错误的数据包。您可以尝试增强您的网络信号或使用更可靠的网络连接。 3. 重启您的设备:如果您的 ESP-12 停止接收数据,您可以尝试重新启动设备。这可能会解决一些网络问题。 4. 调试您的代码:您可以输出调试信息,以便了解您的代码中出现了什么问题。您可以使用 Serial.print() 在串行监视器中输出调试信息。 希望这些解决方案能对您有所帮助。如果问题仍然存在,请尝试进一步调试或咨询专业人员。 |
|
|
|
只有小组成员才能发言,加入小组>>
1032 浏览 1 评论
562浏览 6评论
470浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
454浏览 5评论
455浏览 4评论
428浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 03:09 , Processed in 1.095761 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号