首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Car OBDII WLAN协议

Car OBDII WLAN协议
EN

Stack Overflow用户
提问于 2012-05-08 20:36:33
回答 3查看 5K关注 0票数 6

我目前正在寻找WLAN协议的规范,以获得OBDII数据。市场上有一些与ELM327类似的适配器,它使iPhone能够连接到与无线局域网的OBDIIⅡ接口。这是因为蓝牙串口因为附件接口而被扰乱。其他程序,如用于android的Torque也可以使用此通信协议。然而,我没有找到创建网络客户端的规范。

欢迎任何帮助,

谢谢

EN

回答 3

Stack Overflow用户

发布于 2013-02-28 21:02:28

好的,经过进一步的研究,我发现了两个来源:

  1. Michael Gile有一个open source library for iOS devices,用于与OBDII WiFi以及蓝牙设备通信。
  2. PLX设备( KiWi的创建者)有一个description如何与KiWi通信。description太大,无法包含在此处,但归结为:在设备返回>
  3. Issue命令并等待response

之前,使用WiFi description进行

  • 连接

请求信息可以通过发送以下格式(ASCII字符)的命令来完成:

MM PP\r

其中MM是测试模式,PP是PID,\r是回车(十六进制:0x0d)。Kiwi忽略所有空格字符。*测试模式03和04不需要PID值。

所说的“测试模式”是SAE J1979标准中定义的十种诊断模式:

代码语言:javascript
复制
Test mode   Description
01  Show current data
02  Show freeze frame data
03  Show diagnostic trouble codes
04  Clear trouble codes and stored values
05  Test results, oxygen sensors
06  Test results, non-continuously monitored
07  Show 'pending' trouble codes
08  Special control mode
09  Request vehicle information
0A  Request permanent trouble codes  

PID值是车内传感器的代码。一个(非详尽的)list of possible PID values is on Wikipedia

票数 9
EN

Stack Overflow用户

发布于 2018-05-19 04:07:24

下面是我用C和socket做的事情:

代码语言:javascript
复制
int sockfd = 0, n = 0;
char recvBuff[1024];
struct sockaddr_in serv_addr; 
char *ip = "192.168.0.10";
char str [128];
int i;

memset(recvBuff, '0',sizeof(recvBuff));
if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
    printf("\n Error : Could not create socket \n");
    return 1;
} 

memset(&serv_addr, '0', sizeof(serv_addr)); 

serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(35000); 

if(inet_pton(AF_INET, ip, &serv_addr.sin_addr)<=0)
{
    printf("\n inet_pton error occured\n");
    return 1;
} 

if( connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0)
{
   printf("\n Error : Connect Failed \n");
   return 1;
} 

printf ("reading...\n");
strcpy (str,"AT Z\x0d");
sleep(2);
write (sockfd, str, strlen (str)); 
while ( (n = read(sockfd, recvBuff, sizeof(recvBuff)-1)) > 0)
{
    recvBuff[n] = 0;
    printf ("received: ");
    if(fputs(recvBuff, stdout) == EOF)
    {
        printf("\n Error : Fputs error\n");
    }
    printf ("\r\ntype: ");
    fgets (str, sizeof (str), stdin);
    i = strlen (str);
    if (str [i-1] == 0x0a)
        str [i-1] = 0;
    strcat (str, "\x0d");
    write (sockfd, str, strlen (str)); 
    printf ("\r\n");
} 

输入1或2回车键,你应该看到提示: ELM327然后,输入任何你想要的,例如: AT RV (将显示电压)然后对所有代码使用这个pdf:https://www.obd-2.de/carcode/dl/ELM327DS.pdf

票数 1
EN

Stack Overflow用户

发布于 2020-04-12 07:30:30

看一下TCP加密狗将ELM327 RS232端口透明地绑定到ELM327 datasheet服务器。并没有真正的WIFI协议。您可以通过原始TCP连接使用ELM327协议。

您可以使用telnet命令发送AT命令和称为PID的OBD2命令:

代码语言:javascript
复制
telnet 192.168.0.1 35000

如果连接成功,您可以尝试发送:

代码语言:javascript
复制
AT Z

服务器应响应"ELM327“和版本号。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10498747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档