Доброго времени суток уважаемые форумчане. Обо всем по порядку: 1) Код писал сам, не копировал (еще учусь и разбираюсь). 2) Данный код предназначен для Ардуино Мега . 3) Ардуино Мега подключается к адаптеру ELM327, а сам ELM327 в разъем OBD2 авто. 4) Схема подключения, все просто ELM327---------Мега RX----------------TX2 TX----------------RX2 GND-------------GND 5) Данный код принимает ответ от ELM327, обрабатывает и вывод в порт полученное значение. 6) Если отправлять запрос в ручную, код рабочий. И сам вопрос: имеются команды от Мега к ELM327 - "0105\r" и "010C\r", ответы на них, допустим "00 00 1B\r>" и "00 00 11 1B\r>" соответственно. В скетче имеется 2 строки с отправкой этих команд (выделены), но беда в том, что не могу разобраться, как написать код так, чтобы после загрузки МК была отправлена первая команда "0105\r" далее Мега дождалась ответа от ELM327, обработала его, вывела ответ в порт и только потом перешла ко второй команде "010C\r" сделав все тоже самое что и с первой, и вновь перешла к отправке первой команды. Пробовал писать применив flag, но почему-то Мега все равно постоянно шлет запросы. Друзья, помогите пожалуйста решить задачку. Код (C++): void setup() { Serial.begin(38400); Serial2.begin(38400); Serial.setTimeout(10); delay(2000); } void loop() { [B]Serial2.write("0105\r"); //Проблема в этом месте[/B] if(Serial2.available() >0 ){ char data[20] = ""; int www = Serial2.readBytesUntil('>',data, 20); data[www] = NULL; char cstr[20] = ""; strcat(cstr, data); char s1 = cstr[6]; char s2 = cstr[7]; int n1 = s1-'0'; int n2 = s2-'0'; switch(n1){ case 17: n1=10; break; case 18: n1=11; break; case 19: n1=12; break; case 20: n1=13; break; case 21: n1=14; break; case 22: n1=15; break; defaul1: n1=n1; } switch(n2){ case 17: n2=10; break; case 18: n2=11; break; case 19: n2=12; break; case 20: n2=13; break; case 21: n2=14; break; case 22: n2=15; break; defaul2: n2=n2; } int n3 = (n1*16 + n2*1)-40; Serial.println(n3); } [B]Serial2.print("010C\r"); //Проблема в этом месте[/B] if(Serial2.available() > 0 ){ char data[20] = ""; int www = Serial2.readBytesUntil('>',data, 20); data[www] = NULL; char cstr[20] = ""; strcat(cstr, data); char s1 = cstr[6]; char s2 = cstr[7]; char s3 = cstr[9]; char s4 = cstr[10]; int n1 = s1-'0'; int n2 = s2-'0'; int n3 = s3-'0'; int n4 = s4-'0'; switch(n1){ case 17: n1=10; break; case 18: n1=11; break; case 19: n1=12; break; case 20: n1=13; break; case 21: n1=14; break; case 22: n1=15; break; defaul3: n1=n1; } switch(n2){ case 17: n2=10; break; case 18: n2=11; break; case 19: n2=12; break; case 20: n2=13; break; case 21: n2=14; break; case 22: n2=15; break; defaul4: n2=n2; } switch(n3){ case 17: n3=10; break; case 18: n3=11; break; case 19: n3=12; break; case 20: n3=13; break; case 21: n3=14; break; case 22: n3=15; break; defaul5: n3=n3; } switch(n4){ case 17: n4=10; break; case 18: n4=11; break; case 19: n4=12; break; case 20: n4=13; break; case 21: n4=14; break; case 22: n4=15; break; defaul6: n4=n4; } int q1 = (n1*16)+(n2*1); int q2 = (n3*16)+(n4*1); int ob = ((q1*256)+q2)/4; Serial.println(ob); } } // Void Loop