Бортовой компьютер для Опель Зафира.

MaksVV
Offline
Зарегистрирован: 06.08.2015

короче на 5 бодах надо делать так.Так как скорост 5 бит/сек. 1 делин на 5 получаем 200 мсек. 

1.  Сначала Tx  в HIGH на 300 мс. Это будет BUS Idle. 

2. Далее идет старт бит. Т.е.переводим  в LOW

3. Задержка 200мс

тут идуть биты адреса, но в обратном порядки, и между каждым опять 200мс

например если  B8 в бинарном это  10111000

то посылаем в обратном порядке     00011101

4. Стоп бит это HIGH

4. Задержка 2 мс. 

 

 

 

 

MaksVV
Offline
Зарегистрирован: 06.08.2015
void setup() {
delay (500);
pinMode (TX, OUTPUT);

digitalWrite (TX, HIGH);
delay (500);
digitalWrite (TX, LOW);// старт бит
delay (200);
digitalWrite (TX, ?);// 7 бит адреса
delay (200);
digitalWrite (TX, ?);// 6 бит адреса
delay (200);
digitalWrite (TX, ?);// 5 бит адреса
delay (200);
digitalWrite (TX, ?);// 4 бит адреса
delay (200);
digitalWrite (TX, ?);// 3 бит адреса
delay (200);
digitalWrite (TX, ?);// 2 бит адреса
delay (200);
digitalWrite (TX, ?);// 1 бит адреса
delay (200);
digitalWrite (TX, ?);// 0 бит адреса
delay (200);
digitalWrite (TX, HIGH);// стоп бит 
delay (2); // отправка адреса на 5 бод закончена

// далее уже через mySerial работаем 

mySerial.begin(9600); 
// и т.д.






}

void loop() {
 

}
вот дя адреса B8  (в бинарном   -    10111000 )
void setup() {
delay (500);
pinMode (TX, OUTPUT);

digitalWrite (TX, HIGH);
delay (500);
digitalWrite (TX, LOW);// старт бит
delay (200);
digitalWrite (TX, 0);// 7 бит адреса
delay (200);
digitalWrite (TX, 0);// 6 бит адреса
delay (200);
digitalWrite (TX, 0);// 5 бит адреса
delay (200);
digitalWrite (TX, 1);// 4 бит адреса
delay (200);
digitalWrite (TX, 1);// 3 бит адреса
delay (200);
digitalWrite (TX, 1);// 2 бит адреса
delay (200);
digitalWrite (TX, 0);// 1 бит адреса
delay (200);
digitalWrite (TX, 1);// 0 бит адреса
delay (200);
digitalWrite (TX, HIGH);// стоп бит 
delay (2); // отправка адреса на 5 бод закончена

// далее уже через mySerial работаем 

mySerial.begin(9600); 
// и т.д.






}

void loop() {
 

}

 

MaksVV
Offline
Зарегистрирован: 06.08.2015

другой вопрос что там походу есть проверка четности (odd) и только 7 бит данных ? тогда наверное чуть по другому будет

viki13viki
Offline
Зарегистрирован: 14.11.2016
щас попробую
 
MaksVV
Offline
Зарегистрирован: 06.08.2015

в луп вставь код от сниффера

MaksVV
Offline
Зарегистрирован: 06.08.2015

короче так примерно 

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); //R,T
#define TX 11
unsigned long prevTimedelay = 0; 
int Delay = 0;
void setup() {

Serial.begin (115200);

delay (500);
pinMode (TX, OUTPUT);

digitalWrite (TX, HIGH); // BUS IDLE
delay (500);
digitalWrite (TX, LOW);// старт бит
delay (200);
digitalWrite (TX, 0);// 7 бит адреса
delay (200);
digitalWrite (TX, 0);// 6 бит адреса
delay (200);
digitalWrite (TX, 0);// 5 бит адреса
delay (200);
digitalWrite (TX, 1);// 4 бит адреса
delay (200);
digitalWrite (TX, 1);// 3 бит адреса
delay (200);
digitalWrite (TX, 1);// 2 бит адреса
delay (200);
digitalWrite (TX, 0);// 1 бит адреса
delay (200);
digitalWrite (TX, 1);// 0 бит адреса
delay (200);
digitalWrite (TX, HIGH);// стоп бит 
delay (2); // отправка адреса на 5 бод закончена

// далее уже через mySerial работаем 


mySerial.begin (9600);


}

void loop() {

if (mySerial.available()) {
delay (51);
unsigned long curTimedelay = millis ();
   Delay = curTimedelay-prevTimedelay;
Serial.println (""); Serial.print (Delay); Serial.println ("ms");
prevTimedelay = millis();  
while( mySerial.available()) {
    byte inByte = mySerial.read();
    Serial.print(" ");
    Serial.print(inByte,HEX);
   }
     
    }
}




 

viki13viki
Offline
Зарегистрирован: 14.11.2016

так я и сделал. вот скетч

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); //R,T
#define TX 11
unsigned long prevTimedelay = 0; 
int Delay = 0;

void setup() {
delay (500);
Serial.begin(115200);
pinMode (TX, OUTPUT);

digitalWrite (TX, HIGH);
delay (500);
digitalWrite (TX, LOW);// старт бит
delay (200);
digitalWrite (TX, 0);// 7 бит адреса
delay (200);
digitalWrite (TX, 0);// 6 бит адреса
delay (200);
digitalWrite (TX, 0);// 5 бит адреса
delay (200);
digitalWrite (TX, 1);// 4 бит адреса
delay (200);
digitalWrite (TX, 1);// 3 бит адреса
delay (200);
digitalWrite (TX, 1);// 2 бит адреса
delay (200);
digitalWrite (TX, 0);// 1 бит адреса
delay (200);
digitalWrite (TX, 1);// 0 бит адреса
delay (200);
digitalWrite (TX, HIGH);// стоп бит 
delay (2); // отправка адреса на 5 бод закончена


mySerial.begin(9600); 

}

void loop() {

if (mySerial.available()) {
delay (60);
unsigned long curTimedelay = millis ();
   Delay = curTimedelay-prevTimedelay;
Serial.println (""); Serial.print (Delay); Serial.println ("ms");
prevTimedelay = millis();  
while( mySerial.available()) {
    byte inByte = mySerial.read();
    Serial.print(" ");
    Serial.print(inByte,HEX);
   }
     
    }
}

но в порту тишина. и так попробовал. ведь в принципе это тоже самое? или я ошибаюсь?

digitalWrite (TX, HIGH);
delay (500);
digitalWrite (TX, LOW);
delay (200);
digitalWrite (TX, HIGH);
delay (600);
digitalWrite (TX, LOW);
delay (600);
digitalWrite (TX, HIGH);
delay (200);
digitalWrite (TX, LOW);
delay (200);
digitalWrite (TX, HIGH);
delay (2); // отправка адреса на 5 бод закончена
 
но тоже тишина 

 

MaksVV
Offline
Зарегистрирован: 06.08.2015

все адреса попробовал? может на контакте 12 только панель сидит, а она ответит только если адрес правильный посылать. попробуй ещё вместо 200 мс , 5 поставить, т.к. в опкоме есть ещё 200 baud init 

MaksVV
Offline
Зарегистрирован: 06.08.2015

также на 10400 попробуй после инита , раз изначально на нём сниф был. 

viki13viki
Offline
Зарегистрирован: 14.11.2016

понял. пробую. скажи или так можно делать как я показал выше скачки?

viki13viki
Offline
Зарегистрирован: 14.11.2016

сработало ХАХ.... вот скетч. 

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); //R,T
#define TX 11
unsigned long prevTimedelay = 0; 
int Delay = 0;

void setup() {
delay (500);
Serial.begin(115200);
pinMode (TX, OUTPUT);

digitalWrite (TX, HIGH);
delay (500);
digitalWrite (TX, LOW);
delay (20);
digitalWrite (TX, HIGH );
delay (15);
digitalWrite (TX, LOW);
delay (5);
digitalWrite (TX, HIGH);
delay (5);

mySerial.begin(9600); 

}

void loop() {

if (mySerial.available()) {
delay (60);
unsigned long curTimedelay = millis ();
   Delay = curTimedelay-prevTimedelay;
Serial.println (""); Serial.print (Delay); Serial.println ("ms");
prevTimedelay = millis();  
while( mySerial.available()) {
    byte inByte = mySerial.read();
    Serial.print(" ");
    Serial.print(inByte,HEX);
   }
     
    }
}

Оказалось все таки 200 бауд. я подправил и соединил задержки и все работает. получаем вот это

1145ms

 55

98ms

 52 80

208ms

что дальше? нужно отправить 7F ? или что?

MaksVV
Offline
Зарегистрирован: 06.08.2015

Ты имеешь в виду когда подряд два нуля напрример совмещать и делать задержку не 200, а 400. Да , по идее это будет тоже самое

MaksVV
Offline
Зарегистрирован: 06.08.2015

Очередная победа. Далее мысли так. Создаем массив принимаемого сообщения, делаем проверку полученных бай и тд, все как в прошлый раз.

MaksVV
Offline
Зарегистрирован: 06.08.2015

Можешь теперь не городить с хей, лоу. А так попробовать.
mySerial.begin (200);
my.Serial.write(0xB8);

MaksVV
Offline
Зарегистрирован: 06.08.2015

Да нужно отправлять 7F

viki13viki
Offline
Зарегистрирован: 14.11.2016

ее отправлять как? так же задержками или как байт 7F?

MaksVV
Offline
Зарегистрирован: 06.08.2015

См пост 864. Через сериалврайт

viki13viki
Offline
Зарегистрирован: 14.11.2016

неа , пусто в сериале

MaksVV
Offline
Зарегистрирован: 06.08.2015

Покажи скетч как ты сделал

viki13viki
Offline
Зарегистрирован: 14.11.2016
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); //R,T
#define TX 11
unsigned long prevTimedelay = 0; 
int Delay = 0;

void setup() {
delay (500);
Serial.begin(115200);
pinMode (TX, OUTPUT);

mySerial.begin(200);
mySerial.write(0xB8);
delay (5);

mySerial.begin(9600); 

}

void loop() {

if (mySerial.available()) {
delay (60);
unsigned long curTimedelay = millis ();
   Delay = curTimedelay-prevTimedelay;
Serial.println (""); Serial.print (Delay); Serial.println ("ms");
prevTimedelay = millis();  
while( mySerial.available()) {
    byte inByte = mySerial.read();
    Serial.print(" ");
    Serial.print(inByte,HEX);
   }
     
    }
}

 

MaksVV
Offline
Зарегистрирован: 06.08.2015

так порпробуй 

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); //R,T
#define TX 11
unsigned long prevTimedelay = 0; 
int Delay = 0;

void setup() {
delay (500);
Serial.begin(115200);
pinMode (TX, OUTPUT);


mySerial.begin(200);
digitalWrite (TX,HIGH);
delay (500);
mySerial.write(0xB8);
delay (5);
mySerial.end();
mySerial.begin(9600); 

}

void loop() {

if (mySerial.available()) {
delay (60);
unsigned long curTimedelay = millis ();
   Delay = curTimedelay-prevTimedelay;
Serial.println (""); Serial.print (Delay); Serial.println ("ms");
prevTimedelay = millis();  
while( mySerial.available()) {
    byte inByte = mySerial.read();
    Serial.print(" ");
    Serial.print(inByte,HEX);
   }
     
    }
}

 

viki13viki
Offline
Зарегистрирован: 14.11.2016

неа. Пусто

MaksVV
Offline
Зарегистрирован: 06.08.2015

Ну тогда через хай лоу делай инит, ожидай например 50мс. Потом посылай также через хай лоу 7F только idle bus поменьше надо, не знаю сколько, пробуй

viki13viki
Offline
Зарегистрирован: 14.11.2016

но это уже делать на скорости 9600? и 7F это восемь единиц. делать типа задержку 40мс? ладно, ща попробую по всякому.

MaksVV
Offline
Зарегистрирован: 06.08.2015

А точно это уже на 9600 тогда просто сериал.врайт (0х7f)

И 7f это не 8 единиц , 01111111

viki13viki
Offline
Зарегистрирован: 14.11.2016

блин, забыл в калькуляторе 0 сьедается. щас

viki13viki
Offline
Зарегистрирован: 14.11.2016

ничего не выходит, ни до 9600 ни после, ни как 0х7F ни как LOW HOGH. чета не то. непонятка

MaksVV
Offline
Зарегистрирован: 06.08.2015

покажи как ты 7F через хай лоу сделал

MaksVV
Offline
Зарегистрирован: 06.08.2015

viki13viki пишет:
ничего не выходит, ни до 9600

ты же вроде получил ответ 55 52 80

viki13viki
Offline
Зарегистрирован: 14.11.2016

да 55 52 80 ,но не выходит толи отправить 7F толи что и получить

55

52 80 7F

вот  

digitalWrite (TX, LOW);
13 delay (10);
14 digitalWrite (TX, HIGH);
15 delay (40);
16  

 

viki13viki
Offline
Зарегистрирован: 14.11.2016

старт 5, первый бит 5, 7 бит 35, стоп 5 , равно 10 low и 40 high

MaksVV
Offline
Зарегистрирован: 06.08.2015

после 7F ты не должен получить 55, там срзу данные идентификации должны пойти, по идее. 

так попробуй. суть скетча - ждем байта 80, если пришёл отправляем 7F

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); //R,T
#define TX 11


bool flag80 = 0;
bool flag80_1 = 0;



void setup() {
delay (500);
Serial.begin(115200);
pinMode (TX, OUTPUT);

digitalWrite (TX, HIGH);
delay (500);
digitalWrite (TX, LOW);
delay (20);
digitalWrite (TX, HIGH );
delay (15);
digitalWrite (TX, LOW);
delay (5);
digitalWrite (TX, HIGH);
delay (5);

mySerial.begin(9600); 

}

void loop() {

if (flag80 && !flag80_1) {mySerial.write (0x7F); flag80_1 = 1;}

if (mySerial.available()) {

    byte inByte = mySerial.read();
    Serial.print(" ");
    Serial.print(inByte,HEX);
 if (inByte==0x80) flag80 =1;
     
    }
}

 

MaksVV
Offline
Зарегистрирован: 06.08.2015

viki13viki пишет:

старт 5, первый бит 5, 7 бит 35, стоп 5 , равно 10 low и 40 high

это не канает, т.к. байты 55 52 и 80 мы уже получаем при обмене на скорости 9600, значит слать надо тоже на 9600. там задержки вообще другие

viki13viki
Offline
Зарегистрирован: 14.11.2016

да да да. данные пошли. 55 52 80 FF 2D ............... длинна всего сообщения от FF -46 байт. правда сообщения идут одной строкой, без остановки. 

MaksVV
Offline
Зарегистрирован: 06.08.2015

крутяк, так и должно быьб, я упростил прием из майсериал. Короче, дальше нужно делать массив сообщения и т.д. всё как  раньше

MaksVV
Offline
Зарегистрирован: 06.08.2015

скинь последний рабочий основной скетч 

viki13viki
Offline
Зарегистрирован: 14.11.2016

надо делать уже прямо в скетче, я так думаю. а то я запутаюсь заносить потом это сам. вот скетч.

/////////////////////////////////////////////////////////////////////////////////////////
  //библиотеки
  ///////////////////////////////////////////////////////////////////////////////////////////
  #include <UTouch.h>
  #include <UTFT.h>
  #include <SPI.h>
  
  //pin 20 SCL , 21 SDA датчик реального времени
  #include <Wire.h>
  #include "RTClib.h"
  RTC_DS3231 rtc;       
  
  //датчик наружней температуры
  #include <OneWire.h>
  #define ONE_WIRE_BUS 8   
  OneWire oneWire(ONE_WIRE_BUS);
  #include <DallasTemperature.h>
  DallasTemperature sensors(&oneWire);
  
  //датчик внутринней температуры и влаги
  #include "DHT.h"
  #define DHTPIN 9   
  #define DHTTYPE DHT22 
  DHT dht(DHTPIN, DHTTYPE);
  
  ///////////////////////////////////////////////////////////////////////////////////
  //пины экрана и тача
  ///////////////////////////////////////////////////////////////////////////////////
  UTFT    myGLCD(31,38,39,40,41); 
  UTouch  myTouch(6,5,4,3,2);
  
 
  
  extern uint8_t GroteskBold16x32[];
 
  int x, y;
  char currentPage;

  float h;
  float t;

  
  bool Dvoet = 0;

  //////////////////////////////////////////////////////////////////////////////
  //все что касается OBD2
  ///////////////////////////////////////////////////////////////////////////////
  #include <SoftwareSerial.h>
  SoftwareSerial mySerial(10, 11); //RХ,TХ
  #define TX 11

  int length5 = 5;
  int length6 = 6;
  int length8 = 8;
  int length7 = 7;

  
  bool Init = 0;
  int PIDTime = 120;       // задержка ожидания запроса следующего pid 2101, мс
  int PresTime = 8000;     // задержка между посылками запросов присутствия, мс 
  int waitbyte = 1;        // задержка между отправкой байт в сообщении, мс
  int Datadelay = 50;      // задержка между отрисовкой данных на LCD, мс
  
  float L100 = 0;           //расход литров на 100км
  float LHor = 0;           //расход топлива литров в час
  int MAF = 0;              //26,27 байты   Sensor de flujo de aire en masa
  float BoostPres = 0;      //28,29 байты   Presión de refuerzo
  int RPM = 0;              //32,33 байты   Velocidad del motor
  int EGRmg = 0;            //34,35 байты   Comando EGR (Comando de recirculación de gases de escape)
  float BoostPresCom = 0;   //38,39 байты   Comando de presión de refuerzo
  int Speed = 0;            //44,45 байты   Velocidad del vehículo
  float DesaInjQua = 0;     //50,51 байты   Cantidad de inyección deseada
  float InjQua = 0;         //52,53 байты   Cantidad de la inyección
  float StaDaliv = 0;       //54,55 байты   Inicio de la entrega
  int PumpRPM = 0;          //56,57 байты   Velocidad de la bomba
  float EGRPul = 0;         //62,63 байты   Relación de impulsos EGR (recirculación de gases de escape
  float SolenPul = 0;       //64,65 байты   Velocidad de solenoide de control de nivel de remolino Relación de impulsos
  float SolenPre = 0;       //70,71 байты   Relación de impulsos Presión Electroválvula de presión
  float DesInj = 0;         //72,73 байты   Inyección deseada Inicio
  float ActInj = 0;         //16,17 байты   Inicio de la inyección real
  int TempAir = 0;          //74,75 байты   Temperatura del aire de admisión
  int Temp = 0;             //14,15 байты   Temperatura del refrigerante
  int TempOil = 0;          //18,19 байты   Temperatura del aceite del motor
  int TempFuel = 0;         //58,59 байты   Temperatura del combustible
  int colerror = 0;         //количество ошибок в правом верхнем углу третьего экрана
  float Barom = 0;          // барометр 
  
  byte MessageRx[110] = {0};  // массив байтов принимаемого сообщения
 
  byte messageInit[5] = {0x81, 0x11, 0xF1, 0x81, 0x04};    // запрос инициализации
  byte messagePresent[5] = {0x81,0x11,0xF1,0x3E,0xC1};      // запрос присутствия 
  byte messagePids[6] = {0x82,0x11,0xF1,0x21,0x01,0xA6};    // запрос пид 2101
  byte messageREAD[8] = {0x84,0x11,0xF1,0x18,0x00,0xFF,0x00,0x9D};    // запрос ошибок
  byte messageERASE[7] = {0x83,0x11,0xF1,0x14,0xFF,0x00,0x98};    // стирание ошибок


  
  unsigned long prevPID = 0;
  unsigned long prevTemperature = 0;
  unsigned long prevpres = 0;
  unsigned long prevWatch = 0;
  unsigned long prevDvoet = 0;
  unsigned long prevData = 0;
 
  unsigned long TimewaitPID, timerwaitPID = 0;
  bool timerenabledPID = 0;
  #define TIMEREXPIRED_PID (TimewaitPID - timerwaitPID)> 200 // здесь задержка на ожидание правильного ответа пидов, мс

  unsigned long TimewaitInit, timerwaitInit = 0;
  bool timerenabledInit = 0;
  #define TIMEREXPIRED_Init (TimewaitInit - timerwaitInit)> 500 // здесь задержка на ожидание ответа об удачной инициализации, мс

  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  //SETUP
  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    void setup() {
    Serial.begin(115200);
    mySerial.begin(10400);
    Wire.begin();
    rtc.begin();
    dht.begin();
    sensors.begin();
    myGLCD.InitLCD();
    myGLCD.clrScr();
    myTouch.InitTouch();
    myTouch.setPrecision(PREC_MEDIUM);
    myGLCD.setFont(GroteskBold16x32);   
    
    currentPage = '0';       
    drawHomeScreen();  
    
    // строка ниже используется для настройки даты и времени часов 
    // раскоментировать, выставить ремая и дату, залить в ардуино. в скетче закоментировать
    // обратно. иначе каждый раз будет по новой выствлятся это это же время и дата
    // (год, месяц, день, часы, минуты, секунды)
    //rtc.adjust(DateTime(2017, 7, 21, 13, 57, 0));
    
    Temperature ();
    
    pinMode(TX, OUTPUT);
    fastinit();
  }

  /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  //SETUP FIN
  /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  //LOOP
  /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

   void loop() {
    unsigned long curPID = millis ();
    unsigned long curpres = millis ();
    unsigned long curTemperature = millis();
    unsigned long curWatch = millis();  
    unsigned long curDvoet = millis();  
    TimewaitPID = millis ();
    TimewaitInit = millis ();
    
    if (!Init) {if (!timerenabledInit){ timerwaitInit=TimewaitInit; timerenabledInit=1; initialization(); }
                else if (TIMEREXPIRED_Init) timerenabledInit=0;}
    else {
      if (currentPage != '3'){ // если открыта страница 0,1 или 2 шлем запрос пид2101, если страница 3 -  шлем запрос присутствия 
      if (curPID - prevPID > PIDTime) {PIDs(); prevPID = curPID;}}
      else if (curpres - prevpres > PresTime) {present(); prevpres = curpres;}}
    if (curWatch - prevWatch > 3000)  { Watch (); prevWatch = curWatch;}
    if (curTemperature - prevTemperature > 60000)  { Temperature (); prevTemperature = curTemperature;}
    if (curDvoet - prevDvoet > 500)  { if (!Dvoet) {myGLCD.print(":", 285, 0);} else {myGLCD.print(" ", 285, 0);} prevDvoet = curDvoet; Dvoet=!Dvoet;}
    receive ();
    Menu();
    LCDDataPrint();
    
              }
  
   
   void LCDDataPrint(){
    unsigned long curData = millis();  
      
   if (curData - prevData > Datadelay){  
     
      myGLCD.setColor(255, 255, 255);
      myGLCD.printNumI(Speed, 350, 0, 3);
      
     if (currentPage == '0') {
                   
      myGLCD.printNumF(LHor, 1, 165, 40, '.',5);
      myGLCD.printNumF(L100, 1, 165, 75,'.',5 );
      myGLCD.printNumI(h, 165, 145, 5 );
      myGLCD.printNumI(PumpRPM, 165, 180,5);
      myGLCD.printNumI(RPM, 165, 215,5);
               
      myGLCD.printNumI(Temp, 410, 40, 3);
      myGLCD.printNumI(TempOil, 410, 75, 3);
      myGLCD.printNumI(TempFuel, 410, 110,3); 
      myGLCD.printNumI(sensors.getTempCByIndex(0), 410, 145 , 3);
      myGLCD.printNumI(t, 410, 180, 3);
      myGLCD.printNumI(TempAir, 410, 215, 3);
      
    }
   
    if (currentPage == '1') {
     
      myGLCD.printNumF(StaDaliv,1, 395, 40,'.', 3);
      myGLCD.printNumF(DesInj,1, 395, 75, '.', 4);
      myGLCD.printNumF(ActInj,1, 395, 110,'.', 4); 
      myGLCD.printNumF(DesaInjQua,1, 395, 145,'.', 4);  
      myGLCD.printNumF(InjQua,1, 395, 180,'.', 4); 
      myGLCD.printNumI(MAF, 170, 215, 4);
      myGLCD.printNumF(Barom, 1, 415, 215);
      }
      //----------------------------------------------------------
      //страниц INF2
      //----------------------------------------------------------
     
    if (currentPage == '2') {
          
      myGLCD.printNumF(BoostPres,1, 395, 40,'.', 4);  
      myGLCD.printNumF(BoostPresCom,1, 395, 75,'.', 4); 
      myGLCD.printNumI(EGRmg, 395, 110, 4);  
      myGLCD.printNumF(EGRPul,1, 395, 145,'.',3);  
      myGLCD.printNumF(SolenPul, 1, 395, 180,'.', 4);  
      myGLCD.printNumF(SolenPre, 0, 395, 215,'.', 3);
        
      }
     prevData = curData;
    }
   }
  
  ///////////////////////////////////////////////////////////////////////////
  
  //отправка запроса пид 2101
  void PIDs() {
    Serial.println ("Otpravil zapros 21 01");
    for (int i = 0; i < length6; i++) {
    mySerial.write(messagePids[i]);
    delay (waitbyte); } 
   }
 
 //отправка запроса присутствия
 void present() {
  Serial.println ("Otpravil zapros Present");
    for (int i = 0; i < length5; i++) {
    mySerial.write(messagePresent[i]);
    delay (waitbyte); }
   }


/////////////////////////////////////////////////////////////////////////////////////////////
//получение данных от ЭБУ, разборка входящих сообщений
/////////////////////////////////////////////////////////////////////////////////////////////
    void receive () {
     if (mySerial.available()) {
     delay(190);
     int k=0;
     byte inbyte=0;
     
     while( mySerial.available() && k < 110) {
     inbyte = mySerial.read();
     MessageRx[k] = inbyte;
     k++;   }
    
     Serial.print ("Receive:   ");
    for (int i = 0; i < k; i++) {
    Serial.print(MessageRx[i],HEX); Serial.print (" ");} 
    Serial.println ("");


   if (MessageRx[2]==0x83 && MessageRx[3]==0xF1 && MessageRx[4]==0x11 && MessageRx[5]==0xC1 && MessageRx[6]==0x6B && MessageRx[7]==0x8F && MessageRx[8]==0x40) {Init=1;
   timerenabledInit=0;  
   Serial.println ("     Initialization OK!!!!:  ");
   }

   if (currentPage == '3'){
  
 //при получении этого сообщения выдавать на третий экран "NO ERROR"
   if (MessageRx[4]==0x82 && MessageRx[5]==0xF1 && MessageRx[6]==0x11 && MessageRx[7]==0x58 && MessageRx[8]==0x00 && MessageRx[9]==0xDC){
        myGLCD.clrScr();             
        drawscreen_three();      
        myGLCD.print("NO DTC", 165, 145);
     Serial.println ("     NO DTC  ");
     }
     
     //при получении этого сообщения выдавать на третий экран "DTC BORRADO"
   if (MessageRx[3]==0x83 && MessageRx[4]==0xF1 && MessageRx[5]==0x11 && MessageRx[6]==0x54 && MessageRx[7]==0xFF && MessageRx[8]==0x00 && MessageRx[9]==0xD8){
        myGLCD.clrScr();             
        drawscreen_three();      
        myGLCD.print("DTC BORRADO", 165, 145);
     Serial.println ("     DTC BORRADO  ");
     }
    
    // при получении сообщения о наличии ошибок DTC разберем сообщение выведем на экран ошибки
   if (MessageRx[5]==0xF1 && MessageRx[6]==0x11 && MessageRx[7]==0x58 && MessageRx[8]>0){
      Serial.println ("DTC is found!");
        myGLCD.clrScr();             
        drawscreen_three();       

   for (int i=0; i<MessageRx[8]; i++ ) {
      int y = i*35;
      bool nolA=0; bool nolB =0;
   if (!bitRead(MessageRx[11+(i*3)],6) && bitRead(MessageRx[11+(i*3)],7)){ myGLCD.setColor (255,0,0);
      myGLCD.print(" -Passive-", 300, (75+y));} // если DTC пасивныый делаем цвет красный 
   if (bitRead(MessageRx[11+(i*3)],7) && bitRead(MessageRx[11+(i*3)],6)) {myGLCD.setColor (0,255,0);  
      myGLCD.print(" -Active-", 300, (75+y));} // если DTC активный, делаем цвет зеленый 

      myGLCD.print("ERROR ", 50, (75+y));
      myGLCD.printNumI((i+1), 150, (75+y));
if (!bitRead(MessageRx[9+(i*3)],6) && !bitRead(MessageRx[9+(i*3)],7)) myGLCD.print(": P", 170, (75+y));
if (bitRead(MessageRx[9+(i*3)],6) && !bitRead(MessageRx[9+(i*3)],7)) myGLCD.print(": C", 170, (75+y));
if (!bitRead(MessageRx[9+(i*3)],6) && bitRead(MessageRx[9+(i*3)],7)) myGLCD.print(": B", 170, (75+y));
if (bitRead(MessageRx[9+(i*3)],6) && bitRead(MessageRx[9+(i*3)],7)) myGLCD.print(": U", 170, (75+y));

if (MessageRx[9+(i*3)]==0x00) {myGLCD.print("00", 230, (75+y)); nolA = 1;}
if (MessageRx[9+(i*3)]<=0x0F&&MessageRx[9+(i*3)]!=0) {myGLCD.print("0", 230, (75+y)); nolA = 1;}//расположение первых нулей 
if (nolA)myGLCD.print(String (MessageRx[9+(i*3)],HEX), 246, (75+y)); //вторая цифра расположение
    else myGLCD.print(String (MessageRx[9+(i*3)],HEX), 230, (75+y)); //расположение первых циыфр
 
if (MessageRx[10+(i*3)]==0x00) {myGLCD.print("00", 262, (75+y)); nolB = 1;}
if (MessageRx[10+(i*3)]<=0x0F&&MessageRx[10+(i*3)]!=0) {myGLCD.print("0", 262, (75+y)); nolB = 1;} //позиция первого ноля
if (nolB)myGLCD.print(String (MessageRx[10+(i*3)]),HEX, 278, (75+y)); 
    else myGLCD.print(String (MessageRx[10+(i*3)],HEX), 262, (75+y));} //двигает воторой байт в2 и 3 соо
       }
    }
   


    //прописываем формулы к данным
   else if (MessageRx[3]==0x80 && MessageRx[4]==0xF1 && MessageRx[5]==0x11 && MessageRx[6]==0x4C && MessageRx[7]==0x61 && MessageRx[8]==0x01)    {
    Barom = MessageRx[39];
    L100 = (float)LHor*100.0/(float)Speed;
    LHor = (float)RPM* (float)InjQua*2.00/1000.0*60.00/1000.0/0.85;
    MAF =  ((MessageRx[29]*256)+MessageRx[30])/10;
    BoostPres =  ((MessageRx[31]*256)+MessageRx[32])/1000.0;
    RPM =  (MessageRx[35]*256)+MessageRx[36];
    EGRmg =  ((MessageRx[37]*256)+MessageRx[38])/10.0;
    BoostPresCom =  ((MessageRx[41]*256)+MessageRx[42])/1000.0;
    Speed =  ((MessageRx[47]*256)+MessageRx[48])/100;
    DesaInjQua =  ((MessageRx[53]*256)+MessageRx[54])/100.0;
    InjQua =  ((MessageRx[55]*256)+MessageRx[56])/100.0;
    StaDaliv =  ((MessageRx[57]*256)+MessageRx[58])/100.0;
    PumpRPM =  (MessageRx[59]*256)+MessageRx[60];
    EGRPul =  ((MessageRx[65]*256)+MessageRx[66])/100.0;
    SolenPul =  ((MessageRx[67]*256)+MessageRx[68])/100.0;
    SolenPre =  ((MessageRx[73]*256)+MessageRx[74])/100.0;
    DesInj =  ((MessageRx[75]*3)+(MessageRx[76])/100.0)+0.3;
    ActInj =  ((MessageRx[19]*3)+(MessageRx[20])/100.0)+0.3;
    //TempAir =  ((MessageRx[77]*26)-278)+MessageRx[78]/10.0;
    //Temp =  ((MessageRx[17]*26)-278)+MessageRx[18]/10.0;
    //TempOil =  ((MessageRx[21]*26)-278)+MessageRx[22]/10.0;
    //TempFuel =  ((MessageRx[61]*26)-278)+MessageRx[62]/10.0;
    
    int A = 0;
    if  (MessageRx[77]<=0x0A) A = 277;
    if  (MessageRx[77]==0x0B || MessageRx[77]==0x0C) A = 278;
    if  (MessageRx[77]>=0x0D) A = 279;
    double B = MessageRx[78]/10.0;
    double cel , drob ;
    drob = modf(B, &cel);
    if (drob>0.6) cel++;
      TempAir =  ((MessageRx[77]*26)-A)+cel;
    
    if  (MessageRx[17]<=0x0A) A = 277;
    if  (MessageRx[17]==0x0B || MessageRx[77]==0x0C) A = 278;
    if  (MessageRx[17]>=0x0D) A = 279;
    B = MessageRx[18]/10.0;
    drob = modf(B, &cel);
    if (drob>0.6) cel++;
      Temp =  ((MessageRx[17]*26)-A)+cel;

 
    if  (MessageRx[21]<=0x0A) A = 277;
    if  (MessageRx[21]==0x0B || MessageRx[77]==0x0C) A = 278;
    if  (MessageRx[21]>=0x0D) A = 279;
    B = MessageRx[22]/10.0;
    drob = modf(B, &cel);
    if (drob>0.6) cel++;
      TempOil =  ((MessageRx[21]*26)-A)+cel;


    if  (MessageRx[61]<=0x0A) A = 277;
    if  (MessageRx[61]==0x0B || MessageRx[77]==0x0C) A = 278;
    if  (MessageRx[61]>=0x0D) A = 279;
    B = MessageRx[62]/10.0;
    drob = modf(B, &cel);
    if (drob>0.6) cel++;
      TempFuel =  ((MessageRx[61]*26)-A)+cel;
      
    timerenabledPID=0; 
   }
      for (int i = 0; i < 110; i++) MessageRx[i]=0; // очистка байтов массива
     }
     
     
   }

  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  //отправка запроса на диагностическое соединение
  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  void initialization() {
    Serial.println ("Otpravil zapros Init");
    for (int i = 0; i < length5; i++) {
    mySerial.write(messageInit[i]);
    delay (5);
    } 
    delay (55);
 }

  /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  //стартовая инициализация
  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  void 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
    }

  ///////////////////////////////////////////////////////////////////////////////////////////////////////
  //запрос чтения и стирания ошибок
  ///////////////////////////////////////////////////////////////////////////////////////////////////////
  
  void Read() {
    Serial.println ("Zapros error;  ");
    for (int i = 0; i < length8; i++) {
    mySerial.write(messageREAD[i]);
    delay (waitbyte); } 
    }
    
  void Erase() {
    Serial.println ("Zapros erase;  ");
    for (int i = 0; i < length7; i++) {
    mySerial.write(messageERASE[i]);
    delay (waitbyte); } 
    }
  
  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////  
  //прорисовка экранов и работа тачскрина
  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  void Menu () {
      if (myTouch.dataAvailable()) {
         myTouch.read();
         x=myTouch.getX(); 
         y=myTouch.getY();
      if (currentPage == '0') {
      buttonHomeTouch();
      buttonINF1Touch();
      buttonINF2Touch();
      buttonCHECKTouch();     }
      if (currentPage == '1') { 
     buttonHomeTouch();
     buttonINF2Touch();
     buttonCHECKTouch();     }
      if (currentPage == '2') { 
     buttonHomeTouch();
     buttonINF1Touch();
     buttonCHECKTouch();      }
      if (currentPage == '3') { 
      buttonHomeTouch();
      buttonREADTouch();
      buttonERASETouch(); }}}
  
  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  //прописывает заголовки на страницах
  ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   void drawHomeScreen() {
     line() ;
     Watch ();
     myGLCD.drawLine(250,35,250,248); // линия вертикальная
     myGLCD.print("Ltr/Hor :", 10, 40);
     myGLCD.print("Ltr/100 :", 10, 75);
     myGLCD.print("Fuel  L :", 10, 110);
     myGLCD.print("Humed  %:", 10, 145);
     myGLCD.print("PUMP RPM:", 10, 180);
     myGLCD.print("Engi RPM:", 10, 215);
     myGLCD.print("Motor *C:", 255, 40);
     myGLCD.print("Oil   *C:", 255, 75);
     myGLCD.print("Fuel  *C:", 255, 110);
     myGLCD.print("Inter *C:", 255, 145);
     myGLCD.print("Exter *C:", 255, 180);
     myGLCD.print("IntAir*C:", 255, 215);
     buttonHome() ;
     buttonINF1() ;
     buttonINF2() ;
     buttonCHECK() ;
   }
  //-------------------------------------------------
    void drawscreen_one() {
     line() ;
     Watch ();
     myGLCD.print("Start of Delivery  *CA:", 10, 40);
     myGLCD.print("Desir inject Start *CA:", 10, 75);
     myGLCD.print("Actua Inject Start *CA:", 10, 110);
     myGLCD.print("Desir Inject Quan mg/s:", 10, 145);
     myGLCD.print("Actu Inject Quant mg/s:", 10, 180);
     myGLCD.print("MAF  mg/s:", 10, 215);
     myGLCD.print("Barom kPa:", 255, 215);
     buttonHome() ;
     buttonINF2() ;
     buttonCHECK() ;
     }
  //-------------------------------------------------
   void drawscreen_two() {
     line() ;
     Watch ();
     myGLCD.print("Boost Press       Bar:", 10, 40);
     myGLCD.print("Boost Press Com   Bar:", 10, 75);
     myGLCD.print("EGR command      mg/s:", 10, 110);
     myGLCD.print("EGR Pulse Ratio     %:", 10, 145);
     myGLCD.print("Solenoide Pulse     %:", 10, 180);
     myGLCD.print("Solenoide Boost     %:", 10, 215);
     buttonHome() ;
     buttonINF1() ;
     buttonCHECK() ;
   }
  //----------------------------------------------------------------------------
   void drawscreen_three() {
     Watch ();
     myGLCD.setColor(255, 0, 0); // цвет линии красный
     myGLCD.drawLine(1,35,479,35); // линия горизонтальная
     myGLCD.drawLine(1,248,479,248); // линия горизонтальная
     buttonHome();
     buttonERASE();
     buttonREAD();
   }

  ////////////////////////////////////////////////////////////////////////////////////////////////////////
  //координаты тача
  /////////////////////////////////////////////////////////////////////////////////////////////////////////
  void drawFrame(int x1, int y1, int x2, int y2) {
     myGLCD.setColor(255, 0, 0);
     myGLCD.drawRoundRect (x1, y1, x2, y2);
     while (myTouch.dataAvailable())
     myTouch.read();
     myGLCD.setColor(255, 255, 255); 
   }

  /////////////////////////////////////////////////////////////////////////////////////////////////////////
  //прорисовка кнопок и координат тача
  /////////////////////////////////////////////////////////////////////////////////////////////////////////
  void buttonHome() {
     myGLCD.setColor(0,0,0); // цвет кнопки -серый
     myGLCD.fillRoundRect (1, 1, 80, 33);      // расположение кнопки прямоугольника
     myGLCD.setColor(255, 255,255); // цвет текста зеленый
     myGLCD.drawRoundRect (1, 1, 65, 33);      // кнопка будет рамкой
     myGLCD.print("HOME", 1, 0); // центровка строки
    }

    void buttonHomeTouch(){
      if ((x>=1) && (x<=65) &&(y>=1) && (y<=33)) {
        drawFrame(1, 1, 65, 33);
        currentPage = '0';
        myGLCD.clrScr();
        drawHomeScreen(); 
       
      }}

     
     
  void buttonINF1() {
    myGLCD.setColor(0,0,0);
     myGLCD.fillRoundRect (10, 255, 120, 310);
     myGLCD.setColor(0, 255, 0);
     myGLCD.drawRoundRect (10, 255, 120, 310);
     myGLCD.print("INF 1", 25, 265);
    }
   void buttonINF1Touch() {
    if ((x>=10) && (x<=120) && (y>=255) && (y<=310)) {
        drawFrame(10, 255, 120, 310); 
        currentPage = '1';           
        myGLCD.clrScr();             
        drawscreen_one();       
       
      } }

   
  void buttonINF2() {
     myGLCD.setColor(0,0,0);
     myGLCD.fillRoundRect (180, 255, 300, 310);
     myGLCD.setColor(0, 255, 0);
     myGLCD.drawRoundRect (180, 255, 300, 310);
     myGLCD.print("INF 2", 200, 265);
    }
  void buttonINF2Touch() {
    if ((x>=180) && (x<=300) && (y>=255) && (y<=310)) {
        drawFrame(180, 255, 300, 310); 
        currentPage = '2';           
        myGLCD.clrScr();             
        drawscreen_two();   
                                                                      
      }}
  
  void buttonCHECK() {
     myGLCD.setColor(0,0,0);
     myGLCD.fillRoundRect (350, 255, 470, 310);
     myGLCD.setColor(0, 255, 0);
     myGLCD.drawRoundRect (350, 255, 470, 310);
     myGLCD.print("CHECK", 375, 265);
    }
  void buttonCHECKTouch() {
    if ((x>=350) && (x<=470) && (y>=255) && (y<=310)) {
        drawFrame(350, 255, 470, 310); 
        currentPage = '3';           
        myGLCD.clrScr();             
        drawscreen_three();   
                                                                         
      } }

  
    void buttonERASE() {
    myGLCD.setColor(0,0,0);
     myGLCD.fillRoundRect (10, 255, 120, 310);
     myGLCD.setColor(0, 255, 0);
     myGLCD.drawRoundRect (10, 255, 120, 310);
     myGLCD.print("ERASE", 25, 265);
    }
    
    void buttonERASETouch () {
    if ((x>=10) && (x<=120) && (y>=255) && (y<=310)) {
        drawFrame(10, 255, 120, 310); 
        Erase();           //потом заменить на дейсвие
              
                                                                         
      }}
      
    void buttonREAD() {
     myGLCD.setColor(0,0,0);
     myGLCD.fillRoundRect (350, 255, 470, 310);
     myGLCD.setColor(0, 255, 0);
     myGLCD.drawRoundRect (350, 255, 470, 310);
     myGLCD.print("READ", 375, 265);
    }
    
    void buttonREADTouch() {
    if ((x>=350) && (x<=470) && (y>=255) && (y<=310)) {
        drawFrame(350, 255, 470, 310); 
        Read();        //потом заменить на дейсвие   
        
                                                                           
      }}

  ////////////////////////////////////////////////////////////////////////////////////////
  //прорисовка линий
  ///////////////////////////////////////////////////////////////////////////////////////
  void line() {
     myGLCD.setColor(255, 0, 0); // цвет линии красный
     myGLCD.drawLine(1,35,479,35); // линия горизонтальная
     myGLCD.drawLine(1,73,479,73); // линия горизонтальная
     myGLCD.drawLine(1,108,479,108); // линия горизонтальная
     myGLCD.drawLine(1,143,479,143); // линия горизонтальная
     myGLCD.drawLine(1,178,479,178); // линия горизонтальная
     myGLCD.drawLine(1,212,479,212); // линия горизонтальная
     myGLCD.drawLine(1,248,479,248); // линия горизонтальная
   }


  /////////////////////////////////////////////////////////////////////////////////////////////
  //верхняя часть экрана часы и дата отображается на всех экранах
  /////////////////////////////////////////////////////////////////////////////////////////////
  void Watch (){
    DateTime now = rtc.now();
    int m = now.minute(); 
    int hour = now.hour();
    int mon = now.month();
    int date = now.day();
  
    myGLCD.setColor(0, 255, 0); //зеленый цвет цифры
  
    if (date<10) { 
    myGLCD.print("0", 85, 0); 
    myGLCD.printNumI(now.day(), 100, 0); } 
    else if (date >=10) {
    myGLCD.printNumI(now.day(), 85, 0); }
    myGLCD.print("/", 115, 0);
    if ( mon<10) {
    myGLCD.print("0", 130, 0); 
    myGLCD.printNumI(now.month(), 145, 0);} 
    else if (mon >=10) {
    myGLCD.printNumI(now.month(), 130, 0);}  
    myGLCD.print("/", 160, 0);
    myGLCD.printNumI(now.year(), 175, 0);
    if (hour<10) {
    myGLCD.print("0",255, 0); 
    myGLCD.printNumI(now.hour(), 270, 0); } 
    else if(hour>=10){ 
    myGLCD.printNumI(now.hour(), 255, 0); } 
    if (m<10) {
    myGLCD.print("0",300, 0); 
    myGLCD.printNumI(now.minute(), 315, 0); } 
    else if (m>=10){ 
    myGLCD.printNumI(now.minute(), 300, 0); }
    myGLCD.print("Km/h", 410, 0);
 
  
 }
  void Temperature (){
    h = dht.readHumidity();
    t = dht.readTemperature();
    sensors.requestTemperatures();
    }
 

я конечно сам буду пробовать занести. буду ставить везде 2, типа TX2, mySerial2 и т.д. а завтра подсоеденю второй адаптер и буду менять номер байта выводимого на экран. и найду бак и километры. а там и до расхода не далеко

MaksVV
Offline
Зарегистрирован: 06.08.2015

а сколько раз приходит сообщение с идент данными. в снифе оно почемуто три раза пришло 

вот так ещё попробуй. с запросом на сообщение с данными

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); //R,T
#define TX 11
byte nol = 0x00;

void setup() {
delay (500);
Serial.begin(115200);
pinMode (TX, OUTPUT);

digitalWrite (TX, HIGH);
delay (500);
digitalWrite (TX, LOW);
delay (20);
digitalWrite (TX, HIGH );
delay (15);
digitalWrite (TX, LOW);
delay (5);
digitalWrite (TX, HIGH);
delay (5);

mySerial.begin(9600); 

}

void loop() {


if (mySerial.available()) {

    byte inByte = mySerial.read();
    Serial.print(" ");
    Serial.print(inByte,HEX);
 if (inByte==0x80) {mySerial.write (0x7F); delay (1);}
 if (inByte==0xF0) {
     mySerial.write (0x02);
     delay (1);
     mySerial.write (0x11);
     delay (1);
     mySerial.print (0, HEX);
     delay (1);
     mySerial.write (0x13);
     delay (1);
   }
     
    }
}

 

viki13viki
Offline
Зарегистрирован: 14.11.2016

..

viki13viki
Offline
Зарегистрирован: 14.11.2016

вот что приходит

 55 52 80 FF 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 2D A0 48 54 20 32

 

нифига. блин это идент. ты прав - HT 24419560 1400 4199 1301 042 1 0000000000ð сыпет без остановки

MaksVV
Offline
Зарегистрирован: 06.08.2015

видать он будет сыпать пока другую каманду не даш, а я не могу её дать , так как в софт сериале не могу байт 0 отправить. В хардовом всё нормально, чё за фигня

viki13viki
Offline
Зарегистрирован: 14.11.2016

???? ненаю. рою. я уже обрадовался с 2D а панель с 23 начинается. 

MaksVV
Offline
Зарегистрирован: 06.08.2015

надо послать команду 02  11 00 13, чтоб получить строку с 23

а я ноль не могу отправить, хрень какая то, помог бы кто, создай тему в программитровании как

в софтсериал е вот это отправить, у меня не компилится 

mySerial.write(0)

viki13viki
Offline
Зарегистрирован: 14.11.2016

может скомпилится на моей версии? кинь скетч, сейчас проверим

MaksVV
Offline
Зарегистрирован: 06.08.2015

нашел как ноль отправить, вот 

#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); //R,T
#define TX 11
byte nol = 0x00;

void setup() {
delay (500);
Serial.begin(115200);
pinMode (TX, OUTPUT);

digitalWrite (TX, HIGH);
delay (500);
digitalWrite (TX, LOW);
delay (20);
digitalWrite (TX, HIGH );
delay (15);
digitalWrite (TX, LOW);
delay (5);
digitalWrite (TX, HIGH);
delay (5);

mySerial.begin(9600); 

}

void loop() {


if (mySerial.available()) {

    byte inByte = mySerial.read();
    Serial.print(" ");
    Serial.print(inByte,HEX);
 if (inByte==0x80) {mySerial.write (0x7F); delay (1);}
 if (inByte==0xF0) {
     mySerial.write (0x02);
     delay (1);
     mySerial.write (0x11);
     delay (1);
     mySerial.write(byte(0));
     delay (1);
     mySerial.write (0x13);
     delay (1);
   }
     
    }
}

 

viki13viki
Offline
Зарегистрирован: 14.11.2016

вот есть тема http://arduino.ru/forum/programmirovanie/softwareserial-kak-otpravit-0-0

щас попробую

viki13viki
Offline
Зарегистрирован: 14.11.2016

вот что пришло. 

55 52 80 FF 2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 FF FF FF FF 23 A1 4 0 0 0 0 0 0 0 0 0 0 4 0 AC 0 FF 81 1F 1E 1B 47 0 0 0 99 13 F6 AE 3 AA 48 CB 1 7 A8 23 A1 4 0 0 0 0 0 0 0 0 0 0 4 0 A9 0 FF 82 1E 1E 1B 47 0 0 0 99 13 F6 AE 3 AA 48 CB 1 7 A5 23 A1 4 0 0 0 0 0 0 0 0 0 0 4 0 AC 0 FF 81 1E 1E 1B 47 0 0 0 99 13 F6 AE 3 AA 48 CB 1 7 A7 23 A1 4 0 0 0 0 0 0 0 0 0 0 4 0 AB 0 FF 82 1E 1E 1B 47 0 0 0 99 13 F6 AE 3 AA 48 CB 1 7 A7 23 A1 4 0 0 0 0 0 0 0 0 0 0 4 0 AC 0 FF 7F 1E 1E 1B 47 0 0 0 99 13 F6 AE 3 AA 48 CB 1 7 A5 23 A1 4 0 0 0 0 0 0 0 0 0 0 4 0 AB 0 FF 80 C7 1E 1B 47 0 0 0 99 13 F6 AE 3 AA 48 CB 1 7 A5 6 F0 D5 10 14 10 1 7F FF 6 F0 D5 10 14 10 1 7F FF 6 F0 D5 10 14 10 1 7F FF 6 F0 D5 10 14 10 1 7F FF

данные панели есть. пошло все и остановилось. 

разбил для удобства

55 52 80 
FF 
2D A0 48 54 20 32 34 34 31 39 35 36 30 20 31 34 30 30 20 34 31 39 39 20 31 33 30 31 20 30 34 32 20 31 20 30 30 30 30 30 30 30 30 30 30 8 F0 
FF FF FF FF 
        23 A1 4 0 0 0 0 0 0 0 0 0 0 4 0 AC 0 FF 81 1F 1E 1B 47 0 0 0 99 13 F6 AE 3 AA 48 CB 1 7 A8 
        23 A1 4 0 0 0 0 0 0 0 0 0 0 4 0 A9 0 FF 82 1E 1E 1B 47 0 0 0 99 13 F6 AE 3 AA 48 CB 1 7 A5 
	23 A1 4 0 0 0 0 0 0 0 0 0 0 4 0 AC 0 FF 81 1E 1E 1B 47 0 0 0 99 13 F6 AE 3 AA 48 CB 1 7 A7 
	23 A1 4 0 0 0 0 0 0 0 0 0 0 4 0 AB 0 FF 82 1E 1E 1B 47 0 0 0 99 13 F6 AE 3 AA 48 CB 1 7 A7 
	23 A1 4 0 0 0 0 0 0 0 0 0 0 4 0 AC 0 FF 7F 1E 1E 1B 47 0 0 0 99 13 F6 AE 3 AA 48 CB 1 7 A5 
	23 A1 4 0 0 0 0 0 0 0 0 0 0 4 0 AB 0 FF 80 C7 1E 1B 47 0 0 0 99 13 F6 AE 3 AA 48 CB 1 7 A5 
			6 F0 D5 10 14 10 1 7F FF 
			6 F0 D5 10 14 10 1 7F FF 
			6 F0 D5 10 14 10 1 7F FF 
			6 F0 D5 10 14 10 1 7F FF

 

MaksVV
Offline
Зарегистрирован: 06.08.2015

всё правильно, панель на каждый запрос по 6 сообщений отсылает похоже. Мы будем периодически отправлять запрос и всё. Дело, идет, однако

viki13viki
Offline
Зарегистрирован: 14.11.2016

блин не долго kw82 осталось жыть.;)

MaksVV
Offline
Зарегистрирован: 06.08.2015

), а че адрес то панели в итоге B8 оказался ? не ужели такое бывает, что нам повезло?