我目前正在搜索WLAN协议的规范以获取OBDII数据。市场上有一些类似ELM327的适配器,可以让iPhone连接到WLAN的OBDII接口。这是因为蓝牙串口由于附件接口而被扰乱。其他程序如Torque for android也可以使用这种通信协议。但是我没有找到创建网络客户端的规范。
欢迎任何帮助,
由于
答案 0 :(得分:9)
好的,经过一些研究后,我找到了两个来源:
>
请求信息可以通过发送此格式的命令(ASCII字符)来完成:
MM PP\r
其中
MM
是测试模式,PP
是PID,\r
是回车符(十六进制:0x0d
)。新西兰人忽略了所有空白字符。 *测试模式03和04不需要PID值。
所说的“测试模式”是SAE J1979标准中定义的十种诊断模式:
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值是汽车中传感器的代码。 A(非详尽的)list of possible PID values is on Wikipedia。
答案 1 :(得分:1)
这里我在C和socket中做的事情:
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
答案 2 :(得分:0)
看看ELM327 datasheet Wifi加密狗将ELM327 RS232端口透明地绑定到TCP服务器。 确实没有WIFI协议。您可以通过原始TCP连接使用ELM327协议。
您可以使用telnet命令发送AT命令和称为PID的OBD2命令:
telnet 192.168.0.1 35000
成功连接后,您可以尝试发送:
AT Z
,服务器应返回“ ELM327”和版本号。