From c0d6224b76dcbdb4fcfbd13b9135bb581b977fb0 Mon Sep 17 00:00:00 2001 From: Bill1389 Date: Fri, 12 Jan 2024 22:18:58 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A7=D1=82=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE?= =?UTF-8?q?=D1=88=D0=B8=D0=B1=D0=BE=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 6148 -> 6148 bytes src/main.cpp | 95 ++++++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 79 insertions(+), 16 deletions(-) diff --git a/.DS_Store b/.DS_Store index 24c8b359d32fef9f3a172c8880065776bf71999e..11a2bde783c1ef32dd3bd809344244e8d646fe07 100644 GIT binary patch delta 71 zcmZoMXfc@J&&aVcU^gQp$7CL+yKJ1C9GtwIlixEX3xb&O0ut5Lh9+h@3PxrolarY} ZI8%y~bCUA&a~L--WDaK8%+B$b9{`OI69@nR delta 64 zcmZoMXfc@J&&a+pU^gQp`(z%byKEd>99+CylixEX3vzIBaK;NrR973Bn(8PRnOROw UX7<>;kJ*!DVuSEzc8 btnUp(INPUT); //#define DEBUG; -#define LOGS; +//#define LOGS; // avr #define FIS_ENA 5 #define FIS_CLK 6 @@ -29,9 +29,10 @@ VAGFISWriter fisWriter(FIS_CLK, FIS_DATA, FIS_ENA, 1); int ADR_Engine_Speed = 10400; int ADR_Dashboard_Speed = 10400; -uint8_t ErrorArray[10]; +int ErrorArray[10]; NewSoftwareSerial obd(pinKLineRX, pinKLineTX, false); // RX, TX, inverse logic - +bool readErrorflag = 0; +int errorErrorCount = 1; bool logoDash = 0; const uint8_t PROGMEM quattroLogo[56]{ 0xff, 0xff, 0xff, 0xff, 0x3e, 0xff, 0xff, 0xff, 0xc0, 0xef, 0xec, 0x02, 0x04, 0x1e, 0x0f, 0x9b, 0x80, 0x2f, 0xe8, 0x01, 0x3e, 0xfc, 0x04, 0x01, 0xbf, 0x2f, 0xe9, 0xf9, 0x3a, 0xe5, 0xfc, 0xfc, 0x80, 0x20, 0x08, 0x09, 0x02, 0x05, 0xfc, 0x01, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; @@ -621,6 +622,48 @@ bool readSensors(int group){ return true; } + + +// сброс ошибок +bool clearErrors(){ +char s[64]; +sprintf(s, "\x03%c\x05\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 +return true; +} +// конец сброса ошибок + + + + + + + // чтение ошибок. Пишется в массив ErrorArray - 0 элемент - количество ошибок, дальше их номера bool readErrors(){ // uint8_t ErrorArray[10]; @@ -661,7 +704,7 @@ int v = a*256+b; ErrorArray[0] = count; ErrorArray[idx+1] = v; #ifdef LOGS -Serial.println(v); +//Serial.println(v); #endif } return true; @@ -736,9 +779,15 @@ void loop() if (btnUp.held()) { - fullDash = !fullDash; - countLoop = 1; - fisWriter.reset(); + if(currPage==10){ + clearErrors(); + } else { + fullDash = !fullDash; + countLoop = 1; + fisWriter.reset(); + !readErrorflag; + } + } if (!fullDash) @@ -748,6 +797,7 @@ void loop() currPage++; if (currPage > 10) currPage = 1; + !readErrorflag; eeprom_update_byte(0, currPage); } @@ -841,21 +891,34 @@ void loop() fisWriter.sendString(String(vehicleSpeedAVG) + "K", String(L100AVG) + "L"); break; case 9: - getDashboardSensor(2); - fisWriter.sendString("FUEL:", String(fuelLevel)); + getECUSensor(20); + fisWriter.sendString("RETARDS:", String(param0) + ":" + String(param1) + ":" + String(param2) + ":" + String(param3)); break; + // getDashboardSensor(2); + // fisWriter.sendString("FUEL:", String(fuelLevel)); + // break; case 10: - - if (currAddr != ADR_Engine) + + if(!readErrorflag){ + if (currAddr != ADR_Engine) { connect(ADR_Engine, ADR_Engine_Speed); } - else - { - readErrors(); - fisWriter.sendString(String(ErrorArray[0]), String(ErrorArray[1])); - } + readErrors(); + !readErrorflag; + // disconnect(); + } + if(ErrorArray[errorErrorCount]){ + + } else { + errorErrorCount = 1; + } + fisWriter.sendString(String(ErrorArray[0]), String(ErrorArray[errorErrorCount])); + Serial.println(ErrorArray[errorErrorCount]); + errorErrorCount++; + delay(1000); + break; }