乐鑫技术交流
直播中

陈杰

7年用户 1438经验值
私信 关注
[问答]

8266 ELM327模拟器无法从客户端接收是为什么?

我正在使用 ESP-12 来模拟 Wifi ELM327/OBDII 模块……将 OBD 数据(在这种情况下来自电位计的“RPM”)提供给我手机上连接的应用程序(例如扭矩)。我可以将手机连接到 8266 ELMSim。我也可以打开应用程序并选择我的 ELMSim 作为 OBDII 模块。问题是当应用程序发送诸如“AT Z”之类的命令时。我无法“接收”命令以响应它。非常感谢任何帮助。
#include  
#include  
const char *ssid = "ELMSim";
WiFiServer服务器(35000);
IP 地址 local_IP(192, 168, 0, 10); //ESP静态ip
IP地址网关(192, 168, 0, 10); //您的WiFi路由器(网关)的IP地址
IP 地址子网(255、255、255、0);//子网掩码
//Pot 调整值
int RPMsensorPin = 0;
int RPMsensorValue = 0;
int RPMtxValue = 0;
void setup() {
  Serial.begin(38400);
  服务器.开始();
  延迟(10);
//静态IP地址配置
WiFi.softAP(ssid);
WiFi.softAPConfig(local_IP,网关,子网);
while (WiFi.status() != WL_CONNECTED){
  //Serial.println("ELM Sim 可用");
延迟(500);
}
}
void loop() {
//读取传感器的值
RPMsensorValue = analogRead(RPMsensorPin);
如果 (RPMsensorValue <40){
  RPMsensorValue=40;
}
  否则 {
    RPMsensorValue = analogRead(RPMsensorPin);
}
RPMtxValue = RPMsensorValue/10;
  WiFiClient client = server.available();
  // 等待客户端(OBD Phone App)连接
  if (!client){
    Serial.println("\n[Client connected]");
  }
while (client.connected())
// 等到客户端发送一些数据
  {
  if (client.available())
  {
// 读取 App 请求的第一行
String RHrequest = client.readStringUntil('\r') ;
Serial.println(RHrequest);
if(!RHrequest.startsWith("AT")) {
server.println("OK");
}
} }

                 
}

回帖(1)

fdvcxhtg

2024-4-9 18:28:51
我很抱歉,但是你提供的信息有些不清晰,无法给出最准确的解决方案。以下是一些可能导致你的8266 ELM327模拟器无法从客户端接收的问题和解决方法:

1. 代码问题:请更详细地分享你的代码,包括函数和库。有可能有一些代码问题,导致你的设备无法从客户端接收。

2. 连接问题:请确保你的设备已正确连接到你的手机和应用程序。你可以尝试连接其他设备以确定是否是连接问题。

3. 端口问题:确定你在应用程序中使用的端口号与服务器端口号相同。

4. 防火墙问题:确认你的电脑/路由器防火墙未阻止8266与应用程序的通信。

5. 应用程序问题:尝试使用其他的OBDII应用程序或者尝试使用命令行工具测试连接。

希望这些提示能够有所帮助,祝你好运!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分