From 603cde9682aecbb9ee7991538823d566f5369afd Mon Sep 17 00:00:00 2001 From: Bill1389 Date: Mon, 21 Nov 2022 20:59:30 +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(=D0=BF=D0=BE=D0=BA=D0=B0=20?= =?UTF-8?q?=D1=82=D0=BE=D0=BB=D1=8C=D0=BA=D0=BE=20=D0=B2=20=D0=BB=D0=BE?= =?UTF-8?q?=D0=B3)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 0 -> 6148 bytes src/main.cpp | 85 ++++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 81 insertions(+), 4 deletions(-) create mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..24c8b359d32fef9f3a172c8880065776bf71999e GIT binary patch literal 6148 zcmeHKO>Wab6n>KgG6@2*Kx&t>snkV;(n4ER2+0cVqB|s4?E+A1$A(&RJyGlsK?w4O zL%xmDxl`BP6=hyqm=H5Btl=sI;7Rgap4znoN*YV8&=MCOCX|0aOn_F9LvAMlFX^ZjBPNywizSy2j8hmAK zG{wW1mZO`B9;*sp$y6|vnuNCl9xH82n4NglC=&cxBwH2?zwIMH5 W0Q4-D29bfe4*@NMYn%dqRDl~v5siKT literal 0 HcmV?d00001 diff --git a/src/main.cpp b/src/main.cpp index 0c27f4e..79d03d4 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -9,7 +9,8 @@ #define pinKLineRX 4 EncButton btnUp(INPUT); - +//#define DEBUG; +#define LOGS; // avr #define FIS_ENA 5 #define FIS_CLK 6 @@ -28,7 +29,7 @@ VAGFISWriter fisWriter(FIS_CLK, FIS_DATA, FIS_ENA, 1); int ADR_Engine_Speed = 10400; int ADR_Dashboard_Speed = 10400; - +uint8_t ErrorArray[10]; NewSoftwareSerial obd(pinKLineRX, pinKLineTX, false); // RX, TX, inverse logic bool logoDash = 0; @@ -142,6 +143,7 @@ float L100AVG; // int ix = 1; bool SaveL100Flag = false; + String floatToString(float v) { String res; @@ -619,6 +621,54 @@ bool readSensors(int group){ 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) { if (currAddr != ADR_Engine) @@ -696,7 +746,7 @@ void loop() if (btnUp.hasClicks(1)) { currPage++; - if (currPage > 9) + if (currPage > 10) currPage = 1; eeprom_update_byte(0, currPage); } @@ -705,7 +755,7 @@ void loop() { currPage--; if (currPage < 1) - currPage = 9; + currPage = 10; eeprom_update_byte(0, currPage); } @@ -713,6 +763,15 @@ void loop() { case 1: fisWriter.sendString("AUDI", "QUATTRO"); + // if (currAddr != ADR_Engine) + // { + // connect(ADR_Engine, ADR_Engine_Speed); + // } + // else + // { + // readErrors(); + // } + break; case 2: @@ -784,6 +843,20 @@ void loop() case 9: getDashboardSensor(2); 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; } } @@ -889,6 +962,10 @@ void loop() mess = "............."; }else if(engineSpeed < 4900){ mess = ".............."; + }else if(engineSpeed < 5200){ + mess = "..............."; + }else if(engineSpeed < 5500){ + mess = ".............."; } fisWriter.sendStringFS(1,18,0x05,mess); }