Да кстати у ходы тоже kwp2000. Мне много попадалось. Я тут просмотрел скетче и, ты поднял блок массива до 11 байт. Дело в том что когда я использовал твой первый пример с 9 байтами у меня возникла проблема читало температуру из восьмого байта, я пока допетрил в чем проблема, уменьшил массив до 6 байт и стало читать как положено с 5 го байта. Могу предположить что подняв массив до 11 байт, температура будет читается из 10 го байта. По ходу оно сносит ответ в конец массива, это моё предположение , завтра будет видно.
я не знаю зачем ты уменьшаешь массив, памяти чтоли жалко , пусть он будет 12, даже и то мало т.к. байтов бойльше летит - см. строку 23, там нолей не осталось, а идут FF значит блок может ещё какие то байты шлет, которые не лезут в массив 12. ну ладно фиг с ними. Не понятно почему он в большей части пустыми FF байтами отвечает. может заспросы слишком частые?
вот код, который записывает в переменную температуры только при правильном ответе на запрос температуры.
Еду за детьми. Чуть позже гляну. Уменьшают для спортивного интереса. Я во всем методом тыка и эксперимент пытаюсь выловить суть, механизм работы, что меняется, почему меняется и т.д. Позже гляну. Спасибо
короче на запрос о температуре действительно отвечает 6 байтами. Строка 23 в сообщении #64 первый скрытый код. Последний байт перед FF это 24, что является контрольной суммой предыдущих байт, значит это конец сообщения. ЭБУ почему то ставит перед сообщением три байта FF и после 2 или более FF. но лучше массив держать больше, чем сообщение от эбу, не чтобы уловить все FF, а чтобы не потерять нужные байты.
Кстати можно отправить запрос 82 11 F1 1 0 85 ответом должна быть инфа какие стандартные PIDы поддерживаются ЭБУ
Уважаемый MaksVV, про пиды уже давно знаю. Дело в том что я вцепился в стандартый пид температуры, так как получил результат и был доволен как слон, и меня зациклило. но на самом деле хочу другое. конечно можно будет потом со стандартыными пидами работать, но, я подцепился к k-line и подцепил OP-COM и начал наблюдать что он посылает. Он посылает
82 11 F1 21 01 A6
получает ответ(двигатель заглушен, при заведоенном меньше нолевых байт)
80F1114C61100000000C5E00C2000266000043E000032C839F429320E5620000CE5000092900C3BA0019000A98120001B4C3039E02A4
где 4С это длинна ответа 76(DEC) ,61 это положительный ответ, остальное байты инфы.
вот еще кусок нашел от опкома , то что он посылает. и никаких одиночных пидов
из ответа он вытягивает всю инфу, много инфы в ОПКОМе. думал что то еще будет посылать, а нет , только этот запрос и запрос присутствия. моя машина тоже отвечает через адаптер на этот запрос так же. многие пишут что у них например 10 или одинадатый байт от байта 61(что есть положительным ответом) это температура, увы не в моем случае. не знаю как разобратся в этоих пидах, за что каждый отвечает, вот пока и вцепился в стандарт. Затупил полностью, не знаю что делать. не хочется тебе голову морочить и потом спрыгнуть на запрос 21 01 и опять морочить голову. Просто пытаюсь разобраться как это работает. Вот такие вот пироги.
ок. значит продолжаю юзать нашу тему. завтра попробую последнее из твоего 65 поста. и начну искать все возможные стандартные пиды. гланое понять, как давать столько отдельных запросов(пидов) и потом выводить инфу из конкретного запроса конкретного пида.
вот скетч с запросами на разные PIDы . только медленно запрашивает, надо будет задержки уменьшать, а то медоленно данные будут обновляться. ну и раз у тебя дизель, часть запросов не актуально
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); //R,T
#define TX 11
int mode;
//variables
int dotdelay = 1000;
int timeout = 1000;
int timeold;
int pid =6; //очередность запросов PID
int messagelength2 = 5;
int messagelength3 = 6;
int k=0;
byte inbyte=0;
int Temp = 0; // температура
byte MessageRx[12] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; // массив байтов принимаемого сообщения
byte message1 = 0x81;
byte message2 = 0x11;
byte message3 = 0xF1;
byte message4 = 0x81;
byte message5 = 0x04;
byte message0[5] = {0x81,0x11,0xF1,0x3E,0xC1};
byte message6[6] = {0x82,0x11,0xF1,0x01,0x05,0x8A}; // запрос температуры
byte message7[6] = {0x82,0x11,0xF1,0x01,0x0C,0x91}; // запрос оборотов ДВС
byte message8[6] = {0x82,0x11,0xF1,0x01,0x04,0x89}; // запрос нагрузки на ДВС
byte message9[6] = {0x82,0x11,0xF1,0x01,0x06,0x8B}; // запрос кратковременная топливная коррекция
byte message10[6]= {0x82,0x11,0xF1,0x01,0x07,0x8C}; // запрос долговременная топливная коррекция
byte message11[6] = {0x82,0x11,0xF1,0x01,0x0B,0x90}; // запрос абсолютное давление во впускном коллекторе (MAP)
byte message12[6] = {0x82,0x11,0xF1,0x01,0x0D,0x92}; // запрос скорости а/м
byte message13[6] = {0x82,0x11,0xF1,0x01,0x0E,0x90}; // запрос УОЗ
byte message14[6] = {0x82,0x11,0xF1,0x01,0x0F,0x94}; // запрос температура впускного воздуха
byte message15[6] = {0x82,0x11,0xF1,0x01,0x10,0x95}; // запрос массовый расход воздуха, г/cек
byte message16[6] = {0x82,0x11,0xF1,0x01,0x11,0x96}; // запрос положения педали газа, %
byte message17[6] = {0x82,0x11,0xF1,0x01,0x14,0x99}; // запрос вольтаж датчика кислорода №1 + короткая коррекция
byte message18[6] = {0x82,0x11,0xF1,0x01,0x15,0x9A}; // запрос вольтаж датчика кислорода №2 + короткая коррекция
byte message19[6] = {0x82,0x11,0xF1,0x01,0x59,0xDE}; // запрос давление в топливном коллекторе
byte message20[6] = {0x82,0x11,0xF1,0x01,0x5D,0xE2}; // запрос время впрыска, мс
byte message21[6] = {0x82,0x11,0xF1,0x01,0x5E,0xE3}; // запрос расход топлива, л/ч
void setup() {
Serial.begin(115200);
pinMode(TX, OUTPUT);
}
void loop() {
fastinit();
Serial.print ("Transmit: ");
mySerial.write (message1);
Serial.print(message1,HEX);
delay(5);
mySerial.write(message2);
Serial.print(message2,HEX);
delay(5);
mySerial.write(message3);
Serial.print(message3,HEX);
delay(5);
mySerial.write(message4);
Serial.print(message4,HEX);
delay(5);
mySerial.write(message5);
Serial.print(message5,HEX);
delay(5);
delay(50);
Serial.println("");
Serial.println("FAST INIT OK");
Serial.println("");
recievedata();
}
void fastinit(){
if (!mode) {
Serial.println("starting comunication (fastinit)");
digitalWrite (TX, HIGH); // makes K-line high 3
delay(360); // wait for K-line to be clear 3
digitalWrite (TX, LOW); // makes K-line low 3
delay(25);
digitalWrite (TX, HIGH); // makes K-line high 3
delay(25); //last delay before first message
mySerial.begin(10400); // baud rate of the OBD
Serial.println("starting serial comunication");
mode++;
}
}
//---------------------------------------------------------------------
void PIDs() {
if (pid==6){
Serial.print ("Zapros Temp: ");
for (int i = 0; ((i < messagelength3 ) & (mode == 1)); i++) {
mySerial.write(message6[i]);
Serial.print(message6[i],HEX); Serial.print (" ");
}
Serial.println("");}
if (pid==7){
Serial.print ("Zapros RPM: ");
for (int i = 0; ((i < messagelength3 ) & (mode == 1)); i++) {
mySerial.write(message7[i]);
Serial.print(message7[i],HEX); Serial.print (" ");
}
Serial.println("");}
if (pid==8){
Serial.print ("Zapros Load: ");
for (int i = 0; ((i < messagelength3 ) & (mode == 1)); i++) {
mySerial.write(message8[i]);
Serial.print(message8[i],HEX); Serial.print (" ");
}
Serial.println("");}
if (pid==9){
Serial.print ("Zapros Short correction: ");
for (int i = 0; ((i < messagelength3 ) & (mode == 1)); i++) {
mySerial.write(message9[i]);
Serial.print(message9[i],HEX); Serial.print (" ");
}
Serial.println("");}
if (pid==10){
Serial.print ("Zapros Long correction: ");
for (int i = 0; ((i < messagelength3 ) & (mode == 1)); i++) {
mySerial.write(message10[i]);
Serial.print(message10[i],HEX); Serial.print (" ");
}
Serial.println("");}
if (pid==11){
Serial.print ("Zapros MAP: ");
for (int i = 0; ((i < messagelength3 ) & (mode == 1)); i++) {
mySerial.write(message11[i]);
Serial.print(message11[i],HEX); Serial.print (" ");
}
Serial.println("");}
if (pid==12){
Serial.print ("Zapros Speed: ");
for (int i = 0; ((i < messagelength3 ) & (mode == 1)); i++) {
mySerial.write(message12[i]);
Serial.print(message12[i],HEX); Serial.print (" ");
}
Serial.println("");}
if (pid==13){
Serial.print ("Zapros UOZ: ");
for (int i = 0; ((i < messagelength3 ) & (mode == 1)); i++) {
mySerial.write(message13[i]);
Serial.print(message13[i],HEX); Serial.print (" ");
}
Serial.println("");}
if (pid==14){
Serial.print ("Zapros Intake Air Temp: ");
for (int i = 0; ((i < messagelength3 ) & (mode == 1)); i++) {
mySerial.write(message14[i]);
Serial.print(message14[i],HEX); Serial.print (" ");
}
Serial.println("");}
if (pid==15){
Serial.print ("Zapros MAF: ");
for (int i = 0; ((i < messagelength3 ) & (mode == 1)); i++) {
mySerial.write(message15[i]);
Serial.print(message15[i],HEX); Serial.print (" ");
}
Serial.println("");}
if (pid==16){
Serial.print ("Zapros O2N1: ");
for (int i = 0; ((i < messagelength3 ) & (mode == 1)); i++) {
mySerial.write(message16[i]);
Serial.print(message16[i],HEX); Serial.print (" ");
}
Serial.println("");}
if (pid==17){
Serial.print ("Zapros O2N2: ");
for (int i = 0; ((i < messagelength3 ) & (mode == 1)); i++) {
mySerial.write(message17[i]);
Serial.print(message17[i],HEX); Serial.print (" ");
}
Serial.println("");}
if (pid==18){
Serial.print ("Zapros Pressure Fuel: ");
for (int i = 0; ((i < messagelength3 ) & (mode == 1)); i++) {
mySerial.write(message18[i]);
Serial.print(message18[i],HEX); Serial.print (" ");
}
Serial.println("");}
if (pid==19){
Serial.print ("Zapros Inj Time: ");
for (int i = 0; ((i < messagelength3 ) & (mode == 1)); i++) {
mySerial.write(message19[i]);
Serial.print(message19[i],HEX); Serial.print (" ");
}
Serial.println("");}
if (pid==20){
Serial.print ("Zapros rashod Fuel: ");
for (int i = 0; ((i < messagelength3 ) & (mode == 1)); i++) {
mySerial.write(message20[i]);
Serial.print(message20[i],HEX); Serial.print (" ");
}
Serial.println("");}
if (pid==21){
Serial.print ("Transmit Zapros Temp: ");
for (int i = 0; ((i < messagelength3 ) & (mode == 1)); i++) {
mySerial.write(message21[i]);
Serial.print(message21[i],HEX); Serial.print (" ");
}
Serial.println("");}
pid++;
if (pid>21) pid = 6;
}
void present() {
Serial.print ("Zapros prisutstviya: ");
for (int i = 0; ((i < messagelength2) & (mode == 1)); i++) {
mySerial.write(message0[i]);
Serial.print(message0[i],HEX); Serial.print (" ");
}
Serial.println("");
}
void recievedata() {
present();
delay(55);
int i = 0;
int dataok = 0;
// Serial.println(" waiting for data");
while (!dataok) {
int time = millis();
if ((timeold + timeout) < time) {
timeold = time;
// Serial.println(" TIMEOUT");
PIDs();
delay(55);
recievedata();
return;
}
if (mySerial.available()) {
delay(100);
k=0;
inbyte=0;
while( mySerial.available() && k < 14) {
inbyte = mySerial.read();
k++;
if (k==1 )MessageRx[0] = inbyte;
if (k==2 ) MessageRx[1] = inbyte;
if (k==3 ) MessageRx[2] = inbyte;
if (k==4 ) MessageRx[3] = inbyte;
if (k==5 ) MessageRx[4] = inbyte;
if (k==6 ) MessageRx[5] = inbyte;
if (k==7 ) MessageRx[6] = inbyte;
if (k==8 ) MessageRx[7] = inbyte;
if (k==9 ) MessageRx[8] = inbyte;
if (k==10 ) MessageRx[9] = inbyte;
if (k==11 ) MessageRx[10] = inbyte;
if (k==12 ) MessageRx[11] = inbyte;
}
if (MessageRx[5]==0x11 && MessageRx[6]==0x41 && MessageRx[7]==0x05) Temp = MessageRx[8]-40;
Serial.print (" Recieve: ");
Serial.print (MessageRx[0], HEX) ;
Serial.print (" ") ;
Serial.print (MessageRx[1], HEX) ;
Serial.print (" ") ;
Serial.print (MessageRx[2], HEX) ;
Serial.print (" ") ;
Serial.print (MessageRx[3], HEX) ;
Serial.print (" ") ;
Serial.print (MessageRx[4], HEX) ;
Serial.print (" ") ;
Serial.print (MessageRx[5], HEX) ;
Serial.print (" ") ;
Serial.print (MessageRx[6], HEX) ;
Serial.print (" ") ;
Serial.print (MessageRx[7], HEX) ;
Serial.print (" ") ;
Serial.print (MessageRx[8], HEX) ;
Serial.print (" ") ;
Serial.print (MessageRx[9], HEX) ;
Serial.print (" ") ;
Serial.print (MessageRx[10], HEX) ;
Serial.print (" ") ;
Serial.println (MessageRx[11], HEX) ;
Serial.print ("Temperature: ");
Serial.print (Temp);
Serial.println ("*C");
MessageRx[0] =0; MessageRx[1] =0; MessageRx[2] =0; MessageRx[3] =0;
MessageRx[4] =0; MessageRx[5] =0; MessageRx[6] =0; MessageRx[7] =0;
MessageRx[8] =0; MessageRx[9] =0; MessageRx[10] =0; MessageRx[11] =0;
}
}
}
Просто круть. Я как раз думал как бы написать скетч для пробы пинов, на подобе что я написал в прежних постах на проверку адресов ебу. завтра посмотрим.
Скетч из поста 65 где ответчает только если правельный ответ на температура, вадает вот это , 9 раз выдал 0*C а потом коректно. По сути выполняет то что ты ему приказал.
starting comunication (fastinit)
starting serial comunication
Transmit: 8111F1814
FAST INIT OK
Transmit: 81 11 F1 3E C1
Recieve: FF FF 83 F1 11 C1 6B 8F 40 FF FF 0
Temperature: 0*C
Transmit: 82 11 F1 1 5 8A
Transmit: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 0*C
Transmit: 82 11 F1 1 5 8A
Transmit: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 0*C
Transmit: 82 11 F1 1 5 8A
Transmit: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 0*C
Transmit: 82 11 F1 1 5 8A
Transmit: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 0*C
Transmit: 82 11 F1 1 5 8A
Transmit: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 0*C
Transmit: 82 11 F1 1 5 8A
Transmit: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 0*C
Transmit: 82 11 F1 1 5 8A
Transmit: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 0*C
Transmit: 82 11 F1 1 5 8A
Transmit: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 0*C
Transmit: 82 11 F1 1 5 8A
Transmit: 81 11 F1 3E C1
Recieve: FF FF FF 83 F1 11 41 5 59 24 FF FF
Temperature: 49*C
Transmit: 82 11 F1 1 5 8A
Transmit: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Transmit: 82 11 F1 1 5 8A
Transmit: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Transmit: 82 11 F1 1 5 8A
Transmit: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Transmit: 82 11 F1 1 5 8A
Transmit: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Transmit: 82 11 F1 1 5 8A
Transmit: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Transmit: 82 11 F1 1 5 8A
Transmit: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Transmit: 82 11 F1 1 5 8A
Transmit: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Transmit: 82 11 F1 1 5 8A
Transmit: 81 11 F1 3E C1
Recieve: FF FF FF 83 F1 11 41 5 59 24 FF FF
Temperature: 49*C
Transmit: 82 11 F1 1 5 8A
Transmit: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Transmit: 82 11 F1 1 5 8A
Transmit: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Transmit: 82 11 F1 1 5 8A
Transmit: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Transmit: 82 11 F1 1 5 8A
Transmit: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Transmit: 82 11 F1 1 5 8A
Transmit: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Transmit: 82 11 F1 1 5 8A
Transmit: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Transmit: 82 11 F1 1 5 8A
Transmit: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Transmit: 82 11 F1 1 5 8A
Transmit: 81 11 F1 3E C1
Recieve: FF FF FF 83 F1 11 41 5 59 24 FF FF
Temperature: 49*C
И ТАК ДАЛЕЕ...........................................
На последний скетч для проверки пидов , получаем это . гдето на 18 ответе начал показывать температуру.
starting comunication (fastinit)
starting serial comunication
Transmit: 8111F1814
FAST INIT OK
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF 83 F1 11 C1 6B 8F 40 FF FF 0
Temperature: 0*C
Zapros Temp: 82 11 F1 1 5 8A
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 0*C
Zapros RPM: 82 11 F1 1 C 91
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 0*C
Zapros Load: 82 11 F1 1 4 89
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 0*C
Zapros Short correction: 82 11 F1 1 6 8B
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 0*C
Zapros Long correction: 82 11 F1 1 7 8C
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 0*C
Zapros MAP: 82 11 F1 1 B 90
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 0*C
Zapros Speed: 82 11 F1 1 D 92
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 0*C
Zapros UOZ: 82 11 F1 1 E 90
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 0*C
Zapros Intake Air Temp: 82 11 F1 1 F 94
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 0*C
Zapros MAF: 82 11 F1 1 10 95
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 0*C
Zapros O2N1: 82 11 F1 1 11 96
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF 83 F1 11 41 11 0 D7 FF FF
Temperature: 0*C
Zapros O2N2: 82 11 F1 1 14 99
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 0*C
Zapros Pressure Fuel: 82 11 F1 1 15 9A
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 0*C
Zapros Inj Time: 82 11 F1 1 59 DE
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 0*C
Zapros rashod Fuel: 82 11 F1 1 5D E2
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF 83 F1 11 7F 1 12 17 FF FF
Temperature: 0*C
Transmit Zapros Temp: 82 11 F1 1 5E E3
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 0*C
Zapros Temp: 82 11 F1 1 5 8A
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF 83 F1 11 41 5 59 24 FF FF
Temperature: 49*C
Zapros RPM: 82 11 F1 1 C 91
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Load: 82 11 F1 1 4 89
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Short correction: 82 11 F1 1 6 8B
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Long correction: 82 11 F1 1 7 8C
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros MAP: 82 11 F1 1 B 90
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Speed: 82 11 F1 1 D 92
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros UOZ: 82 11 F1 1 E 90
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Intake Air Temp: 82 11 F1 1 F 94
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros MAF: 82 11 F1 1 10 95
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros O2N1: 82 11 F1 1 11 96
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros O2N2: 82 11 F1 1 14 99
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Pressure Fuel: 82 11 F1 1 15 9A
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Inj Time: 82 11 F1 1 59 DE
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros rashod Fuel: 82 11 F1 1 5D E2
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Transmit Zapros Temp: 82 11 F1 1 5E E3
Zapros prisutstviya: 81 11 F1 3E C1
Zapros Temp: 82 11 F1 1 5 8A
Zapros prisutstviya: 81 11 F1 3E C1
Zapros RPM: 82 11 F1 1 C 91
Zapros prisutstviya: 81 11 F1 3E C1
Zapros Load: 82 11 F1 1 4 89
Zapros prisutstviya: 81 11 F1 3E C1
Zapros Short correction: 82 11 F1 1 6 8B
Zapros prisutstviya: 81 11 F1 3E C1
Zapros Long correction: 82 11 F1 1 7 8C
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF FF FF FF FF FF FF FF
Temperature: 49*C
Recieve: FF FF FF FF FF FF FF FF FF FF FF FF
Temperature: 49*C
Recieve: FF FF 0 0 0 0 0 0 0 0 0 0
Temperature: 49*C
Zapros MAP: 82 11 F1 1 B 90
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Speed: 82 11 F1 1 D 92
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros UOZ: 82 11 F1 1 E 90
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Intake Air Temp: 82 11 F1 1 F 94
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros MAF: 82 11 F1 1 10 95
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros O2N1: 82 11 F1 1 11 96
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros O2N2: 82 11 F1 1 14 99
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Pressure Fuel: 82 11 F1 1 15 9A
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Inj Time: 82 11 F1 1 59 DE
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros rashod Fuel: 82 11 F1 1 5D E2
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Transmit Zapros Temp: 82 11 F1 1 5E E3
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Temp: 82 11 F1 1 5 8A
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros RPM: 82 11 F1 1 C 91
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Load: 82 11 F1 1 4 89
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Short correction: 82 11 F1 1 6 8B
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Long correction: 82 11 F1 1 7 8C
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros MAP: 82 11 F1 1 B 90
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Speed: 82 11 F1 1 D 92
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros UOZ: 82 11 F1 1 E 90
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Intake Air Temp: 82 11 F1 1 F 94
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF 83 F1 11 41 F 56 2B FF FF
Temperature: 49*C
Zapros MAF: 82 11 F1 1 10 95
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros O2N1: 82 11 F1 1 11 96
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros O2N2: 82 11 F1 1 14 99
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Pressure Fuel: 82 11 F1 1 15 9A
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Inj Time: 82 11 F1 1 59 DE
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros rashod Fuel: 82 11 F1 1 5D E2
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Transmit Zapros Temp: 82 11 F1 1 5E E3
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Temp: 82 11 F1 1 5 8A
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros RPM: 82 11 F1 1 C 91
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF 84 F1 11 41 C 0 0 D3 FF
Temperature: 49*C
Zapros Load: 82 11 F1 1 4 89
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Short correction: 82 11 F1 1 6 8B
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF 83 F1 11 7F 1 12 17 FF FF
Temperature: 49*C
Zapros Long correction: 82 11 F1 1 7 8C
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros MAP: 82 11 F1 1 B 90
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF 83 F1 11 41 B 6C 3D FF FF
Temperature: 49*C
Zapros Speed: 82 11 F1 1 D 92
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros UOZ: 82 11 F1 1 E 90
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF 83 F1 11 7F 1 12 17 FF FF
Temperature: 49*C
Zapros Intake Air Temp: 82 11 F1 1 F 94
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros MAF: 82 11 F1 1 10 95
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF 84 F1 11 41 10 7F FF 55 FF
Temperature: 49*C
Zapros O2N1: 82 11 F1 1 11 96
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros O2N2: 82 11 F1 1 14 99
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF 83 F1 11 7F 1 12 17 FF FF
Temperature: 49*C
Zapros Pressure Fuel: 82 11 F1 1 15 9A
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Inj Time: 82 11 F1 1 59 DE
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF 83 F1 11 7F 1 12 17 FF FF
Temperature: 49*C
Zapros rashod Fuel: 82 11 F1 1 5D E2
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Transmit Zapros Temp: 82 11 F1 1 5E E3
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF 83 F1 11 7F 1 12 17 FF FF
Temperature: 49*C
Zapros Temp: 82 11 F1 1 5 8A
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros RPM: 82 11 F1 1 C 91
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Load: 82 11 F1 1 4 89
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Short correction: 82 11 F1 1 6 8B
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Long correction: 82 11 F1 1 7 8C
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros MAP: 82 11 F1 1 B 90
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Speed: 82 11 F1 1 D 92
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros UOZ: 82 11 F1 1 E 90
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Intake Air Temp: 82 11 F1 1 F 94
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros MAF: 82 11 F1 1 10 95
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros O2N1: 82 11 F1 1 11 96
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros O2N2: 82 11 F1 1 14 99
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Pressure Fuel: 82 11 F1 1 15 9A
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Inj Time: 82 11 F1 1 59 DE
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros rashod Fuel: 82 11 F1 1 5D E2
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Transmit Zapros Temp: 82 11 F1 1 5E E3
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Temp: 82 11 F1 1 5 8A
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF 83 F1 11 41 5 59 24 FF FF
Temperature: 49*C
Zapros RPM: 82 11 F1 1 C 91
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Load: 82 11 F1 1 4 89
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF 83 F1 11 41 4 0 CA FF FF
Temperature: 49*C
Zapros Short correction: 82 11 F1 1 6 8B
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Long correction: 82 11 F1 1 7 8C
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros MAP: 82 11 F1 1 B 90
Zapros prisutstviya: 81 11 F1 3E C1
Zapros Speed: 82 11 F1 1 D 92
Zapros prisutstviya: 81 11 F1 3E C1
Zapros UOZ: 82 11 F1 1 E 90
Zapros prisutstviya: 81 11 F1 3E C1
Zapros Intake Air Temp: 82 11 F1 1 F 94
Zapros prisutstviya: 81 11 F1 3E C1
Zapros MAF: 82 11 F1 1 10 95
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF FF FF FF 83 F1 11 41
Temperature: 49*C
Recieve: D3 FF FF FF FF FF FF FF FF FF FF FF
Temperature: 49*C
Recieve: FF FF FF FF 0 0 0 0 0 0 0 0
Temperature: 49*C
Zapros O2N1: 82 11 F1 1 11 96
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros O2N2: 82 11 F1 1 14 99
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Pressure Fuel: 82 11 F1 1 15 9A
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Inj Time: 82 11 F1 1 59 DE
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros rashod Fuel: 82 11 F1 1 5D E2
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Transmit Zapros Temp: 82 11 F1 1 5E E3
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Temp: 82 11 F1 1 5 8A
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros RPM: 82 11 F1 1 C 91
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Load: 82 11 F1 1 4 89
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF 83 F1 11 41 4 0 CA FF FF
Temperature: 49*C
Zapros Short correction: 82 11 F1 1 6 8B
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Long correction: 82 11 F1 1 7 8C
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros MAP: 82 11 F1 1 B 90
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros Speed: 82 11 F1 1 D 92
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Zapros UOZ: 82 11 F1 1 E 90
Zapros prisutstviya: 81 11 F1 3E C1
Recieve: FF FF FF FF FF 0 0 0 0 0 0 0
Temperature: 49*C
Пиды которые ответили это 05, 0C, 04, 0B, 0D, 0F, 10, 11. Остальные либо нули либо 7F (что значит не потдерживается). Понятно что нужно перебирать и искать пиды для дизеля.
Так же выставил int timeout = 200; было 1000 , обновляется быстрее.
Еще одно, запросил пид 01 00 (потдержка пидов) получил это FF FF FF 86 F1 11 41 00 98 3A 80 00 1B FF FF, Что значит такой ответ? Как я понял надо переложить в BIN -98 3A 80 00 что рано 1001 1000 0011 1010 1000 0000 0000 0000, и из этого люди понимаю потдерживаемые пиды, как? ищу дальше.....
Как это подчитать я так и не понял но с программой EOBD-Facile software .. по номеру 98 3A 80 00 мен выдало пиды 01, 05, 0C, 04, 0B, 0D, 0F, 11, моловато будет. Заказал ЕЛМ подключу и прослушаю К-линию.
Ладно с пидами разберусь. Щас главно научится это все правильно выводить и пересчитывать.
Нашкрябал скетч с пидами которые мен отвечали. Проблема в том что очень редко получает ответы в основном все в нулях, а потм гдето когдато раз и получил на один из пидов, потом сново нули. Вот что как он отвечает, видно что гдето он поймал один пид, позже другой , третий и т.д но через долгое время. Он держит эти ответы пока сново не поймайт ответ и меняет замороженый ответ, это видно например по оборотам было 799 и только черз долгое время он получил второй ответ и изменил на 1110 и дальше держит пока не поймает. Вот как то так.
ще одно, запросил пид 01 00 (потдержка пидов) получил это FF FF FF 86 F1 11 41 00 98 3A 80 00 1B FF FF, Что значит такой ответ? Как я понял надо переложить в BIN -98 3A 80 00 что рано 1001 1000 0011 1010 1000 0000 0000 0000, и из этого люди понимаю потдерживаемые пиды, как? ищу дальше.....
Как это подчитать я так и не понял но с программой EOBD-Facile software .. по номеру 98 3A 80 00 мен выдало пиды 01, 05, 0C, 04, 0B, 0D, 0F, 11, моловато будет. Заказал ЕЛМ подключу и прослушаю К-линию.
Всё правильно по поддерживаемым пидам программа выдала. Там в бинарном виде биты от 1 до 32 (название каждого бита по порядку от 1 до 32 надо в hex перевести). единички это поддерживаемые. как раз всё сходится. Но у каждого автопроизводителя есть нестандартные пиды, так сказать дополнительные. Вот тебе и надо как то их найти, чтоб больше инфы выдавало.
сижу эксперементирую. щас и два раза попробую. Интересно то что когда подменил присутсвие на обороты, часто получал данные оборотв, а вот просто дописал температуру так же как и присутсвие, то ответаы не дает. буду думать
Не помогло. вообще не отвечает на пиды, только иногда на присутсвие и inttimeout = 200; на 100 не канает минимуи 200 а то и чуток больше. Блин, есть чтото в это присутсвии что оно чаще отвечает чем все вместе.
предлагаю такой скетч. Он простой, снчала инит, потом в лупе запросы посылаются с регулируемой задержкой. Задержка задается в начале скетча - типа TempTime в милисек. И играешься с разными задержками presenta и PID
буду работать над ним дальше. толи мозки не успевают отвечать , толи с запросами и ответами лажа. Думаю мозги тут не причем, ведь с прогами они выдают моментально все параметры. Где же собака порылась?
мне кажется запрос присутствия ему не нужен. Надо попробовать отсылать запрос ПИДа и ждать, но не все время конечно, секунду например, потом повторно запрос отправлять. Вот если ждать после запроса, скорее всего он правильно ответит.
этот скетч шлет present раз в 5 сек. и отсылает запрос температуры, если блок правильно отвечает запрос повторяется через 250 мс, если ответа нет ожидание 500мс, потом опять запрос температуры. Задержка на ожидание правильного ответа задается в начале скетча
да это понятно, пока разбраешься лучше видеть всё сообщение, все байты, потом уберешь
в сообщении #49 я не прав, нужно после циклов for добавить Serial.println("");
и надо наверное задержку между запросами какуюто сделать, в предыдущем коде был же какойто там таймаут. А тут стреляет без перерыва
понял. щас подкоректирую.
вроде вернул все на место и подправил по твоим заменчаниям .вот скетч
руский не воспринимает Температура уже заменил на Temp: вот что он выдает в порту
дальше идет как последний ответ
да забыл в строчке
if
(k==9 ) MessageRx[5] = inbyte; если поставить к==6 то перестает коректно читать показывает 205 градусов. а с 9 работает нормально
попробуй так
Завтра попробую. Машину уже оставил. Спасибо. Завтра отпишусь.
а лучше так
Щас по изучаю без машины. Завтра испытал.
блин я там в конце mySerial на Serial поменял (там три раза надо), это чтоб без машины тестировать, с сериала вместо ЭБУ данные на дуню кидать.
вот с mySerial
надеюсь у хонды тоже kwp2000, проще будет
Да кстати у ходы тоже kwp2000. Мне много попадалось. Я тут просмотрел скетче и, ты поднял блок массива до 11 байт. Дело в том что когда я использовал твой первый пример с 9 байтами у меня возникла проблема читало температуру из восьмого байта, я пока допетрил в чем проблема, уменьшил массив до 6 байт и стало читать как положено с 5 го байта. Могу предположить что подняв массив до 11 байт, температура будет читается из 10 го байта. По ходу оно сносит ответ в конец массива, это моё предположение , завтра будет видно.
да пофиг пока на температуру, нам главное все байты увидеть, какие он шлет в ответе
Понял. Принял. Исправлюсь.
И так. закинул последний твой скетч и вот что он выдает
уменьшил массив до 7 байт и в нижней части скетча тоже все урезал до 0-6 байт, ради эксперемента, вот что получаем
я не знаю зачем ты уменьшаешь массив, памяти чтоли жалко , пусть он будет 12, даже и то мало т.к. байтов бойльше летит - см. строку 23, там нолей не осталось, а идут FF значит блок может ещё какие то байты шлет, которые не лезут в массив 12. ну ладно фиг с ними. Не понятно почему он в большей части пустыми FF байтами отвечает. может заспросы слишком частые?
вот код, который записывает в переменную температуры только при правильном ответе на запрос температуры.
Еду за детьми. Чуть позже гляну. Уменьшают для спортивного интереса. Я во всем методом тыка и эксперимент пытаюсь выловить суть, механизм работы, что меняется, почему меняется и т.д. Позже гляну. Спасибо
короче на запрос о температуре действительно отвечает 6 байтами. Строка 23 в сообщении #64 первый скрытый код. Последний байт перед FF это 24, что является контрольной суммой предыдущих байт, значит это конец сообщения. ЭБУ почему то ставит перед сообщением три байта FF и после 2 или более FF. но лучше массив держать больше, чем сообщение от эбу, не чтобы уловить все FF, а чтобы не потерять нужные байты.
Кстати можно отправить запрос 82 11 F1 1 0 85 ответом должна быть инфа какие стандартные PIDы поддерживаются ЭБУ
http://elm-scanner.ru/obd-2/obd-pids
https://en.wikipedia.org/wiki/OBD-II_PIDs
Уважаемый MaksVV, про пиды уже давно знаю. Дело в том что я вцепился в стандартый пид температуры, так как получил результат и был доволен как слон, и меня зациклило. но на самом деле хочу другое. конечно можно будет потом со стандартыными пидами работать, но, я подцепился к k-line и подцепил OP-COM и начал наблюдать что он посылает. Он посылает
82 11 F1 21 01 A6
получает ответ(двигатель заглушен, при заведоенном меньше нолевых байт)
80F1114C61100000000C5E00C2000266000043E000032C839F429320E5620000CE5000092900C3BA0019000A98120001B4C3039E02A4
где 4С это длинна ответа 76(DEC) ,61 это положительный ответ, остальное байты инфы.
вот еще кусок нашел от опкома , то что он посылает. и никаких одиночных пидов
OP-COM ADDRESS 11
81 11 F1 81 04 //COMUNICACION// 83 F1 11 C1 6B 8F 40
82 11 F1 1A 81 1F //IDENTIFICACION// A8 F1 11 5A 81 49 00 6F 62 39 16 B3 92 6B 39 31 39 46 A3 95 23 96 66 39 76 93 98 6A 39 94 43 9A 23 9F 6A FF AC
82 11 F1 1A 80 1E //IDENTIFICACION// 80 F1 11 5F 5A 80 57 30 4C 30 54 47 46 37 35 31 32 32 33 33 37 31 34 32 34 34 31 37 31 36 39 20 50 44 42 4F 53 20 20 30 31 30 35 30 35 FF 4B 4D 37 4D 33 30 34 30 5F 53 06 42 30 31 30 31 35 59 32 30 44 54 48 20 44 33 53 30 30 31 30 30 36 39 34 30 20 77 25 54 83 03 23 83 13 03 13 03 23 63 08 FF
82 11 F1 21 01 A6 //DATOS// 80 F1 11 4C 61 01 0C 9D 0C 48 02 6A 04 41 32 C8 03 9F 04 29 03 20 E5 62 0D E4 09 02 0C 8E A0 01 90 AD 08 01 20 01 A3 0C 54 03 9F 02 56
81 11 F1 3E C1 //PRESENTS// 81 F1 11 7E 01
81 11 F1 82 05 //FIN COMUNICACION// 81 F1 11 C2 45
из ответа он вытягивает всю инфу, много инфы в ОПКОМе. думал что то еще будет посылать, а нет , только этот запрос и запрос присутствия. моя машина тоже отвечает через адаптер на этот запрос так же. многие пишут что у них например 10 или одинадатый байт от байта 61(что есть положительным ответом) это температура, увы не в моем случае. не знаю как разобратся в этоих пидах, за что каждый отвечает, вот пока и вцепился в стандарт. Затупил полностью, не знаю что делать. не хочется тебе голову морочить и потом спрыгнуть на запрос 21 01 и опять морочить голову. Просто пытаюсь разобраться как это работает. Вот такие вот пироги.
не цепляйся за опком, он использует не стандартные PIDы OBD2 в которых сложно разобраться. Лучше идти по пути стандарта obd2 по стандартным пидам.
ок. значит продолжаю юзать нашу тему. завтра попробую последнее из твоего 65 поста. и начну искать все возможные стандартные пиды. гланое понять, как давать столько отдельных запросов(пидов) и потом выводить инфу из конкретного запроса конкретного пида.
вот скетч с запросами на разные PIDы . только медленно запрашивает, надо будет задержки уменьшать, а то медоленно данные будут обновляться. ну и раз у тебя дизель, часть запросов не актуально
Просто круть. Я как раз думал как бы написать скетч для пробы пинов, на подобе что я написал в прежних постах на проверку адресов ебу. завтра посмотрим.
Скетч из поста 65 где ответчает только если правельный ответ на температура, вадает вот это , 9 раз выдал 0*C а потом коректно. По сути выполняет то что ты ему приказал.
На последний скетч для проверки пидов , получаем это . гдето на 18 ответе начал показывать температуру.
Пиды которые ответили это 05, 0C, 04, 0B, 0D, 0F, 10, 11. Остальные либо нули либо 7F (что значит не потдерживается). Понятно что нужно перебирать и искать пиды для дизеля.
Так же выставил int timeout = 200; было 1000 , обновляется быстрее.
Еще одно, запросил пид 01 00 (потдержка пидов) получил это FF FF FF 86 F1 11 41 00 98 3A 80 00 1B FF FF, Что значит такой ответ? Как я понял надо переложить в BIN -98 3A 80 00 что рано 1001 1000 0011 1010 1000 0000 0000 0000, и из этого люди понимаю потдерживаемые пиды, как? ищу дальше.....
Как это подчитать я так и не понял но с программой EOBD-Facile software .. по номеру 98 3A 80 00 мен выдало пиды 01, 05, 0C, 04, 0B, 0D, 0F, 11, моловато будет. Заказал ЕЛМ подключу и прослушаю К-линию.
Ладно с пидами разберусь. Щас главно научится это все правильно выводить и пересчитывать.
Нашкрябал скетч с пидами которые мен отвечали. Проблема в том что очень редко получает ответы в основном все в нулях, а потм гдето когдато раз и получил на один из пидов, потом сново нули. Вот что как он отвечает, видно что гдето он поймал один пид, позже другой , третий и т.д но через долгое время. Он держит эти ответы пока сново не поймайт ответ и меняет замороженый ответ, это видно например по оборотам было 799 и только черз долгое время он получил второй ответ и изменил на 1110 и дальше держит пока не поймает. Вот как то так.
а вот сам скетч.
ще одно, запросил пид 01 00 (потдержка пидов) получил это FF FF FF 86 F1 11 41 00 98 3A 80 00 1B FF FF, Что значит такой ответ? Как я понял надо переложить в BIN -98 3A 80 00 что рано 1001 1000 0011 1010 1000 0000 0000 0000, и из этого люди понимаю потдерживаемые пиды, как? ищу дальше.....
Как это подчитать я так и не понял но с программой EOBD-Facile software .. по номеру 98 3A 80 00 мен выдало пиды 01, 05, 0C, 04, 0B, 0D, 0F, 11, моловато будет. Заказал ЕЛМ подключу и прослушаю К-линию.
Всё правильно по поддерживаемым пидам программа выдала. Там в бинарном виде биты от 1 до 32 (название каждого бита по порядку от 1 до 32 надо в hex перевести). единички это поддерживаемые. как раз всё сходится. Но у каждого автопроизводителя есть нестандартные пиды, так сказать дополнительные. Вот тебе и надо как то их найти, чтоб больше инфы выдавало.
А так то гуд. есть результат.
Привет. Рад слышать тебя. С пидами разберусь. Глянь выше пост я кое что дописал. Что скажешь?
хз, может нужно ждат ответа и только потом следующий пид просить, а так он не успевает ответить и в шине каша.
я тоже так думаю. пробовал дать вот так
не помогает. извени , вьехал . надо запрос- ответ запрос- ответ. щас подумаю
может там косяк с сообщением о присутствии, попробуй убрать его
Как раз на присутсвие он получает ответ чаще чем все пиды вместе. Надо эксперемент провести, на место присутсвия другой пид. щас попробую
нет, он же редко выдавал правильный ответ и в скетче, где была только температура
нужно вариант попробовать где ты скетч передалал и там запросы валились с большой скоростью
я просто int timeout = 1000; сделал на 200. щас попробую так и с заменой присутсвия
Заменил пресент на обороты и ты глянь че делает,
Надо искать отличия в пресенте и повторить его для пидов. конечно еще не мгновенно выводит но скорось обновляет часто
попробуй так, убрал вообще present
выдает только запросы
может ещё попробовать каждый пид по два раза запрашивать
сижу эксперементирую. щас и два раза попробую. Интересно то что когда подменил присутсвие на обороты, часто получал данные оборотв, а вот просто дописал температуру так же как и присутсвие, то ответаы не дает. буду думать
вот скетч на двойные запросы
Не помогло. вообще не отвечает на пиды, только иногда на присутсвие и
int
timeout = 200; на 100 не канает минимуи 200 а то и чуток больше. Блин, есть чтото в это присутсвии что оно чаще отвечает чем все вместе.
ну ты же подменил его оборотами а блок всё равно отвечал
короче нужно добиться чтоб четко отвечал на один пид, задержками там или чем. А потом все остальные добавлять
да. работаю пок с одним пидом. ищу в чем проблема.
предлагаю такой скетч. Он простой, снчала инит, потом в лупе запросы посылаются с регулируемой задержкой. Задержка задается в начале скетча - типа TempTime в милисек. И играешься с разными задержками presenta и PID
ок. щас добью свой эксперемент и попробую твой
вот этот лучше немного
Ты гений. Уже намного чаще дает ответы .Но все так же мног пустых ответов. поставил 250 (меньше не дает ответы) Присутсвие на 5000. вот что дает
буду работать над ним дальше. толи мозки не успевают отвечать , толи с запросами и ответами лажа. Думаю мозги тут не причем, ведь с прогами они выдают моментально все параметры. Где же собака порылась?
мне кажется запрос присутствия ему не нужен. Надо попробовать отсылать запрос ПИДа и ждать, но не все время конечно, секунду например, потом повторно запрос отправлять. Вот если ждать после запроса, скорее всего он правильно ответит.
можно и без присутствия. он нужен для того чтобы мозги не закрывали ссесию. но можно попробовать. есть над чем поработать. иду эксперементировать.
этот скетч шлет present раз в 5 сек. и отсылает запрос температуры, если блок правильно отвечает запрос повторяется через 250 мс, если ответа нет ожидание 500мс, потом опять запрос температуры. Задержка на ожидание правильного ответа задается в начале скетча
Понял. Щас приеду домой и гляну. Пробовать уже буду завтра.