Чтение ошибок(пока только в лог)

master
Bill1389 3 years ago
parent 4ecb01a8ad
commit 603cde9682

BIN
.DS_Store vendored

Binary file not shown.

@ -9,7 +9,8 @@
#define pinKLineRX 4 #define pinKLineRX 4
EncButton<EB_TICK, pinButton> btnUp(INPUT); EncButton<EB_TICK, pinButton> btnUp(INPUT);
//#define DEBUG;
#define LOGS;
// avr // avr
#define FIS_ENA 5 #define FIS_ENA 5
#define FIS_CLK 6 #define FIS_CLK 6
@ -28,7 +29,7 @@ VAGFISWriter fisWriter(FIS_CLK, FIS_DATA, FIS_ENA, 1);
int ADR_Engine_Speed = 10400; int ADR_Engine_Speed = 10400;
int ADR_Dashboard_Speed = 10400; int ADR_Dashboard_Speed = 10400;
uint8_t ErrorArray[10];
NewSoftwareSerial obd(pinKLineRX, pinKLineTX, false); // RX, TX, inverse logic NewSoftwareSerial obd(pinKLineRX, pinKLineTX, false); // RX, TX, inverse logic
bool logoDash = 0; bool logoDash = 0;
@ -142,6 +143,7 @@ float L100AVG;
// int ix = 1; // int ix = 1;
bool SaveL100Flag = false; bool SaveL100Flag = false;
String floatToString(float v) String floatToString(float v)
{ {
String res; String res;
@ -619,6 +621,54 @@ bool readSensors(int group){
return true; return true;
} }
// чтение ошибок. Пишется в массив ErrorArray - 0 элемент - количество ошибок, дальше их номера
bool readErrors(){
// uint8_t ErrorArray[10];
memset(ErrorArray, 0, sizeof(ErrorArray));
char s[64];
sprintf(s, "\x03%c\x07\x03", blockCounter);
#ifdef DEBUG
Serial.println(F("TUTTUTTUTTUTTUT"));
#endif
if (!KWPSendBlock(s, 4)) return false;
int size = 0;
KWPReceiveBlock(s, 64, size);
if (s[3] == '\xFF' && s[4] == '\xFF') {
#ifdef DEBUG
Serial.println(F("No errors in ECU"));
#endif
return false;
}
if (s[2] != '\xFC') {
#ifdef DEBUG
Serial.println(F("Invalid answer from ECU"));
#endif
return false;
}
#ifdef LOGS
Serial.println(F("------readErrors------"));
#endif
int count = (size-4) / 3;
#ifdef DEBUG
Serial.print(F("count="));
Serial.println(count);
#endif
for (int idx=0; idx < count; idx++){
byte a=s[3 + idx*3];
byte b=s[3 + idx*3+1];
byte k=s[3 + idx*3+2];
int v = a*256+b;
ErrorArray[0] = count;
ErrorArray[idx+1] = v;
#ifdef LOGS
Serial.println(v);
#endif
}
return true;
}
// конец чтения ошибок
void getECUSensor(int groupNum) void getECUSensor(int groupNum)
{ {
if (currAddr != ADR_Engine) if (currAddr != ADR_Engine)
@ -696,7 +746,7 @@ void loop()
if (btnUp.hasClicks(1)) if (btnUp.hasClicks(1))
{ {
currPage++; currPage++;
if (currPage > 9) if (currPage > 10)
currPage = 1; currPage = 1;
eeprom_update_byte(0, currPage); eeprom_update_byte(0, currPage);
} }
@ -705,7 +755,7 @@ void loop()
{ {
currPage--; currPage--;
if (currPage < 1) if (currPage < 1)
currPage = 9; currPage = 10;
eeprom_update_byte(0, currPage); eeprom_update_byte(0, currPage);
} }
@ -713,6 +763,15 @@ void loop()
{ {
case 1: case 1:
fisWriter.sendString("AUDI", "QUATTRO"); fisWriter.sendString("AUDI", "QUATTRO");
// if (currAddr != ADR_Engine)
// {
// connect(ADR_Engine, ADR_Engine_Speed);
// }
// else
// {
// readErrors();
// }
break; break;
case 2: case 2:
@ -784,6 +843,20 @@ void loop()
case 9: case 9:
getDashboardSensor(2); getDashboardSensor(2);
fisWriter.sendString("FUEL:", String(fuelLevel)); fisWriter.sendString("FUEL:", String(fuelLevel));
break;
case 10:
if (currAddr != ADR_Engine)
{
connect(ADR_Engine, ADR_Engine_Speed);
}
else
{
readErrors();
fisWriter.sendString(String(ErrorArray[0]), String(ErrorArray[1]));
}
break; break;
} }
} }
@ -889,6 +962,10 @@ void loop()
mess = "............."; mess = ".............";
}else if(engineSpeed < 4900){ }else if(engineSpeed < 4900){
mess = ".............."; mess = "..............";
}else if(engineSpeed < 5200){
mess = "...............";
}else if(engineSpeed < 5500){
mess = "..............";
} }
fisWriter.sendStringFS(1,18,0x05,mess); fisWriter.sendStringFS(1,18,0x05,mess);
} }

Loading…
Cancel
Save