mc 33290 и k-line адаптер

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

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

taha17
taha17 аватар
Offline
Зарегистрирован: 08.10.2017

Так как нагнетатель сейчас не работает, то проснифить в целом всю работу не получиться. Или вам интересно что там за обмен между прогами и котлом, то без вопросов могу заделать. Ну а потом и в полностью рабочем состоянии. Как думаете, два провода к-линии можно между собой соединить и потом данные читать?? Или на Эбер отдельную дуню повесить??

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

Линии к-лайн котла и основную автомобиля соединять нельзя! Если конечно это изначально не одна K-линия, что очень врядли. Если у вас будет ардуино мега, то нужно будет только два адаптера к-лайн (оба будут подсоединены в аппаратным Serial портам дуни). Если нано, то и ардуины две (каждый к-лайн адаптер к своей дуне). 

Насчет сниффа, ну будет время снимите (пока демо версия программы сниффера не кончилась).  Хочется посмотреть как идёт обмен и сравнить с тем постом из кархелп, если совпадёт - задача ещё упрощается. Опять всё сделали за нас)

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

taha17
taha17 аватар
Offline
Зарегистрирован: 08.10.2017

Разобрался я с моторчиком нагнетателя. Разобрал пересмотрел всё, ничего существенного показывающего что он не рабочий-нет(счетки и подшипники в норме). 

Единственное что могло быть причиной не нормальной работы - это чуть цеплявшееся пластмаса которая нагоняет воздух. приподнял её чуть выше, что бы вообще не цепляла и все. Эбер заработал ))) даю ссылки на диагностику двумя прогами. Забегая вперед скажу,  что тест исполнителей эдитом не смог сделать, просит оригинальный шнур... общая получилась.

https://drive.google.com/open?id=1oFgPNkMWlUhq8XEZtPwQ2OPA0fSNYgY0

https://drive.google.com/open?id=1EaQ2ONQidD3ZRn0SCRIs5fMNbm30KrF9

Посмотрите, может что возможно тут подсмотреть 

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

по обеим ссылкам никакого обмена толком нет, либо по какой то причине не просниффилось корректно. Там только повторяющиеся одни и те же байты. (справа то смотрите -  там байты представлены в символах ASCII, сразу видно, что всё без конца повторяется). 

taha17
taha17 аватар
Offline
Зарегистрирован: 08.10.2017

Я когда выложил, то только тогда заметил, что там дублируется всё. Эх((((
Попробую ещё поколдовать над эдитом... вдруг, что получиться. В нете везде штудируют что для дигностики котлов нужен резистр подтяжки другой(560 Ом). Может мне в дуню залить тот самый первый скетч и посмотреть что выведет в терминал. Может все таки с подтяжкой надо поиграться. Есть какие мысли по этому поводу ??

taha17
taha17 аватар
Offline
Зарегистрирован: 08.10.2017

Начал вот тестить дисплей и попробовал вывестиь стандартные примеры. Потом попытаюсь привезать к рабочему скетчу. Неудобство этого дисплея в том, что когда происходит затирание экрана(для того что бы вывести новую инфу) сопровождается морганием. старая инфа-дисплей моргнул-появилась новая. Буду еще искать примеры, так видел что выводят время и секунды не моргают.... надо менять только изменившееся данные.делать проверку. 


#include <SPI.h>            // Подключаем библиотеку для работы с устройством по интерфейсу SPI
#include <Adafruit_GFX.h>   // Подключаем библиотеку для работы с текстом и графикой
#include <TFT_ILI9163C.h>   // Подключаем библиотеку программных драйверов для работы с дисплеем 1.44 128x128 SPI 

// В следующих 8-и строках опеределяем названия и соответствующие им RGB обозначения цветов, которые будем выводить на дисплей
#define BLACK   0x0000
#define BLUE    0x001F
#define RED     0xF800  
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0  
#define WHITE   0xFFFF

#define __CS 10                                           // Определяем пин к которому подключен разъем CS дисплея
#define __DC 9                                            // Определяем пин к которому подключен разъем A0 дисплея
#define __RES 8                                           // Определяем пин к которому подключен разъем RESET дисплея
TFT_ILI9163C display = TFT_ILI9163C(__CS, __DC, __RES);   // Связываем объект display с библиотекой TFT_ILI9163C и сообщаем библиотеке определенные для работы с дисплеем пины

// Начало функции обработки кириллических символов
String utf8rus(String source)     // Функция для конвертации русских символов из кодировки CP1251 в UTF8
{
  int i,k;
  String target;
  unsigned char n;
  char m[2] = { '0', '\0' };
  k = source.length(); i = 0;
  while (i < k) {
    n = source[i]; i++;
 
    if (n >= 0xBF){
      switch (n) {
        case 0xD0: {
          n = source[i]; i++;
          if (n == 0x81) { n = 0xA8; break; }
          if (n >= 0x90 && n <= 0xBF) n = n + 0x2F;
          break;
        }
        case 0xD1: {
          n = source[i]; i++;
          if (n == 0x91) { n = 0xB7; break; }
          if (n >= 0x80 && n <= 0x8F) n = n + 0x6F;
          break;
        }
      }
    }
    m[0] = n; target = target + String(m);
  }
  return target;
}
// Конец функции обработки кириллических симоволов

void setup() {
  display.begin();                                                // Иницализируем дисплей
}

void loop() {

 
  
  for (int i=0; i <= 255; i++){
  display.fillScreen();                                           // Очищаем дисплей перед выводом
  display.setTextSize(2);                                         // Определяем размер шрифта
  display.setCursor(2,5);                                         // Устанавливаем курсор в левый верхний угол области вывода
  //display.setTextColor(GREEN);                                  // Определяем цвет вывода на дисплей
  display.print(utf8rus("ПР0:"));                                        
  display.setCursor(50,5);                                       
  display.print(i);

  display.setTextSize(2); 
  display.setCursor(2,25);                                       // Устанавливаем курсор в левый верхний угол области вывода
  display.print(utf8rus("ПР1:"));                            // Выводим строку на русском
  display.setCursor(50,25);                                       
  display.print(i*3);
  
  display.setCursor(2,45);                                       // Устанавливаем курсор в левый верхний угол области вывода
  display.print(utf8rus("ПР2:"));                            // Выводим строку на русском
  display.setCursor(50,45);                                       
  display.print(i+74);
    
  
  delay(1000);
  }
  

  
  /*display.setCursor(2,65);                                       // Устанавливаем курсор в левый верхний угол области вывода
  display.print(utf8rus("ПР3:"));                              // Выводим строку на русском
  display.setCursor(50,65);                                       
  display.print(utf8rus("3333"));

  
  display.setCursor(2,85);                                       // Устанавливаем курсор в левый верхний угол области вывода
  display.print(utf8rus("ПР4:"));                              // Выводим строку на русском
  display.setCursor(50,85);                                       
  display.print(utf8rus("4444"));

  display.setCursor(2,105);                                       // Устанавливаем курсор в левый верхний угол области вывода
  display.print(utf8rus("ПР5:"));                              // Выводим строку на русском
  display.setCursor(50,105);                                       
  display.print(utf8rus("5555"));

  delay(1000);    */                                                // Задержка 3 секунды
}


 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Совет: чисти не весь ыкран, а только прямоугольник вывода

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

Если прямоугольником затирать все равно будет мерцать, т.к. периодичность вывода на экран для БК нужна очень частая для плавности показаний. В библиотеках на tft экраны обычно это уже отработано специальной функцией. Типа при печати переменной задаешь также сколько символов она будет занимать и библиотека сама затирает старые символы.
P.s. читайте тему про опель, там все это проходили.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

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

Но нормальная библиотека должне поддерживать управление "стилем" вывода символа, т.е. выводить его с "прозрачным" фоном либо заливать фон при выводе определенным цветом. Т.е в настройках указывается два цвета: которым собственно рисуется сам символ и которым заливаектся все знакоместо под ним.

Вообще-то это стандартная практика.

Боле того, в Windows, например, именно режим с "непрозрачным" фоном является режимом по умолчанию.

Ну, что на Ардуино режимио по умолчанию является "прозрачный" фон, я уже понял. А вот тема мерцания всплывает настолько часто, что возникает естественный вопрос: действительно ли стандартные библиотеки Ардуино настолько кривы, что не поддерживают наиболее востребованные режимы, или просто люди не умеют пользоваться библиотеками?

 

PS. На случай кривости библиотек можно, естественно, самому написать нужную функцию вывода символа. Но если это не по зубам, можно чистить не все поле вывода целиком, а посимвольно: почистил знакоместо - вывел очередной символ, почистил следующее знакоместо - вывел следующий.

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

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

скорее последнее. Вот, например, выдержка из одной библиотеки: 

//printNumI – выводит на дисплей целое число или содержимое целочисленной переменной. В качестве параметров передаются выводимое значение и координаты верхнего левого угла области печати. Опциональные параметры позволяют управлять форматом вывода.

//Выводимое на печать значение может быть передано в виде целого числа:

myGLCD.printNumI(1250,0,0);

//Дополнительные опциональные параметры этой команды позволяют задать формат вывода чисел. Параметр length определяет минимальное количество знакомест (включая знак числа), занимаемых выводимым числом на дисплее. Если количество разрядов числа меньше, чем заданное значение length – недостающее количество знакомест дополняется слева нужным количеством символов. Параметр filler позволяет задать символ (по умолчанию — пробел), которым будет дополняться число. Комбинация этих символов позволяет, в частности, организовать вывод чисел, выровненных по правой границе или дополнять незначащими нулями значения при выводе времени или даты. Т. е. вместо привычной конструкции:

byte Day = 2;
byte Month = 9;
int Year = 2013;
if (Day<10){
myGLCD.print("0",0,0);
myGLCD.printNumI(Day,16,0);
}else{
myGLCD.printNumI(Day,0,0);}
myGLCD.print(".", 32,0);
if (Month<10){
myGLCD.print("0",48,0);
myGLCD.printNumI(Month,64,0);
}else{
myGLCD.printNumI(Month,48,0,2,'0');}
myGLCD.print(".", 80,0);
myGLCD.printNumI(Year,96,0);

//можно просто написать:
byte Day = 2;
byte Month = 9;
int Year = 2013;
myGLCD.printNumI(Day,0,0,2,'0');
myGLCD.print(".", 32,0);
myGLCD.printNumI(Month,48,0,2,'0');
myGLCD.print(".", 80,0);
myGLCD.printNumI(Year,96,0);
не правда ли так гораздо лучше? 


 

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

andriano пишет:
нормальная библиотека должна поддерживать управление "стилем" вывода символа, т.е. выводить его с "прозрачным" фоном либо заливать фон при выводе определенным цветом. Т.е в настройках указывается два цвета: которым собственно рисуется сам символ и которым заливаектся все знакоместо под ним.

Вообще-то это стандартная практика......

.....можно чистить не все поле вывода целиком, а посимвольно: почистил знакоместо - вывел очередной символ, почистил следующее знакоместо - вывел следующий.

Я думаю речь была не про фон, а про "старые" нули. Если было например число 1000, а потом стало 100, один ноль уже протух, его бы надо удалить. 

taha17
taha17 аватар
Offline
Зарегистрирован: 08.10.2017

Попробовал пока затирать фон, действительно осталось маленькое мерцание, но уже не всего дисплея, а той только части где идет вывод.
 

       display.fillRect(70,5,52,27,0x0000); //заливка цветом выделенной области (стирает старое)      
       display.setTextSize(3);
       display.setCursor(70,5);
       display.print(i);

 

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

пробуй как #161 не будет мерцания

taha17
taha17 аватар
Offline
Зарегистрирован: 08.10.2017

что-то я совсем запутался с подключением и инициализации с этой (UTFT.h) библиотекой. Везде всё по разному. Даже пример не могу проверить. У меня дисплей ST7735.
Пытался руководствоваться
http://wiki.iarduino.ru/page/rabota-s-cvetnym-graficheskim-displууь.

и файлом UTFT.cpp из библиотеки

На библиотеке <TFT_ILI9163C.h> , подключал как на красной картинке справа 

 

Получилось вот так:

UTFT myGLCD(ST7735, 11, 13, 10, 8,9);

 
ща буду дальше пробовать
taha17
taha17 аватар
Offline
Зарегистрирован: 08.10.2017

myGLCD.printNumI(1250,0,0); - действительно то что надо )))

Буду скоро проверять в боевых условиях))

Вот простой примерчик, который получился: 

#include <UTFT.h>                                      // подключаем библиотеку UTFT
extern uint8_t SmallFont[];                            // подключаем маленький шрифт
extern uint8_t BigFont[];                              // подключаем большой шрифт
extern uint8_t SevenSegNumFont[];                      // подключаем цифровой шрифт
UTFT myGLCD(ST7735, 11, 13, 10, 8, 9);
void setup()
{
  myGLCD.InitLCD();                                    // инициируем дисплей (в качестве параметра данной функции можно указать ориентацию дисплея: PORTRAIT или LANDSCAPE), по умолчанию LANDSCAPE - горизонтальная ориентация
}
void loop()
{
//Стираем все с экрана
  myGLCD.clrScr();                                     // стираем всю информацию с дисплея
  myGLCD.setFont(SmallFont);                           // устанавливаем маленький шрифт
  myGLCD.setColor(VGA_WHITE);                          // устанавливаем цвет текста
  myGLCD.print("iarduino.ru", CENTER, 25); // выводим текст на дисплей
  myGLCD.setFont(SmallFont);                             // устанавливаем большой шрифт
  myGLCD.setColor(VGA_BLUE);                           // устанавливаем цвет текста
  myGLCD.print("BigFont", CENTER, 50);                // выводим текст на дисплей
  myGLCD.print("iarduino.ru", CENTER, 60);            // выводим текст на дисплей
  myGLCD.setFont(SmallFont);                     // устанавливаем цифровой шрифт
  myGLCD.setColor(VGA_FUCHSIA);                        // устанавливаем цвет текста
  myGLCD.print("1234567890", CENTER, 75);             // выводим текст на дисплей

  for (int i=100; i <= 3500; i++)
  {
  myGLCD.printNumI(i,75,90);
  }
  delay(20000);
}

taha17
taha17 аватар
Offline
Зарегистрирован: 08.10.2017

Вот уже получилось вывести кое-какие данные на дисплей. Еще один шаг сперед) ))) "Снег" на экране от того, что закоментирована функция стирания всей информации с дисплея myGLCD.clrScr(); Потом надо будет запустить её один раз при включении, а то получаются опять "как бы мерцания". MaksVV, прошу вас помощи в оптимизации скетча и допиливанию других возможностей. Код еле-еле влез в UNO. То, что закоментировано с несколькими звездочками(***)-коментировал я сам (мож, что и лишнее)))).. остальные коментарии кода Ваши и Александра. Надо бы всё исключить, что связано с прошлым дисплеем, который от изначально проекта. И еще... лень было тащить ноут в машину, запитал дуни от зарядки телефона через прикуриватель, дуня повисала на 7-10 секунде. Перезапуск помогал, но не решил я рисковать больше 3-х раз... дабы не спалить её.

/*
Arduino Nano OBD reader (OBD protocol KW1281,  Audi A4 B5 etc.)

wiring:
D2 --- OBD level shifter input (RX) (e.g. LM339)
D3 --- OBD level shifter output (TX) (e.g. LM339)
A5 --- Arduino 20x4 LCD display SCL
A4 --- Arduino 20x4 LCD display SDA

NOTE: For the level shifting, I used a 'AutoDia K409 Profi USB adapter', disassembled it,
      and connected the Arduino to the level shifter chip (LM339) - the original FTDI chip TX line
      was removed (so it does not influence the communication)                                                                                              
*/

#include <UTFT.h>                                      // подключаем библиотеку UTFT
extern uint8_t SmallFont[];                            // подключаем маленький шрифт
extern uint8_t BigFont[];                              // подключаем большой шрифт
extern uint8_t SevenSegNumFont[];                      // подключаем цифровой шрифт
UTFT myGLCD(ST7735, 11, 13, 10, 8, 9);

#include <Wire.h>
//******#include "LiquidCrystal_I2C.h"
#include "NewSoftwareSerial.h"

#define pinKLineRX 5
#define pinKLineTX 6
#define pinLED 2
#define pinBuzzer 3
#define pinButton 4


// <a href="https://www.blafusel.de/obd/obd2_kw1281.html" rel="nofollow">https://www.blafusel.de/obd/obd2_kw1281.html</a>

#define ADR_Engine 0x01
#define ADR_Gears  0x02
#define ADR_ABS_Brakes 0x03
#define ADR_Airbag 0x15
#define ADR_Dashboard 0x17
#define ADR_Immobilizer 0x25
#define ADR_Central_locking 0x35

//#define DEBUG 1

//*******LiquidCrystal_I2C lcd(0x27,20,4);  // set the LCD address to 0x20 for a 16 chars and 2 line display
NewSoftwareSerial obd(pinKLineRX, pinKLineTX, false); // RX, TX, inverse logic

uint8_t currAddr = 0;
uint8_t blockCounter = 0;
uint8_t errorTimeout = 0;
uint8_t errorData = 0;
bool connected = false;
int sensorCounter = 0;
int pageUpdateCounter = 0;
int alarmCounter = 0;

uint8_t currPage = 2;


int8_t coolantTemp = 0;
int8_t oilTemp = 0;
int8_t intakeAirTemp = 0;
int8_t oilPressure = 0;
float engineLoad = 0;
int   engineSpeed = 0;
float throttleValve = 0;
float supplyVoltage = 0;
uint8_t vehicleSpeed = 0;
uint8_t fuelConsumption = 0;
uint8_t fuelLevel = 0;
unsigned long odometer = 0;

// наши параметры
int TurboPressure = 0;
int TurboPressure_target = 0;
uint8_t Turbocharger_valve = 0;
uint8_t EGR_duty = 0;
int EGR_Consumption = 0;
int EGR_Consumption_target = 0;



String floatToString(float v){
  String res; 
  char buf[16];      
  dtostrf(v,4, 2, buf); 
  res=String(buf);
  return res;
}

void disconnect(){
  connected = false;
  currAddr = 0;
}

/***********void lcdPrint(int x, int y, String s, int width = 0){
  lcd.setCursor(x,y);
  while (s.length() < width) s += " ";
  lcd.print(s);
}*/

void obdWrite(uint8_t data){
#ifdef DEBUG
  Serial.print("uC:");
  Serial.println(data, HEX);
#endif
  obd.write(data);
}

uint8_t obdRead(){
  unsigned long timeout = millis() + 1000;  
  while (!obd.available()){
    if (millis() >= timeout) {
      Serial.println(F("ERROR: obdRead timeout"));
      disconnect();      
      errorTimeout++;
      return 0;
    }
  }
  uint8_t data = obd.read();
#ifdef DEBUG  
  Serial.print("ECU:");
  Serial.println(data, HEX);
#endif  
  return data;
}

// 5Bd, 7O1
void send5baud(uint8_t data){
  // // 1 start bit, 7 data bits, 1 parity, 1 stop bit
  #define bitcount 10
  byte bits[bitcount];
  byte even=1;
  byte bit;
  for (int i=0; i < bitcount; i++){
    bit=0;
    if (i == 0)  bit = 0;
      else if (i == 8) bit = even; // computes parity bit
      else if (i == 9) bit = 1;
      else {
        bit = (byte) ((data & (1 << (i-1))) != 0);
        even = even ^ bit;
      }
    Serial.print(F("bit"));      
    Serial.print(i);          
    Serial.print(F("="));              
    Serial.print(bit);
    if (i == 0) Serial.print(F(" startbit"));
      else if (i == 8) Serial.print(F(" parity"));    
      else if (i == 9) Serial.print(F(" stopbit"));              
    Serial.println();      
    bits[i]=bit;
  }
  // now send bit stream    
  for (int i=0; i < bitcount+1; i++){
    if (i != 0){
      // wait 200 ms (=5 baud), adjusted by latency correction
      delay(200);
      if (i == bitcount) break;
    }
    if (bits[i] == 1){ 
      // high
      digitalWrite(pinKLineTX, HIGH);
    } else {
      // low
      digitalWrite(pinKLineTX, LOW);
    }
  }
  obd.flush();
}


bool KWP5BaudInit(uint8_t addr){
  Serial.println(F("---KWP 5 baud init"));
  //delay(3000);
  send5baud(addr);
  return true;
}


bool KWPSendBlock(char *s, int size){
  Serial.print(F("---KWPSend sz="));
  Serial.print(size);
  Serial.print(F(" blockCounter="));
  Serial.println(blockCounter);    
  // show data
  Serial.print(F("OUT:"));
  for (int i=0; i < size; i++){    
    uint8_t data = s[i];
    Serial.print(data, HEX);
    Serial.print(" ");    
  }  
  Serial.println();
  for (int i=0; i < size; i++){
    uint8_t data = s[i];    
    obdWrite(data);
    /*uint8_t echo = obdRead();  
    if (data != echo){
      Serial.println(F("ERROR: invalid echo"));
      disconnect();
      errorData++;
      return false;
    }*/
    if (i < size-1){
      uint8_t complement = obdRead();        
      if (complement != (data ^ 0xFF)){
        Serial.println(F("ERROR: invalid complement"));
        disconnect();
        errorData++;
        return false;
      }
    }
  }
  blockCounter++;
  return true;
}

// count: if zero given, first received byte contains block length
// 4800, 9600 oder 10400 Baud, 8N1
bool KWPReceiveBlock(char s[], int maxsize, int &size){  
  bool ackeachbyte = false;
  uint8_t data = 0;
  int recvcount = 0;
  if (size == 0) ackeachbyte = true;
  Serial.print(F("---KWPReceive sz="));
  Serial.print(size);
  Serial.print(F(" blockCounter="));
  Serial.println(blockCounter);
  if (size > maxsize) {
    Serial.println("ERROR: invalid maxsize");
    return false;
  }  
  unsigned long timeout = millis() + 1000;  
  while ((recvcount == 0) || (recvcount != size)) {
    while (obd.available()){      
      data = obdRead();
      s[recvcount] = data;    
      recvcount++;      
      if ((size == 0) && (recvcount == 1)) {
        size = data + 1;
        if (size > maxsize) {
          Serial.println("ERROR: invalid maxsize");
          return false;
        }  
      }
      if ((ackeachbyte) && (recvcount == 2)) {
        if (data != blockCounter){
          Serial.println(F("ERROR: invalid blockCounter"));
          disconnect();
          errorData++;
          return false;
        }
      }
      if ( ((!ackeachbyte) && (recvcount == size)) ||  ((ackeachbyte) && (recvcount < size)) ){
        obdWrite(data ^ 0xFF);  // send complement ack        
        /*uint8_t echo = obdRead();        
        if (echo != (data ^ 0xFF)){
          Serial.print(F("ERROR: invalid echo "));
          Serial.println(echo, HEX);
          disconnect();
          errorData++;
          return false;
        }*/
      }
      timeout = millis() + 1000;        
    } 
    if (millis() >= timeout){
      Serial.println(F("ERROR: timeout"));
      disconnect();
      errorTimeout++;
      return false;
    }
  }
  // show data
  Serial.print(F("IN: sz="));  
  Serial.print(size);  
  Serial.print(F(" data="));  
  for (int i=0; i < size; i++){
    uint8_t data = s[i];
    Serial.print(data, HEX);
    Serial.print(F(" "));    
  }  
  Serial.println();
  blockCounter++;
  return true;
}

bool KWPSendAckBlock(){
  Serial.print(F("---KWPSendAckBlock blockCounter="));
  Serial.println(blockCounter);  
  char buf[32];  
  sprintf(buf, "\x03%c\x09\x03", blockCounter);  
  return (KWPSendBlock(buf, 4));
}

bool connect(uint8_t addr, int baudrate){  
  Serial.print(F("------connect addr="));
  Serial.print(addr);
  Serial.print(F(" baud="));  
  Serial.println(baudrate);  
  tone(pinBuzzer, 1200);    
  delay(100);
  noTone(pinBuzzer);            
  //lcd.clear();
  /******lcdPrint(0,0, F("KW1281 wakeup"), 20);
  lcdPrint(0,1, "", 20);
  lcdPrint(0,2, "", 20);  *///
  blockCounter = 0;  
  currAddr = 0;
  obd.begin(baudrate);       
  KWP5BaudInit(addr);
  // answer: 0x55, 0x01, 0x8A          
  char s[3];
  //****lcdPrint(0,0, F("KW1281 recv"), 20);
  int size = 3;
  if (!KWPReceiveBlock(s, 3, size)) return false;
  if (    (((uint8_t)s[0]) != 0x55) 
     ||   (((uint8_t)s[1]) != 0x01) 
     ||   (((uint8_t)s[2]) != 0x8A)   ){
    Serial.println(F("ERROR: invalid magic"));
    disconnect();
    errorData++;
    return false;
  }
  currAddr = addr;
  connected = true;  
  if (!readConnectBlocks()) return false;
  return true;
}
  
bool readConnectBlocks(){  
  // read connect blocks
  Serial.println(F("------readconnectblocks"));
  //****lcdPrint(0,0, F("KW1281 label"), 20);
  String info;  
  while (true){
    int size = 0;
    char s[64];
    if (!(KWPReceiveBlock(s, 64, size))) return false;
    if (size == 0) return false;
    if (s[2] == '\x09') break; 
    if (s[2] != '\xF6') {
      Serial.println(F("ERROR: unexpected answer"));
      disconnect();
      errorData++;
      return false;
    }
    String text = String(s);
    info += text.substring(3, size-2);
    if (!KWPSendAckBlock()) return false;
  }
  Serial.print("label=");
  Serial.println(info);
  //lcd.setCursor(0, 1);
  //lcd.print(info);      
  return true;
}

bool readSensors(int group){
  Serial.print(F("------readSensors "));
  Serial.println(group);
  //****lcdPrint(0,0, F("KW1281 sensor"), 20);  
  char s[64];
  sprintf(s, "\x04%c\x29%c\x03", blockCounter, group);
  if (!KWPSendBlock(s, 5)) return false;
  int size = 0;
  KWPReceiveBlock(s, 64, size);
  if (s[2] != '\xe7') {
    Serial.println(F("ERROR: invalid answer"));
    disconnect();
    errorData++;
    return false;
  }
  int count = (size-4) / 3;
  Serial.print(F("count="));
  Serial.println(count);
  for (int idx=0; idx < count; idx++){
    byte k=s[3 + idx*3];
    byte a=s[3 + idx*3+1];
    byte b=s[3 + idx*3+2];
    String n;
    float v = 0;
    Serial.print(F("type="));
    Serial.print(k);
    Serial.print(F("  a="));
    Serial.print(a);
    Serial.print(F("  b="));
    Serial.print(b);
    Serial.print(F("  text="));
    String t = "";
    String units = "";
    char buf[32];    
    switch (k){
      case 0x01:  v=0.2*a*b;             units=F("rpm"); break;
      case 0x02:  v=a*0.002*b;           units=F("%%"); break;
      case 0x03:  v=0.002*a*b;           units=F("Deg"); break;
      case 0x04:  v=abs(b-127)*0.01*a;   units=F("ATDC"); break;
      case 0x05:  v=a*(b-100)*0.1;       units=F("°C");break;
      case 0x06:  v=0.001*a*b;           units=F("V");break;
      case 0x07:  v=0.01*a*b;            units=F("km/h");break;
      case 0x08:  v=0.1*a*b;             units=F(" ");break;
      case 0x09:  v=(b-127)*0.02*a;      units=F("Deg");break;
      case 0x0A: if (b == 0) t=F("COLD"); else t=F("WARM");break;
      case 0x0B: v=0.0001*a*(b-128)+1;  units = F(" ");break;
      case 0x0C: v=0.001*a*b;           units =F("Ohm");break;
      case 0x0D: v=(b-127)*0.001*a;     units =F("mm");break;
      case 0x0E: v=0.005*a*b;           units=F("bar");break;
      case 0x0F: v=0.01*a*b;            units=F("ms");break;
      case 0x12: v=0.04*a*b;            units=F("mbar");break;
      case 0x13: v=a*b*0.01;            units=F("l");break;
      case 0x14: v=a*(b-128)/128;       units=F("%%");break;
      case 0x15: v=0.001*a*b;           units=F("V");break;
      case 0x16: v=0.001*a*b;           units=F("ms");break;
      case 0x17: v=(b*a)/256;             units=F("%%");break;
      case 0x18: v=0.001*a*b;           units=F("A");break;
      case 0x19: v=(b*1.421)+(a/182);   units=F("g/s");break;
      case 0x1A: v=float(b-a);          units=F("C");break;
      case 0x1B: v=abs(b-128)*0.01*a;   units=F("°");break;
      case 0x1C: v=float(b-a);          units=F(" ");break;
      case 0x1E: v=b/12*a;              units=F("Deg k/w");break;
      case 0x1F: v=b/2560*a;            units=F("°C");break;
      case 0x21: v=100*b/a;             units=F("%%");break;
      case 0x22: v=(b-128)*0.01*a;      units=F("kW");break;
      case 0x23: v=0.01*a*b;            units=F("l/h");break;
      case 0x24: v=((unsigned long)a)*2560+((unsigned long)b)*10;  units=F("km");break;
      case 0x25: v=b; break; // oil pressure ?!
      // ADP: FIXME!
      /*case 37: switch(b){
             case 0: sprintf(buf, F("ADP OK (%d,%d)"), a,b); t=String(buf); break;
             case 1: sprintf(buf, F("ADP RUN (%d,%d)"), a,b); t=String(buf); break;
             case 0x10: sprintf(buf, F("ADP ERR (%d,%d)"), a,b); t=String(buf); break;
             default: sprintf(buf, F("ADP (%d,%d)"), a,b); t=String(buf); break;
          }*/
      case 0x26: v=(b-128)*0.001*a;        units=F("Deg k/w"); break;
      case 0x27: v=b/256*a;                units=F("mg/h"); break;
      case 0x28: v=b*0.1+(25.5*a)-400;     units=F("A"); break;
      case 0x29: v=b+a*255;                units=F("Ah"); break;
      case 0x2A: v=b*0.1+(25.5*a)-400;     units=F("Kw"); break;
      case 0x2B: v=b*0.1+(25.5*a);         units=F("V"); break;
      case 0x2C: sprintf(buf, "%2d:%2d", a,b); t=String(buf); break;
      case 0x2D: v=0.1*a*b/100;            units=F(" "); break;
      case 0x2E: v=(a*b-3200)*0.0027;      units=F("Deg k/w"); break;
      case 0x2F: v=(b-128)*a;              units=F("ms"); break;
      case 0x30: v=b+a*255;                units=F(" "); break;
      case 0x31: v=(b/4)*a*0.1;            units=F("mg/h"); break;
      case 0x32: v=(b-128)/(0.01*a);       units=F("mbar"); break;
      case 0x33: v=((b-128)/255)*a;        units=F("mg/h"); break;
      case 0x34: v=b*0.02*a-a;             units=F("Nm"); break;
      case 0x35: v=(b-128)*1.4222+0.006*a;  units=F("g/s"); break;
      case 0x36: v=a*256+b;                units=F("count"); break;
      case 0x37: v=a*b/200;                units=F("s"); break;
      case 0x38: v=a*256+b;                units=F("WSC"); break;
      case 0x39: v=a*256+b+65536;          units=F("WSC"); break;
     
      case 0x3B: v=(a*256+b)/32768;        units=F("g/s"); break;
      case 0x3C: v=(a*256+b)*0.01;         units=F("sec"); break;
      case 0x3E: v=0.256*a*b;              units=F("S"); break;
      case 0x40: v=float(a+b);             units=F("Ohm"); break;
      case 0x41: v=0.01*a*(b-127);         units=F("mm"); break;
      case 0x42: v=(a*b)/511.12;          units=F("V"); break;
      case 0x43: v=(640*a)+b*2.5;         units=F("Deg"); break;
      case 0x44: v=(256*a+b)/7.365;       units=F("deg/s");break;
      case 0x45: v=(256*a +b)*0.3254;     units=F("Bar");break;
      case 0x46: v=(256*a +b)*0.192;      units=F("m/s^2");break;
      default: sprintf(buf, "%2x, %2x      ", a, b); break;
    }
    
    switch (currAddr){
      case ADR_Engine: 
        switch(group){
          case 3: 
            switch (idx){
              case 0: engineSpeed = v; break;
              case 1: EGR_Consumption_target =v; break;
              case 2: EGR_Consumption=v; break;
              case 3: EGR_duty=v; break;
            }              
            break;
          case 11: 
            switch (idx){
              case 0: engineSpeed = v; break;
              case 1: TurboPressure_target =v; break;
              case 2: TurboPressure =v; break;
              case 3: Turbocharger_valve=v; break;
            }              
            break;
        }
        break;
      case ADR_Dashboard: 
        switch (group){ 
          case 1:  
            switch (idx){
              case 0: vehicleSpeed = v; break;
              case 1: engineSpeed = v; break;
              case 2: oilPressure = v; break;
            }
            break;
          case 2:
            switch (idx){
              case 0: odometer = v; break;
              case 1: fuelLevel = v; break;         
            }
            break;
          case 50:
            switch (idx){
              case 1: engineSpeed = v; break;
              case 2: oilTemp = v; break;
              case 3: coolantTemp = v; break;
            }
            break;
        }
        break;
    }
    if (units.length() != 0){
      dtostrf(v,4, 2, buf); 
      t=String(buf) + " " + units;
    }          
    Serial.println(t);
    
    //lcd.setCursor(0, idx);      
    //while (t.length() < 20) t += " ";
    //lcd.print(t);      
  }
  sensorCounter++;
  return true;
}

void alarm(){
  if (alarmCounter > 10) return;
  tone(pinBuzzer, 1200);    
  delay(100);
  noTone(pinBuzzer);   
  alarmCounter++;
}

/*********void updateDisplay(){
  if (!connected){
    if ( (errorTimeout != 0) || (errorData != 0) ){
      lcdPrint(0,3, F("err to="));      
      lcdPrint(7,3, String(errorTimeout), 3);
      lcdPrint(10,3, F(" da="));      
      lcdPrint(14,3, String(errorData), 6);
    }
  } else {
    switch (currPage){
      case 1:      
        if (coolantTemp > 99){
          lcdPrint(0,1, F("COOL"));          
          alarm();          
        } else lcdPrint(0,1, F("cool"));
        lcdPrint(6,1,String(coolantTemp),3);                
        if ( (oilTemp > 99) || ((oilPressure != 30) && (oilPressure != 31)) ){          
          lcdPrint(10,1,F("OIL "));
          alarm();
        } else lcdPrint(10,1,F("oil "));        
        lcdPrint(14,1,String(oilPressure),3);        
        lcdPrint(0,2, F("rpm "));
        lcdPrint(4,2, String(engineSpeed),4);        
        lcdPrint(10,2, F("km/h "));
        lcdPrint(15,2, String(vehicleSpeed, 3));        
        lcdPrint(0,3, F("fuel "));
        lcdPrint(5,3, String(fuelLevel),3);        
        lcdPrint(10,3, F("odo "));
        lcdPrint(14,3, String(odometer),6);                        
        break;
      case 2:
        if (coolantTemp > 99){
          lcdPrint(0,1, F("COOL"));          
          alarm();          
        } else lcdPrint(0,1, F("cool"));
        lcdPrint(6,1,String(coolantTemp),3);                    
        lcdPrint(10,1, F("air "));          
        lcdPrint(14,1, String(intakeAirTemp), 3);                  
        lcdPrint(0,2, F("rpm "));
        lcdPrint(4,2, String(engineSpeed),4);        
        lcdPrint(10,2, F("km/h "));
        lcdPrint(15,2, String(vehicleSpeed, 3));                
        lcdPrint(0,3, F("fuel "));
        lcdPrint(5,3, String(fuelConsumption),3);                
        lcdPrint(10,3, F("volt "));
        lcdPrint(15,3, String(supplyVoltage),5);                                        
        break;
    }    
  }
  pageUpdateCounter++;
}*/


void setup(){      
//*****  lcd.init();  
 //**** lcd.backlight();      
 //**** lcd.init();  
  
  myGLCD.InitLCD(PORTRAIT);                                    // инициируем дисплей (в качестве параметра данной функции можно указать ориентацию дисплея: PORTRAIT или LANDSCAPE), по умолчанию LANDSCAPE - горизонтальная ориентация
  
  pinMode(pinKLineTX, OUTPUT);  
  digitalWrite(pinKLineTX, HIGH);  
  
  pinMode(pinButton, INPUT);  
  pinMode(pinButton, INPUT_PULLUP);  
  
  pinMode(pinBuzzer, OUTPUT);
  /*tone(pinBuzzer, 1200);    
  delay(100);
  noTone(pinBuzzer);*/
  
  Serial.begin(19200);  
  Serial.println(F("SETUP"));            
        
  Serial.println(F("START"));       
}


void loop(){    
  
  if (digitalRead(pinButton) == LOW){    
    currPage++;
    if (currPage > 2) currPage = 1;
//**   lcd.clear();
   //** lcd.setCursor(0,0);
    //**lcd.print(F("page "));    
    //**lcd.print(currPage);    
    errorTimeout = 0;
    errorData = 0;            
    while (digitalRead(pinButton) == LOW);        
  }

  switch (currPage){
    case 1:      
      if (currAddr != ADR_Dashboard){        
        connect(ADR_Dashboard, 9600);
      } else  {
        readSensors(1);
        readSensors(2);
        readSensors(50);        
      }      
      break;
    case 2:
      if (currAddr != ADR_Engine) {
        connect(ADR_Engine, 9600);
      } else {
        readSensors(3);
        readSensors(11);
      }    
      break;   
  }      
  
//***  updateDisplay(); 

 // myGLCD.clrScr();                                     // стираем всю информацию с дисплея
  myGLCD.setFont(BigFont);                           // устанавливаем большой шрифт
  myGLCD.setColor(VGA_WHITE);                          // устанавливаем цвет текста
  myGLCD.print("PR1:",LEFT, 3);
  myGLCD.print("PR2:",LEFT, 25); // выводим текст на дисплей
  myGLCD.print("PR3:", LEFT, 50);                // выводим текст на дисплей
  myGLCD.print("PR4:", LEFT, 75);             // выводим текст на дисплей
  myGLCD.print("PR5:", LEFT, 100);             // выводим текст на дисплей  

  myGLCD.setColor(VGA_WHITE);  
  myGLCD.setFont(BigFont);    
  myGLCD.printNumI(engineSpeed,60,3);
    
  myGLCD.setColor(VGA_WHITE);  
  myGLCD.setFont(BigFont);    
  myGLCD.printNumI(TurboPressure,60,25);

  myGLCD.setColor(VGA_WHITE);  
  myGLCD.setFont(BigFont);    
  myGLCD.printNumI(Turbocharger_valve,60,50);

  myGLCD.setColor(VGA_WHITE);  
  myGLCD.setFont(BigFont);    
  myGLCD.printNumI(EGR_duty,60,75);

  myGLCD.setColor(VGA_WHITE);  
  myGLCD.setFont(BigFont);    
  myGLCD.printNumI(EGR_Consumption,60,100);


  
/*Serial.println();
Serial.print ("engineSpeed:  "); Serial.println(engineSpeed);
Serial.print ("EGR valve :  "); Serial.println(EGR_duty);
Serial.print ("EGR rashod  "); Serial.println(EGR_Consumption);
Serial.print ("EGR rashod zadan:  "); Serial.println(EGR_Consumption_target);
Serial.print ("Pressure Turbo:  "); Serial.println(TurboPressure);
Serial.print ("Pressure Turbo zadan:  "); Serial.println(TurboPressure_target);
Serial.print ("Turbo Actuator:  "); Serial.println(Turbocharger_valve);
Serial.println();*/


 
       
}



 

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

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

myGLCD.clrScr();  в setup() вставить

taha17
taha17 аватар
Offline
Зарегистрирован: 08.10.2017

Начал вот разбираться с параметрами. Что-то  я совсем запутался.....

пробовал менять переменную (во втором скетче)uint8_t currPage = 1; на значение 2. выводит одни параметры, когда верну 1 -другие. Добавил пару строчек в 

switch (currPage){
    case 1:      
      if (currAddr != ADR_Dashboard){        
        connect(ADR_Dashboard, 9600);
      } else  {
        readSensors(1);
        readSensors(2);
        readSensors(50);        
      }      
      break;
    case 2:
      if (currAddr != ADR_Engine) {
        connect(ADR_Engine, 9600);
      } else {
        readSensors(3);
        readSensors(11);
        readSensors(15);
        readSensors(16);
      }    
      break;   
  }     
В итоге имею два скетча, вроде как одинаковых, но с разными результатами.

#include <UTFT.h>                                      // подключаем библиотеку UTFT
extern uint8_t SmallFont[];                            // подключаем маленький шрифт
extern uint8_t BigFont[];                              // подключаем большой шрифт
extern uint8_t SevenSegNumFont[];                      // подключаем цифровой шрифт
UTFT myGLCD(ST7735, 11, 13, 10, 8, 9);

#include <Wire.h>
//******#include "LiquidCrystal_I2C.h"
#include "NewSoftwareSerial.h"

#define pinKLineRX 5
#define pinKLineTX 6
#define pinLED 2
#define pinBuzzer 3
#define pinButton 4

#define ADR_Engine 0x01     //Двигатель
#define ADR_Gears  0x02     //КПП ---
#define ADR_ABS_Brakes 0x03 
#define ADR_Airbag 0x15
#define ADR_Dashboard 0x17   //Панель приборов
#define ADR_Immobilizer 0x25
#define ADR_Central_locking 0x35

//#define DEBUG 1

//*******LiquidCrystal_I2C lcd(0x27,20,4);  // set the LCD address to 0x20 for a 16 chars and 2 line display
NewSoftwareSerial obd(pinKLineRX, pinKLineTX, false); // RX, TX, inverse logic

uint8_t currAddr = 0;
uint8_t blockCounter = 0;
uint8_t errorTimeout = 0;
uint8_t errorData = 0;
bool connected = false;
int sensorCounter = 0;
int pageUpdateCounter = 0;
int alarmCounter = 0;

uint8_t currPage = 2;


int8_t coolantTemp = 0;     //Температурв ОЖ                      1-1-3         /////0-1-2-3
int8_t oilTemp = 0;         //Температура  Масла                  17-50-2
int8_t intakeAirTemp = 0;   //Температура вохдуха
int8_t oilPressure = 0;     //Давление масла
float engineLoad = 0;       //
int   engineSpeed = 0;      //Обороты двигателя                   1-1-0
float throttleValve = 0;    //Дрорссельная заслонка(клапан)
float supplyVoltage = 0;    //Напряжение питания (аккума)         1-16-3
uint8_t vehicleSpeed = 0;   //Скорость автомобиля
uint8_t fuelConsumption = 0;//Потребление топлива                 1-15-2 л/ч
uint8_t fuelLevel = 0;      //Уровень топлива                     17-3-0
unsigned long odometer = 0; // Одометр                            17-2-0

// наши параметры
int TurboPressure = 0;
int TurboPressure_target = 0;
uint8_t Turbocharger_valve = 0;
uint8_t EGR_duty = 0;
int EGR_Consumption = 0;
int EGR_Consumption_target = 0;



String floatToString(float v){
  String res; 
  char buf[16];      
  dtostrf(v,4, 2, buf); 
  res=String(buf);
  return res;
}

void disconnect(){
  connected = false;
  currAddr = 0;
}

/***********void lcdPrint(int x, int y, String s, int width = 0){
  lcd.setCursor(x,y);
  while (s.length() < width) s += " ";
  lcd.print(s);
}*/

void obdWrite(uint8_t data){
#ifdef DEBUG
  Serial.print("uC:");
  Serial.println(data, HEX);
#endif
  obd.write(data);
}

uint8_t obdRead(){
  unsigned long timeout = millis() + 1000;  
  while (!obd.available()){
    if (millis() >= timeout) {
      Serial.println(F("ERROR: obdRead timeout"));
      disconnect();      
      errorTimeout++;
      return 0;
    }
  }
  uint8_t data = obd.read();
#ifdef DEBUG  
  Serial.print("ECU:");
  Serial.println(data, HEX);
#endif  
  return data;
}

// 5Bd, 7O1
void send5baud(uint8_t data){
  // // 1 start bit, 7 data bits, 1 parity, 1 stop bit
  #define bitcount 10
  byte bits[bitcount];
  byte even=1;
  byte bit;
  for (int i=0; i < bitcount; i++){
    bit=0;
    if (i == 0)  bit = 0;
      else if (i == 8) bit = even; // computes parity bit
      else if (i == 9) bit = 1;
      else {
        bit = (byte) ((data & (1 << (i-1))) != 0);
        even = even ^ bit;
      }
    Serial.print(F("bit"));      
    Serial.print(i);          
    Serial.print(F("="));              
    Serial.print(bit);
    if (i == 0) Serial.print(F(" startbit"));
      else if (i == 8) Serial.print(F(" parity"));    
      else if (i == 9) Serial.print(F(" stopbit"));              
    Serial.println();      
    bits[i]=bit;
  }
  // now send bit stream    
  for (int i=0; i < bitcount+1; i++){
    if (i != 0){
      // wait 200 ms (=5 baud), adjusted by latency correction
      delay(200);
      if (i == bitcount) break;
    }
    if (bits[i] == 1){ 
      // high
      digitalWrite(pinKLineTX, HIGH);
    } else {
      // low
      digitalWrite(pinKLineTX, LOW);
    }
  }
  obd.flush();
}


bool KWP5BaudInit(uint8_t addr){
  Serial.println(F("---KWP 5 baud init"));
  //delay(3000);
  send5baud(addr);
  return true;
}


bool KWPSendBlock(char *s, int size){
  Serial.print(F("---KWPSend sz="));
  Serial.print(size);
  Serial.print(F(" blockCounter="));
  Serial.println(blockCounter);    
  // show data
  Serial.print(F("OUT:"));
  for (int i=0; i < size; i++){    
    uint8_t data = s[i];
    Serial.print(data, HEX);
    Serial.print(" ");    
  }  
  Serial.println();
  for (int i=0; i < size; i++){
    uint8_t data = s[i];    
    obdWrite(data);

    if (i < size-1){
      uint8_t complement = obdRead();        
      if (complement != (data ^ 0xFF)){
        Serial.println(F("ERROR: invalid complement"));
        disconnect();
        errorData++;
        return false;
      }
    }
  }
  blockCounter++;
  return true;
}

// count: if zero given, first received byte contains block length
// 4800, 9600 oder 10400 Baud, 8N1
bool KWPReceiveBlock(char s[], int maxsize, int &size){  
  bool ackeachbyte = false;
  uint8_t data = 0;
  int recvcount = 0;
  if (size == 0) ackeachbyte = true;
  Serial.print(F("---KWPReceive sz="));
  Serial.print(size);
  Serial.print(F(" blockCounter="));
  Serial.println(blockCounter);
  if (size > maxsize) {
    Serial.println("ERROR: invalid maxsize");
    return false;
  }  
  unsigned long timeout = millis() + 1000;  
  while ((recvcount == 0) || (recvcount != size)) {
    while (obd.available()){      
      data = obdRead();
      s[recvcount] = data;    
      recvcount++;      
      if ((size == 0) && (recvcount == 1)) {
        size = data + 1;
        if (size > maxsize) {
          Serial.println("ERROR: invalid maxsize");
          return false;
        }  
      }
      if ((ackeachbyte) && (recvcount == 2)) {
        if (data != blockCounter){
          Serial.println(F("ERROR: invalid blockCounter"));
          disconnect();
          errorData++;
          return false;
        }
      }
      if ( ((!ackeachbyte) && (recvcount == size)) ||  ((ackeachbyte) && (recvcount < size)) ){
        obdWrite(data ^ 0xFF);  // send complement ack        
        /*uint8_t echo = obdRead();        
        if (echo != (data ^ 0xFF)){
          Serial.print(F("ERROR: invalid echo "));
          Serial.println(echo, HEX);
          disconnect();
          errorData++;
          return false;
        }*/
      }
      timeout = millis() + 1000;        
    } 
    if (millis() >= timeout){
      Serial.println(F("ERROR: timeout"));
      disconnect();
      errorTimeout++;
      return false;
    }
  }
  // show data
  Serial.print(F("IN: sz="));  
  Serial.print(size);  
  Serial.print(F(" data="));  
  for (int i=0; i < size; i++){
    uint8_t data = s[i];
    Serial.print(data, HEX);
    Serial.print(F(" "));    
  }  
  Serial.println();
  blockCounter++;
  return true;
}

bool KWPSendAckBlock(){
  Serial.print(F("---KWPSendAckBlock blockCounter="));
  Serial.println(blockCounter);  
  char buf[32];  
  sprintf(buf, "\x03%c\x09\x03", blockCounter);  
  return (KWPSendBlock(buf, 4));
}

bool connect(uint8_t addr, int baudrate){  
  Serial.print(F("------connect addr="));
  Serial.print(addr);
  Serial.print(F(" baud="));  
  Serial.println(baudrate);  
  tone(pinBuzzer, 1200);    
  delay(100);
  noTone(pinBuzzer);            
  //lcd.clear();
  /******lcdPrint(0,0, F("KW1281 wakeup"), 20);
  lcdPrint(0,1, "", 20);
  lcdPrint(0,2, "", 20);  *///
  blockCounter = 0;  
  currAddr = 0;
  obd.begin(baudrate);       
  KWP5BaudInit(addr);
  // answer: 0x55, 0x01, 0x8A          
  char s[3];
  //****lcdPrint(0,0, F("KW1281 recv"), 20);
  int size = 3;
  if (!KWPReceiveBlock(s, 3, size)) return false;
  if (    (((uint8_t)s[0]) != 0x55) 
     ||   (((uint8_t)s[1]) != 0x01) 
     ||   (((uint8_t)s[2]) != 0x8A)   ){
    Serial.println(F("ERROR: invalid magic"));
    disconnect();
    errorData++;
    return false;
  }
  currAddr = addr;
  connected = true;  
  if (!readConnectBlocks()) return false;
  return true;
}
  
bool readConnectBlocks(){  
  // read connect blocks
  Serial.println(F("------readconnectblocks"));
  //****lcdPrint(0,0, F("KW1281 label"), 20);
  String info;  
  while (true){
    int size = 0;
    char s[64];
    if (!(KWPReceiveBlock(s, 64, size))) return false;
    if (size == 0) return false;
    if (s[2] == '\x09') break; 
    if (s[2] != '\xF6') {
      Serial.println(F("ERROR: unexpected answer"));
      disconnect();
      errorData++;
      return false;
    }
    String text = String(s);
    info += text.substring(3, size-2);
    if (!KWPSendAckBlock()) return false;
  }
  Serial.print("label=");
  Serial.println(info);
  //lcd.setCursor(0, 1);
  //lcd.print(info);      
  return true;
}

bool readSensors(int group){
  Serial.print(F("------readSensors "));
  Serial.println(group);
  //****lcdPrint(0,0, F("KW1281 sensor"), 20);  
  char s[64];
  sprintf(s, "\x04%c\x29%c\x03", blockCounter, group);
  if (!KWPSendBlock(s, 5)) return false;
  int size = 0;
  KWPReceiveBlock(s, 64, size);
  if (s[2] != '\xe7') {
    Serial.println(F("ERROR: invalid answer"));
    disconnect();
    errorData++;
    return false;
  }
  int count = (size-4) / 3;
  Serial.print(F("count="));
  Serial.println(count);
  for (int idx=0; idx < count; idx++){
    byte k=s[3 + idx*3];
    byte a=s[3 + idx*3+1];
    byte b=s[3 + idx*3+2];
    String n;
    float v = 0;
    Serial.print(F("type="));
    Serial.print(k);
    Serial.print(F("  a="));
    Serial.print(a);
    Serial.print(F("  b="));
    Serial.print(b);
    Serial.print(F("  text="));
    String t = "";
    String units = "";
    char buf[32];    
    switch (k){
      case 0x01:  v=0.2*a*b;             units=F("rpm"); break;
      case 0x02:  v=a*0.002*b;           units=F("%%"); break;
      case 0x03:  v=0.002*a*b;           units=F("Deg"); break;
      case 0x04:  v=abs(b-127)*0.01*a;   units=F("ATDC"); break;
      case 0x05:  v=a*(b-100)*0.1;       units=F("°C");break;
      case 0x06:  v=0.001*a*b;           units=F("V");break;
      case 0x07:  v=0.01*a*b;            units=F("km/h");break;
      case 0x08:  v=0.1*a*b;             units=F(" ");break;
      case 0x09:  v=(b-127)*0.02*a;      units=F("Deg");break;
      case 0x0A: if (b == 0) t=F("COLD"); else t=F("WARM");break;
      case 0x0B: v=0.0001*a*(b-128)+1;  units = F(" ");break;
      case 0x0C: v=0.001*a*b;           units =F("Ohm");break;
      case 0x0D: v=(b-127)*0.001*a;     units =F("mm");break;
      case 0x0E: v=0.005*a*b;           units=F("bar");break;
      case 0x0F: v=0.01*a*b;            units=F("ms");break;
      case 0x12: v=0.04*a*b;            units=F("mbar");break;
      case 0x13: v=a*b*0.01;            units=F("l");break;
      case 0x14: v=a*(b-128)/128;       units=F("%%");break;
      case 0x15: v=0.001*a*b;           units=F("V");break;
      case 0x16: v=0.001*a*b;           units=F("ms");break;
      case 0x17: v=(b*a)/256;             units=F("%%");break;
      case 0x18: v=0.001*a*b;           units=F("A");break;
      case 0x19: v=(b*1.421)+(a/182);   units=F("g/s");break;
      case 0x1A: v=float(b-a);          units=F("C");break;
      case 0x1B: v=abs(b-128)*0.01*a;   units=F("°");break;
      case 0x1C: v=float(b-a);          units=F(" ");break;
      case 0x1E: v=b/12*a;              units=F("Deg k/w");break;
      case 0x1F: v=b/2560*a;            units=F("°C");break;
      case 0x21: v=100*b/a;             units=F("%%");break;
      case 0x22: v=(b-128)*0.01*a;      units=F("kW");break;
      case 0x23: v=0.01*a*b;            units=F("l/h");break;
      case 0x24: v=((unsigned long)a)*2560+((unsigned long)b)*10;  units=F("km");break;
      case 0x25: v=b; break; // oil pressure ?!
      // ADP: FIXME!
      /*case 37: switch(b){
             case 0: sprintf(buf, F("ADP OK (%d,%d)"), a,b); t=String(buf); break;
             case 1: sprintf(buf, F("ADP RUN (%d,%d)"), a,b); t=String(buf); break;
             case 0x10: sprintf(buf, F("ADP ERR (%d,%d)"), a,b); t=String(buf); break;
             default: sprintf(buf, F("ADP (%d,%d)"), a,b); t=String(buf); break;
          }*/
      case 0x26: v=(b-128)*0.001*a;        units=F("Deg k/w"); break;
      case 0x27: v=b/256*a;                units=F("mg/h"); break;
      case 0x28: v=b*0.1+(25.5*a)-400;     units=F("A"); break;
      case 0x29: v=b+a*255;                units=F("Ah"); break;
      case 0x2A: v=b*0.1+(25.5*a)-400;     units=F("Kw"); break;
      case 0x2B: v=b*0.1+(25.5*a);         units=F("V"); break;
      case 0x2C: sprintf(buf, "%2d:%2d", a,b); t=String(buf); break;
      case 0x2D: v=0.1*a*b/100;            units=F(" "); break;
      case 0x2E: v=(a*b-3200)*0.0027;      units=F("Deg k/w"); break;
      case 0x2F: v=(b-128)*a;              units=F("ms"); break;
      case 0x30: v=b+a*255;                units=F(" "); break;
      case 0x31: v=(b/4)*a*0.1;            units=F("mg/h"); break;
      case 0x32: v=(b-128)/(0.01*a);       units=F("mbar"); break;
      case 0x33: v=((b-128)/255)*a;        units=F("mg/h"); break;
      case 0x34: v=b*0.02*a-a;             units=F("Nm"); break;
      case 0x35: v=(b-128)*1.4222+0.006*a;  units=F("g/s"); break;
      case 0x36: v=a*256+b;                units=F("count"); break;
      case 0x37: v=a*b/200;                units=F("s"); break;
      case 0x38: v=a*256+b;                units=F("WSC"); break;
      case 0x39: v=a*256+b+65536;          units=F("WSC"); break;
     
      case 0x3B: v=(a*256+b)/32768;        units=F("g/s"); break;
      case 0x3C: v=(a*256+b)*0.01;         units=F("sec"); break;
      case 0x3E: v=0.256*a*b;              units=F("S"); break;
      case 0x40: v=float(a+b);             units=F("Ohm"); break;
      case 0x41: v=0.01*a*(b-127);         units=F("mm"); break;
      case 0x42: v=(a*b)/511.12;          units=F("V"); break;
      case 0x43: v=(640*a)+b*2.5;         units=F("Deg"); break;
      case 0x44: v=(256*a+b)/7.365;       units=F("deg/s");break;
      case 0x45: v=(256*a +b)*0.3254;     units=F("Bar");break;
      case 0x46: v=(256*a +b)*0.192;      units=F("m/s^2");break;
      default: sprintf(buf, "%2x, %2x      ", a, b); break;
    }
    
    switch (currAddr){
      case ADR_Engine: 
        switch(group){
          case 1: 
            switch (idx){
              case 0: engineSpeed = v; break;
              case 2: coolantTemp; break;
            } 
            break; ////********------------------
          case 3: 
            switch (idx){
              //case 0: engineSpeed = v; break;
              case 1: EGR_Consumption_target =v; break;
              case 2: EGR_Consumption=v; break;
              case 3: EGR_duty=v; break;
            }              
            break;
          case 11: 
            switch (idx){
              //case 0: engineSpeed = v; break;
              case 1: TurboPressure_target =v; break;
              case 2: TurboPressure =v; break;
              case 3: Turbocharger_valve=v; break;
            }              
            break;
            
            case 15: 
            switch (idx){              

              case 2: fuelConsumption =v; break;

            }              
            break;
            case 16: 
            switch (idx){              

              case 3: supplyVoltage =v; break;

            }              
            break;
        }
        break;
      case ADR_Dashboard: 
        switch (group){ 
          case 1:  
            switch (idx){
              case 0: vehicleSpeed = v; break;
              //case 1: engineSpeed = v; break;
              case 2: oilPressure = v; break;
            }
            break;
          case 2:
            switch (idx){
              case 0: odometer = v; break;
              case 1: fuelLevel = v; break;         
            }
            break;
            case 3:
            switch (idx){
              case 0: fuelLevel = v; break;         
            }
            break;
          case 50:
            switch (idx){
              //case 1: engineSpeed = v; break;
              case 2: oilTemp = v; break;
              case 3: coolantTemp = v; break;
            }
            break;
        }
        break;
    }
    if (units.length() != 0){
      dtostrf(v,4, 2, buf); 
      t=String(buf) + " " + units;
    }          
    Serial.println(t);
    
    //lcd.setCursor(0, idx);      
    //while (t.length() < 20) t += " ";
    //lcd.print(t);      
  }
  sensorCounter++;
  return true;
}

void alarm(){
  if (alarmCounter > 10) return;
  tone(pinBuzzer, 1200);    
  delay(100);
  noTone(pinBuzzer);   
  alarmCounter++;
}



void setup(){      

  
  myGLCD.InitLCD(PORTRAIT);                                    // инициируем дисплей (в качестве параметра данной функции можно указать ориентацию дисплея: PORTRAIT или LANDSCAPE), по умолчанию LANDSCAPE - горизонтальная ориентация
  //myGLCD.clrScr();                                             // стираем всю информацию с дисплея
  
  pinMode(pinKLineTX, OUTPUT);  
  digitalWrite(pinKLineTX, HIGH);  
  
  pinMode(pinButton, INPUT);  
  pinMode(pinButton, INPUT_PULLUP);  
  
  pinMode(pinBuzzer, OUTPUT);
  /*tone(pinBuzzer, 1200);    
  delay(100);
  noTone(pinBuzzer);*/
  
  Serial.begin(19200);  
  Serial.println(F("SETUP"));            
        
  Serial.println(F("START"));       
}


void loop(){    
  
  if (digitalRead(pinButton) == LOW){    
    currPage++;
    if (currPage > 2) currPage = 1;
//**   lcd.clear();
   //** lcd.setCursor(0,0);
    //**lcd.print(F("page "));    
    //**lcd.print(currPage);    
    errorTimeout = 0;
    errorData = 0;            
    while (digitalRead(pinButton) == LOW);        
  }

  switch (currPage){
    case 1:      
      if (currAddr != ADR_Dashboard){        
        connect(ADR_Dashboard, 9600);
      } else  {
        readSensors(1);
        readSensors(2);
        readSensors(50);        
      }      
      break;
    case 2:
      if (currAddr != ADR_Engine) {
        connect(ADR_Engine, 9600);
      } else {
        readSensors(3);
        readSensors(11);
        readSensors(15);////**************------------
        readSensors(16);////*************---------------
      }    
      break;   
  }      
  
//***  updateDisplay(); 

/*
  myGLCD.setFont(BigFont);                           // устанавливаем большой шрифт
  myGLCD.setColor(VGA_WHITE);                          // устанавливаем цвет текста
  myGLCD.print("PR1:",LEFT, 3);
  myGLCD.print("PR2:",LEFT, 25); // выводим текст на дисплей
  myGLCD.print("PR3:", LEFT, 50);                // выводим текст на дисплей
  myGLCD.print("PR4:", LEFT, 75);             // выводим текст на дисплей
  myGLCD.print("PR5:", LEFT, 100);             // выводим текст на дисплей  

  myGLCD.setColor(VGA_WHITE);  
  myGLCD.setFont(BigFont);    
  myGLCD.printNumI(engineSpeed,60,3);
    
  myGLCD.setColor(VGA_WHITE);  
  myGLCD.setFont(BigFont);    
  myGLCD.printNumI(TurboPressure,60,25);

  myGLCD.setColor(VGA_WHITE);  
  myGLCD.setFont(BigFont);    
  myGLCD.printNumI(Turbocharger_valve,60,50);

  myGLCD.setColor(VGA_WHITE);  
  myGLCD.setFont(BigFont);    
  myGLCD.printNumI(EGR_duty,60,75);

  myGLCD.setColor(VGA_WHITE);  
  myGLCD.setFont(BigFont);    
  myGLCD.printNumI(EGR_Consumption,60,100);
*/

myGLCD.setFont(SmallFont);                           // устанавливаем большой шрифт
  myGLCD.setColor(VGA_WHITE);                          // устанавливаем цвет текста
  myGLCD.print(" PR1:",LEFT, 3);
  myGLCD.print(" PR2:",LEFT, 13); 
  myGLCD.print(" PR3:", LEFT, 23);                // выводим текст на дисплей
  myGLCD.print(" PR4:", LEFT, 33);             // выводим текст на дисплей
  myGLCD.print(" PR5:", LEFT, 43);             // выводим текст на дисплей
  myGLCD.print(" PR6:", LEFT, 53);             // выводим текст на дисплей 
  myGLCD.print(" PR7:", LEFT, 63);              
  myGLCD.print(" PR8:", LEFT, 73);             
  myGLCD.print(" PR9:", LEFT, 83);   
  myGLCD.print("PR10:", LEFT, 93);
  myGLCD.print("PR11:", LEFT, 103);
  myGLCD.print("PR12:", LEFT, 113);
 

  myGLCD.printNumI(engineSpeed,60,5);    
  myGLCD.printNumI(coolantTemp,60,15);   
  myGLCD.printNumI(oilTemp,60,25); 
  myGLCD.printNumI(supplyVoltage,60,35); 
  myGLCD.printNumI(fuelConsumption,60,45);
  myGLCD.printNumI(odometer,60,55);
  myGLCD.printNumI(TurboPressure,60,65);
  myGLCD.printNumI(Turbocharger_valve,60,75);
  myGLCD.printNumI(EGR_duty,60,85);
  myGLCD.printNumI(EGR_Consumption,60,95);
  myGLCD.printNumI(EGR_Consumption_target,60,105);
  myGLCD.printNumI(7420,60,115);


 
Serial.println();
Serial.print ("engineSpeed:  "); Serial.println(engineSpeed);
Serial.print ("coolantTemp :  "); Serial.println(coolantTemp);
Serial.print ("oilTemp :  "); Serial.println(oilTemp);
Serial.print ("supplyVoltage :  "); Serial.println(supplyVoltage);
Serial.print ("fuelConsumption :  "); Serial.println(fuelConsumption);
Serial.print ("odometer :  "); Serial.println(odometer);
Serial.print ("TurboPressure :  "); Serial.println(TurboPressure);
Serial.print ("Turbocharger_valve  "); Serial.println(Turbocharger_valve);
Serial.print ("EGR_duty:  "); Serial.println(EGR_duty);
Serial.print ("EGR_Consumption:  "); Serial.println(TurboPressure);
Serial.print ("EGR_Consumption_target:  "); Serial.println(TurboPressure_target);

Serial.println();


 
       
}





#include <UTFT.h>                                      // подключаем библиотеку UTFT
extern uint8_t SmallFont[];                            // подключаем маленький шрифт
extern uint8_t BigFont[];                              // подключаем большой шрифт
extern uint8_t SevenSegNumFont[];                      // подключаем цифровой шрифт
UTFT myGLCD(ST7735, 11, 13, 10, 8, 9);

#include <Wire.h>
#include "NewSoftwareSerial.h"

#define pinKLineRX 5
#define pinKLineTX 6
#define pinLED 2
#define pinBuzzer 3
#define pinButton 4


#define ADR_Engine 0x01
#define ADR_Gears  0x02
#define ADR_ABS_Brakes 0x03
#define ADR_Airbag 0x15
#define ADR_Dashboard 0x17
#define ADR_Immobilizer 0x25
#define ADR_Central_locking 0x35

//#define DEBUG 1

//LiquidCrystal_I2C lcd(0x27,20,4);  // set the LCD address to 0x20 for a 16 chars and 2 line display
NewSoftwareSerial obd(pinKLineRX, pinKLineTX, false); // RX, TX, inverse logic

uint8_t currAddr = 0;
uint8_t blockCounter = 0;
uint8_t errorTimeout = 0;
uint8_t errorData = 0;
bool connected = false;
int sensorCounter = 0;
int pageUpdateCounter = 0;
int alarmCounter = 0;

uint8_t currPage = 1; //************************


int8_t coolantTemp = 0;     //Температурв ОЖ                      1-1-3         /////0-1-2-3
int8_t oilTemp = 0;         //Температура  Масла                  17-50-2
int8_t intakeAirTemp = 0;   //Температура вохдуха
int8_t oilPressure = 0;     //Давление масла
float engineLoad = 0;       //
int   engineSpeed = 0;      //Обороты двигателя                   1-1-0
float throttleValve = 0;    //Дрорссельная заслонка(клапан)
float supplyVoltage = 0;    //Напряжение питания (аккума)         1-16-3
uint8_t vehicleSpeed = 0;   //Скорость автомобиля
uint8_t fuelConsumption = 0;//Потребление топлива                 1-15-2 л/ч
uint8_t fuelLevel = 0;      //Уровень топлива                     17-3-0
unsigned long odometer = 0; // Одометр                            17-2-0

// наши параметры
int TurboPressure = 0;
int TurboPressure_target = 0;
uint8_t Turbocharger_valve = 0;
uint8_t EGR_duty = 0;
int EGR_Consumption = 0;
int EGR_Consumption_target = 0;


String floatToString(float v){
  String res; 
  char buf[16];      
  dtostrf(v,4, 2, buf); 
  res=String(buf);
  return res;
}

void disconnect(){
  connected = false;
  currAddr = 0;
}


void obdWrite(uint8_t data){
#ifdef DEBUG
  Serial.print("uC:");
  Serial.println(data, HEX);
#endif
  obd.write(data);
}

uint8_t obdRead(){
  unsigned long timeout = millis() + 1000;  
  while (!obd.available()){
    if (millis() >= timeout) {
      Serial.println(F("ERROR: obdRead timeout"));
      disconnect();      
      errorTimeout++;
      return 0;
    }
  }
  uint8_t data = obd.read();
#ifdef DEBUG  
  Serial.print("ECU:");
  Serial.println(data, HEX);
#endif  
  return data;
}

// 5Bd, 7O1
void send5baud(uint8_t data){
  // // 1 start bit, 7 data bits, 1 parity, 1 stop bit
  #define bitcount 10
  byte bits[bitcount];
  byte even=1;
  byte bit;
  for (int i=0; i < bitcount; i++){
    bit=0;
    if (i == 0)  bit = 0;
      else if (i == 8) bit = even; // computes parity bit
      else if (i == 9) bit = 1;
      else {
        bit = (byte) ((data & (1 << (i-1))) != 0);
        even = even ^ bit;
      }
    Serial.print(F("bit"));      
    Serial.print(i);          
    Serial.print(F("="));              
    Serial.print(bit);
    if (i == 0) Serial.print(F(" startbit"));
      else if (i == 8) Serial.print(F(" parity"));    
      else if (i == 9) Serial.print(F(" stopbit"));              
    Serial.println();      
    bits[i]=bit;
  }
  // now send bit stream    
  for (int i=0; i < bitcount+1; i++){
    if (i != 0){
      // wait 200 ms (=5 baud), adjusted by latency correction
      delay(200);
      if (i == bitcount) break;
    }
    if (bits[i] == 1){ 
      // high
      digitalWrite(pinKLineTX, HIGH);
    } else {
      // low
      digitalWrite(pinKLineTX, LOW);
    }
  }
  obd.flush();
}


bool KWP5BaudInit(uint8_t addr){
  Serial.println(F("---KWP 5 baud init"));
  //delay(3000);
  send5baud(addr);
  return true;
}


bool KWPSendBlock(char *s, int size){
  Serial.print(F("---KWPSend sz="));
  Serial.print(size);
  Serial.print(F(" blockCounter="));
  Serial.println(blockCounter);    
  // show data
  Serial.print(F("OUT:"));
  for (int i=0; i < size; i++){    
    uint8_t data = s[i];
    Serial.print(data, HEX);
    Serial.print(" ");    
  }  
  Serial.println();
  for (int i=0; i < size; i++){
    uint8_t data = s[i];    
    obdWrite(data);
    
    if (i < size-1){
      uint8_t complement = obdRead();        
      if (complement != (data ^ 0xFF)){
        Serial.println(F("ERROR: invalid complement"));
        disconnect();
        errorData++;
        return false;
      }
    }
  }
  blockCounter++;
  return true;
}


bool KWPReceiveBlock(char s[], int maxsize, int &size){  
  bool ackeachbyte = false;
  uint8_t data = 0;
  int recvcount = 0;
  if (size == 0) ackeachbyte = true;
  Serial.print(F("---KWPReceive sz="));
  Serial.print(size);
  Serial.print(F(" blockCounter="));
  Serial.println(blockCounter);
  if (size > maxsize) {
    Serial.println("ERROR: invalid maxsize");
    return false;
  }  
  unsigned long timeout = millis() + 1000;  
  while ((recvcount == 0) || (recvcount != size)) {
    while (obd.available()){      
      data = obdRead();
      s[recvcount] = data;    
      recvcount++;      
      if ((size == 0) && (recvcount == 1)) {
        size = data + 1;
        if (size > maxsize) {
          Serial.println("ERROR: invalid maxsize");
          return false;
        }  
      }
      if ((ackeachbyte) && (recvcount == 2)) {
        if (data != blockCounter){
          Serial.println(F("ERROR: invalid blockCounter"));
          disconnect();
          errorData++;
          return false;
        }
      }
      if ( ((!ackeachbyte) && (recvcount == size)) ||  ((ackeachbyte) && (recvcount < size)) ){
        obdWrite(data ^ 0xFF);  // send complement ack        
         }
      timeout = millis() + 1000;        
    } 
    if (millis() >= timeout){
      Serial.println(F("ERROR: timeout"));
      disconnect();
      errorTimeout++;
      return false;
    }
  }
  // show data
  Serial.print(F("IN: sz="));  
  Serial.print(size);  
  Serial.print(F(" data="));  
  for (int i=0; i < size; i++){
    uint8_t data = s[i];
    Serial.print(data, HEX);
    Serial.print(F(" "));    
  }  
  Serial.println();
  blockCounter++;
  return true;
}

bool KWPSendAckBlock(){
  Serial.print(F("---KWPSendAckBlock blockCounter="));
  Serial.println(blockCounter);  
  char buf[32];  
  sprintf(buf, "\x03%c\x09\x03", blockCounter);  
  return (KWPSendBlock(buf, 4));
}

bool connect(uint8_t addr, int baudrate){  
  Serial.print(F("------connect addr="));
  Serial.print(addr);
  Serial.print(F(" baud="));  
  Serial.println(baudrate);  
  tone(pinBuzzer, 1200);    
  delay(100);
  noTone(pinBuzzer);  
  blockCounter = 0;  
  currAddr = 0;
  obd.begin(baudrate);       
  KWP5BaudInit(addr);
  char s[3];
  int size = 3;
  if (!KWPReceiveBlock(s, 3, size)) return false;
  if (    (((uint8_t)s[0]) != 0x55) 
     ||   (((uint8_t)s[1]) != 0x01) 
     ||   (((uint8_t)s[2]) != 0x8A)   ){
    Serial.println(F("ERROR: invalid magic"));
    disconnect();
    errorData++;
    return false;
  }
  currAddr = addr;
  connected = true;  
  if (!readConnectBlocks()) return false;
  return true;
}
  
bool readConnectBlocks(){  
  // read connect blocks
  Serial.println(F("------readconnectblocks"));
  String info;  
  while (true){
    int size = 0;
    char s[64];
    if (!(KWPReceiveBlock(s, 64, size))) return false;
    if (size == 0) return false;
    if (s[2] == '\x09') break; 
    if (s[2] != '\xF6') {
      Serial.println(F("ERROR: unexpected answer"));
      disconnect();
      errorData++;
      return false;
    }
    String text = String(s);
    info += text.substring(3, size-2);
    if (!KWPSendAckBlock()) return false;
  }
  Serial.print("label=");
  Serial.println(info);
  return true;
}

bool readSensors(int group){
  Serial.print(F("------readSensors "));
  Serial.println(group);
//  lcdPrint(0,0, F("KW1281 sensor"), 20);  
  char s[64];
  sprintf(s, "\x04%c\x29%c\x03", blockCounter, group);
  if (!KWPSendBlock(s, 5)) return false;
  int size = 0;
  KWPReceiveBlock(s, 64, size);
  if (s[2] != '\xe7') {
    Serial.println(F("ERROR: invalid answer"));
    disconnect();
    errorData++;
    return false;
  }
  int count = (size-4) / 3;
  Serial.print(F("count="));
  Serial.println(count);
  for (int idx=0; idx < count; idx++){
    byte k=s[3 + idx*3];
    byte a=s[3 + idx*3+1];
    byte b=s[3 + idx*3+2];
    String n;
    float v = 0;
    Serial.print(F("type="));
    Serial.print(k);
    Serial.print(F("  a="));
    Serial.print(a);
    Serial.print(F("  b="));
    Serial.print(b);
    Serial.print(F("  text="));
    String t = "";
    String units = "";
    char buf[32];    
    switch (k){
      case 1:  v=0.2*a*b;             units=F("rpm"); break;
      case 2:  v=a*0.002*b;           units=F("%%"); break;
      case 3:  v=0.002*a*b;           units=F("Deg"); break;
      case 4:  v=abs(b-127)*0.01*a;   units=F("ATDC"); break;
      case 5:  v=a*(b-100)*0.1;       units=F("°C");break;
      case 6:  v=0.001*a*b;           units=F("V");break;
      case 7:  v=0.01*a*b;            units=F("km/h");break;
      case 8:  v=0.1*a*b;             units=F(" ");break;
      case 9:  v=(b-127)*0.02*a;      units=F("Deg");break;
      case 10: if (b == 0) t=F("COLD"); else t=F("WARM");break;
      case 11: v=0.0001*a*(b-128)+1;  units = F(" ");break;
      case 12: v=0.001*a*b;           units =F("Ohm");break;
      case 13: v=(b-127)*0.001*a;     units =F("mm");break;
      case 14: v=0.005*a*b;           units=F("bar");break;
      case 15: v=0.01*a*b;            units=F("ms");break;
      case 18: v=0.04*a*b;            units=F("mbar");break;
      case 19: v=a*b*0.01;            units=F("l");break;
      case 20: v=a*(b-128)/128;       units=F("%%");break;
      case 21: v=0.001*a*b;           units=F("V");break;
      case 22: v=0.001*a*b;           units=F("ms");break;
      case 23: v=b/256*a;             units=F("%%");break;
      case 24: v=0.001*a*b;           units=F("A");break;
      case 25: v=(b*1.421)+(a/182);   units=F("g/s");break;
      case 26: v=float(b-a);          units=F("C");break;
      case 27: v=abs(b-128)*0.01*a;   units=F("°");break;
      case 28: v=float(b-a);          units=F(" ");break;
      case 30: v=b/12*a;              units=F("Deg k/w");break;
      case 31: v=b/2560*a;            units=F("°C");break;
      case 33: v=100*b/a;             units=F("%%");break;
      case 34: v=(b-128)*0.01*a;      units=F("kW");break;
      case 35: v=0.01*a*b;            units=F("l/h");break;
      case 36: v=((unsigned long)a)*2560+((unsigned long)b)*10;  units=F("km");break;
      case 37: v=b; break; // oil pressure ?!
      // ADP: FIXME!
      /*case 37: switch(b){
             case 0: sprintf(buf, F("ADP OK (%d,%d)"), a,b); t=String(buf); break;
             case 1: sprintf(buf, F("ADP RUN (%d,%d)"), a,b); t=String(buf); break;
             case 0x10: sprintf(buf, F("ADP ERR (%d,%d)"), a,b); t=String(buf); break;
             default: sprintf(buf, F("ADP (%d,%d)"), a,b); t=String(buf); break;
          }*/
      case 38: v=(b-128)*0.001*a;        units=F("Deg k/w"); break;
      case 39: v=b/256*a;                units=F("mg/h"); break;
      case 40: v=b*0.1+(25.5*a)-400;     units=F("A"); break;
      case 41: v=b+a*255;                units=F("Ah"); break;
      case 42: v=b*0.1+(25.5*a)-400;     units=F("Kw"); break;
      case 43: v=b*0.1+(25.5*a);         units=F("V"); break;
      case 44: sprintf(buf, "%2d:%2d", a,b); t=String(buf); break;
      case 45: v=0.1*a*b/100;            units=F(" "); break;
      case 46: v=(a*b-3200)*0.0027;      units=F("Deg k/w"); break;
      case 47: v=(b-128)*a;              units=F("ms"); break;
      case 48: v=b+a*255;                units=F(" "); break;
      case 49: v=(b/4)*a*0.1;            units=F("mg/h"); break;
      case 50: v=(b-128)/(0.01*a);       units=F("mbar"); break;
      case 51: v=((b-128)/255)*a;        units=F("mg/h"); break;
      case 52: v=b*0.02*a-a;             units=F("Nm"); break;
      case 53: v=(b-128)*1.4222+0.006*a;  units=F("g/s"); break;
      case 54: v=a*256+b;                units=F("count"); break;
      case 55: v=a*b/200;                units=F("s"); break;
      case 56: v=a*256+b;                units=F("WSC"); break;
      case 57: v=a*256+b+65536;          units=F("WSC"); break;
      case 59: v=(a*256+b)/32768;        units=F("g/s"); break;
      case 60: v=(a*256+b)*0.01;         units=F("sec"); break;
      case 62: v=0.256*a*b;              units=F("S"); break;
      case 64: v=float(a+b);             units=F("Ohm"); break;
      case 65: v=0.01*a*(b-127);         units=F("mm"); break;
      case 66: v=(a*b)/511.12;          units=F("V"); break;
      case 67: v=(640*a)+b*2.5;         units=F("Deg"); break;
      case 68: v=(256*a+b)/7.365;       units=F("deg/s");break;
      case 69: v=(256*a +b)*0.3254;     units=F("Bar");break;
      case 70: v=(256*a +b)*0.192;      units=F("m/s^2");break;
      default: sprintf(buf, "%2x, %2x      ", a, b); break;
    }
    
    switch (currAddr){
      case ADR_Engine: 
        switch(group){
          
          case 3: 
            switch (idx){
              /*case 0: engineSpeed = v; break;
              case 1: supplyVoltage=v; break;
              case 2: coolantTemp =v; break;
              case 3: intakeAirTemp=v; break;*/
              case 0: engineSpeed = v; break;
              case 1: EGR_Consumption_target =v; break;
              case 2: EGR_Consumption=v; break;
              case 3: EGR_duty=v; break;
            }              
            break;
          case 11: 
            switch (idx){
              /*case 1: engineLoad=v; break;
              case 2: vehicleSpeed =v; break;
              case 3: fuelConsumption=v; break;*/
              case 0: engineSpeed = v; break;
              case 1: TurboPressure_target =v; break;
              case 2: TurboPressure =v; break;
              case 3: Turbocharger_valve=v; break;
            }              
            break;
          case 15: 
            switch (idx){  
              case 2: fuelConsumption =v; break;
            } 
            break;
            case 16: 
            switch (idx){              

              case 3: supplyVoltage =v; break;

            }              
            break;
        }
        break;
      case ADR_Dashboard: 
        switch (group){ 
          case 1:  
            switch (idx){
              case 0: vehicleSpeed = v; break;
              case 1: engineSpeed = v; break;
              case 2: oilPressure = v; break;
            }
            break;
          case 2:
            switch (idx){
              case 0: odometer = v; break;
              case 1: fuelLevel = v; break;         
            }
            break;
            case 3:
            switch (idx){
              case 0: fuelLevel = v; break;         
            }
            break;
          case 50:
            switch (idx){
              case 1: engineSpeed = v; break;
              case 2: oilTemp = v; break;
              case 3: coolantTemp = v; break;
            }
            break;
        }
        break;
    }
    if (units.length() != 0){
      dtostrf(v,4, 2, buf); 
      t=String(buf) + " " + units;
    }          
    Serial.println(t);
    
    //lcd.setCursor(0, idx);      
    //while (t.length() < 20) t += " ";
    //lcd.print(t);      
  }
  sensorCounter++;
  return true;
}

void alarm(){
  if (alarmCounter > 10) return;
  tone(pinBuzzer, 1200);    
  delay(100);
  noTone(pinBuzzer);   
  alarmCounter++;
}
void setup(){      
  myGLCD.InitLCD(PORTRAIT);                                    // инициируем дисплей (в качестве параметра данной функции можно указать ориентацию дисплея: PORTRAIT или LANDSCAPE), по умолчанию LANDSCAPE - горизонтальная ориентация
  //myGLCD.clrScr();  
   
  pinMode(pinKLineTX, OUTPUT);  
  digitalWrite(pinKLineTX, HIGH);  
  
  pinMode(pinButton, INPUT);  
  pinMode(pinButton, INPUT_PULLUP);  
  
  pinMode(pinBuzzer, OUTPUT);
  /*tone(pinBuzzer, 1200);    
  delay(100);
  noTone(pinBuzzer);*/
  
  Serial.begin(19200);  
  Serial.println(F("SETUP"));            
        
  Serial.println(F("START"));       
}


void loop(){    
  
  if (digitalRead(pinButton) == LOW){    
    currPage++;
    if (currPage > 2) currPage = 1;
    
    errorTimeout = 0;
    errorData = 0;            
    while (digitalRead(pinButton) == LOW);        
  }

  switch (currPage){
    case 1:      
      if (currAddr != ADR_Dashboard){        
        connect(ADR_Dashboard, 9600);
      } else  {
        readSensors(1);
        readSensors(2);
        readSensors(50);        
      }      
      break;
    case 2:
      if (currAddr != ADR_Engine) {
        connect(ADR_Engine, 9600);
      } else {
        readSensors(3);
        readSensors(11);
        readSensors(15);
        readSensors(16);
      }    
      break;   
  }        
  
/*
  myGLCD.setFont(BigFont);                           // устанавливаем большой шрифт
  myGLCD.setColor(VGA_WHITE);                          // устанавливаем цвет текста
  myGLCD.print("PR1:",LEFT, 3);
  myGLCD.print("PR2:",LEFT, 25); // выводим текст на дисплей
  myGLCD.print("PR3:", LEFT, 50);                // выводим текст на дисплей
  myGLCD.print("PR4:", LEFT, 75);             // выводим текст на дисплей
  myGLCD.print("PR5:", LEFT, 100);             // выводим текст на дисплей  

  myGLCD.setColor(VGA_WHITE);  
  myGLCD.setFont(BigFont);    
  myGLCD.printNumI(engineSpeed,60,3);
    
  myGLCD.setColor(VGA_WHITE);  
  myGLCD.setFont(BigFont);    
  myGLCD.printNumI(TurboPressure,60,25);

  myGLCD.setColor(VGA_WHITE);  
  myGLCD.setFont(BigFont);    
  myGLCD.printNumI(Turbocharger_valve,60,50);

  myGLCD.setColor(VGA_WHITE);  
  myGLCD.setFont(BigFont);    
  myGLCD.printNumI(EGR_duty,60,75);

  myGLCD.setColor(VGA_WHITE);  
  myGLCD.setFont(BigFont);    
  myGLCD.printNumI(EGR_Consumption,60,100);
*/

  myGLCD.setFont(SmallFont);                           // устанавливаем большой шрифт
  myGLCD.setColor(VGA_WHITE);                          // устанавливаем цвет текста
  myGLCD.print(" PR1:",LEFT, 3);
  myGLCD.print(" PR2:",LEFT, 13); 
  myGLCD.print(" PR3:", LEFT, 23);                // выводим текст на дисплей
  myGLCD.print(" PR4:", LEFT, 33);             // выводим текст на дисплей
  myGLCD.print(" PR5:", LEFT, 43);             // выводим текст на дисплей
  myGLCD.print(" PR6:", LEFT, 53);             // выводим текст на дисплей 
  myGLCD.print(" PR7:", LEFT, 63);              
  myGLCD.print(" PR8:", LEFT, 73);             
  myGLCD.print(" PR9:", LEFT, 83);   
  myGLCD.print("PR10:", LEFT, 93);
  myGLCD.print("PR11:", LEFT, 103);
  myGLCD.print("PR12:", LEFT, 113);
 

  myGLCD.printNumI(engineSpeed,60,5);    
  myGLCD.printNumI(coolantTemp,60,15);   
  myGLCD.printNumI(oilTemp,60,25); 
  myGLCD.printNumI(supplyVoltage,60,35); 
  myGLCD.printNumI(fuelConsumption,60,45);
  myGLCD.printNumI(odometer,60,55);
  myGLCD.printNumI(TurboPressure,60,65);
  myGLCD.printNumI(Turbocharger_valve,60,75);
  myGLCD.printNumI(EGR_duty,60,85);
  myGLCD.printNumI(EGR_Consumption,60,95);
  myGLCD.printNumI(EGR_Consumption_target,60,105);
  myGLCD.printNumI(7420,60,115);


 
/*Serial.println();
Serial.print ("engineSpeed:  "); Serial.println(engineSpeed);
Serial.print ("coolantTemp :  "); Serial.println(coolantTemp);
Serial.print ("oilTemp :  "); Serial.println(oilTemp);
Serial.print ("supplyVoltage :  "); Serial.println(supplyVoltage);
Serial.print ("fuelConsumption :  "); Serial.println(fuelConsumption);
Serial.print ("odometer :  "); Serial.println(odometer);
Serial.print ("TurboPressure :  "); Serial.println(TurboPressure);
Serial.print ("Turbocharger_valve  "); Serial.println(Turbocharger_valve);
Serial.print ("EGR_duty:  "); Serial.println(EGR_duty);
Serial.print ("EGR_Consumption:  "); Serial.println(TurboPressure);
Serial.print ("EGR_Consumption_target:  "); Serial.println(TurboPressure_target);

Serial.println(); */     
}




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

А что конкретно не понятно то? Когда currPage=1 идет подключение к щитку приборов и вытягивается 3 переменных, когда currPage=2, соответственно подключение к ECM , вытягивается 4 переменные, все по скетчу, все работает.

taha17
taha17 аватар
Offline
Зарегистрирован: 08.10.2017

переменная по нажатию  кнопки переключает экраны, ну и естественно переключается между блоками. Действительно, всё просто. Это ж надо так затупить )))) Мне порой нравится ваш подход в помощи, где посложнеее сами код подправите, где есть повод поразмышлять, то направите в нужную сторону)) Спасибо ))

taha17
taha17 аватар
Offline
Зарегистрирован: 08.10.2017

С двух блоков одновременно не даёт читать инфу ((

Пробовал вывести все  в currPage, ничего не помогло.

Потом пробовал вот так(добавил currAddr2, currPage2):

switch (currAddr){
      case ADR_Engine: 
        switch(group){
          
          case 3: 
            switch (idx){
              /*case 0: engineSpeed = v; break;
              case 1: supplyVoltage=v; break;
              case 2: coolantTemp =v; break;
              case 3: intakeAirTemp=v; break;*/
              case 0: engineSpeed = v; break;
              case 1: EGR_Consumption_target =v; break;
              case 2: EGR_Consumption=v; break;
              case 3: EGR_duty=v; break;
            }              
            break;
          case 11: 
            switch (idx){
              /*case 1: engineLoad=v; break;
              case 2: vehicleSpeed =v; break;
              case 3: fuelConsumption=v; break;*/
              case 0: engineSpeed = v; break;
              case 1: TurboPressure_target =v; break;
              case 2: TurboPressure =v; break;
              case 3: Turbocharger_valve=v; break;
            }              
            break;
          case 15: 
            switch (idx){  
              case 2: fuelConsumption =v; break;
            } 
            break;
            case 16: 
            switch (idx){              

              case 3: supplyVoltage =v; break;

            }              
            break;
        }
        break;
    }
    
    switch (currAddr2){
        
      case ADR_Dashboard: 
        switch (group){ 
          case 1:  
            switch (idx){
              case 0: vehicleSpeed = v; break;
              case 1: engineSpeed = v; break;
              case 2: oilPressure = v; break;
            }
            break;
          case 2:
            switch (idx){
              case 0: odometer = v; break;
              case 1: fuelLevel = v; break;         
            }
            break;
            case 3:
            switch (idx){
              case 0: fuelLevel = v; break;         
            }
            break;
          case 50:
            switch (idx){
              case 1: engineSpeed = v; break;
              case 2: oilTemp = v; break;
              case 3: coolantTemp = v; break;
            }
            break;
        }
        break;
    }

----------------------------------------------------
и выводить вот так:

switch (currPage2){
    case 1:      
      if (currAddr != ADR_Dashboard){        
        connect(ADR_Dashboard, 9600);
      } else  {
        readSensors(1);
        readSensors(2);
        readSensors(50);        
      }  
          
      break;
      
  }   
   switch (currPage){
    case 1:       
        if (currAddr2 != ADR_Engine) {
        connect(ADR_Engine, 9600);
      } else {
        readSensors(3);
        readSensors(11);
        readSensors(15);
        readSensors(16);
      }    
      break;

Результат тот же - вообще глухо

Если это действительно так, то дела идут не очень хорошо(( скорее всего придется все тянуть только с приборки....

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

посмотрите в вагкоме какие параметры вам нужны из приборки. Желательно выбрать те, которые медленно меняются. Алгоритм будет такой - основная связь будет идти с блоком двигателя, и иногда, периодически, будет прерываться на связь с приборкой. Например раз в 5 сек или ещё реже (в этот момент отображение параметров от блока ДВС  на экране будет ненадолго замирать)

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

на опеле, когда мы БК делали было проще - приборка висела на отдельной к-линии (отдельный контакт в обд разъеме). Мы взяли второй к-лайн адаптер и связь сделали одновременно и с приборкой и с ECM. 

taha17
taha17 аватар
Offline
Зарегистрирован: 08.10.2017

Так может попробовать тоже так сделать. Надо только в фишке приборки найти нужный провод. Теоретически должна приборка опрашиваться и сама.

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

ну как вариант, да, откусить приборку от к-линии обд разъема и подключиться к ней локально другим к-лайн адаптером. 

taha17
taha17 аватар
Offline
Зарегистрирован: 08.10.2017

Разобрался с приборкой, получил некоторые данные. l/h -величина не меняемая. Температура масла всегда на 78, наверное не работает датчик.Посещает мысль сделать тоже кнопку для переключения между блоками..будет тип 3-ри экрана. 1-Движок 2-Приборка 3-Общий (как вы и предлогали, делать запросы по несколько секунд к одному, потом к второму блоку). Ну в принципе мне бы хватило того, что есть в приборке, но еще хочется контролировать напругу аккума(а она только в блоке двигателе) или может какой вариант есть узнать напругу через дуню. Всё так же нуждаюсь в вашей помощи с расчетом расхода топлива и остатка хода.

 


#include <UTFT.h>                                      // подключаем библиотеку UTFT
extern uint8_t SmallFont[];                            // подключаем маленький шрифт
extern uint8_t BigFont[];                              // подключаем большой шрифт
extern uint8_t SevenSegNumFont[];                      // подключаем цифровой шрифт
UTFT myGLCD(ST7735, 11, 13, 10, 8, 9);


#include <Wire.h>
#include "NewSoftwareSerial.h"

#define pinKLineRX 5
#define pinKLineTX 6
#define pinLED 2
#define pinBuzzer 3
#define pinButton 4


#define ADR_Engine 0x01
#define ADR_Gears  0x02
#define ADR_ABS_Brakes 0x03
#define ADR_Airbag 0x15
#define ADR_Dashboard 0x17
#define ADR_Immobilizer 0x25
#define ADR_Central_locking 0x35

//#define DEBUG 1

//LiquidCrystal_I2C lcd(0x27,20,4);  // set the LCD address to 0x20 for a 16 chars and 2 line display
NewSoftwareSerial obd(pinKLineRX, pinKLineTX, false); // RX, TX, inverse logic

uint8_t currAddr = 0;
uint8_t blockCounter = 0;
uint8_t errorTimeout = 0;
uint8_t errorData = 0;
bool connected = false;
int sensorCounter = 0;
int pageUpdateCounter = 0;
int alarmCounter = 0;

uint8_t currPage = 1; //************************

int8_t coolantTemp = 0;     //Температурв ОЖ                      1-1-3         /////0-1-2-3
int8_t oilTemp = 0;         //Температура  Масла                  17-50-2
int8_t intakeAirTemp = 0;   //Температура вохдуха
int8_t oilPressure = 0;     //Давление масла
float engineLoad = 0;       //
int   engineSpeed = 0;      //Обороты двигателя                   1-1-0
float throttleValve = 0;    //Дрорссельная заслонка(клапан)
float supplyVoltage = 0;    //Напряжение питания (аккума)         1-16-3
uint8_t vehicleSpeed = 0;   //Скорость автомобиля
uint8_t fuelConsumption = 0;//Потребление топлива                 1-15-2 л/ч
uint8_t fuelLevel = 0;      //Уровень топлива                     17-3-0
unsigned long odometer = 0; // Одометр                            17-2-0

// наши параметры
int TurboPressure = 0;
int TurboPressure_target = 0;
uint8_t Turbocharger_valve = 0;
uint8_t EGR_duty = 0;
int EGR_Consumption = 0;
int EGR_Consumption_target = 0;


String floatToString(float v){
  String res; 
  char buf[16];      
  dtostrf(v,4, 2, buf); 
  res=String(buf);
  return res;
}

void disconnect(){
  connected = false;
  currAddr = 0;
}


void obdWrite(uint8_t data){
#ifdef DEBUG
  Serial.print("uC:");
  Serial.println(data, HEX);
#endif
  obd.write(data);
}

uint8_t obdRead(){
  unsigned long timeout = millis() + 1000;  
  while (!obd.available()){
    if (millis() >= timeout) {
      Serial.println(F("ERROR: obdRead timeout"));
      disconnect();      
      errorTimeout++;
      return 0;
    }
  }
  uint8_t data = obd.read();
#ifdef DEBUG  
  Serial.print("ECU:");
  Serial.println(data, HEX);
#endif  
  return data;
}

// 5Bd, 7O1
void send5baud(uint8_t data){
  // // 1 start bit, 7 data bits, 1 parity, 1 stop bit
  #define bitcount 10
  byte bits[bitcount];
  byte even=1;
  byte bit;
  for (int i=0; i < bitcount; i++){
    bit=0;
    if (i == 0)  bit = 0;
      else if (i == 8) bit = even; // computes parity bit
      else if (i == 9) bit = 1;
      else {
        bit = (byte) ((data & (1 << (i-1))) != 0);
        even = even ^ bit;
      }
    Serial.print(F("bit"));      
    Serial.print(i);          
    Serial.print(F("="));              
    Serial.print(bit);
    if (i == 0) Serial.print(F(" startbit"));
      else if (i == 8) Serial.print(F(" parity"));    
      else if (i == 9) Serial.print(F(" stopbit"));              
    Serial.println();      
    bits[i]=bit;
  }
  // now send bit stream    
  for (int i=0; i < bitcount+1; i++){
    if (i != 0){
      // wait 200 ms (=5 baud), adjusted by latency correction
      delay(200);
      if (i == bitcount) break;
    }
    if (bits[i] == 1){ 
      // high
      digitalWrite(pinKLineTX, HIGH);
    } else {
      // low
      digitalWrite(pinKLineTX, LOW);
    }
  }
  obd.flush();
}


bool KWP5BaudInit(uint8_t addr){
  Serial.println(F("---KWP 5 baud init"));
  //delay(3000);
  send5baud(addr);
  return true;
}


bool KWPSendBlock(char *s, int size){
  Serial.print(F("---KWPSend sz="));
  Serial.print(size);
  Serial.print(F(" blockCounter="));
  Serial.println(blockCounter);    
  // show data
  Serial.print(F("OUT:"));
  for (int i=0; i < size; i++){    
    uint8_t data = s[i];
    Serial.print(data, HEX);
    Serial.print(" ");    
  }  
  Serial.println();
  for (int i=0; i < size; i++){
    uint8_t data = s[i];    
    obdWrite(data);
    
    if (i < size-1){
      uint8_t complement = obdRead();        
      if (complement != (data ^ 0xFF)){
        Serial.println(F("ERROR: invalid complement"));
        disconnect();
        errorData++;
        return false;
      }
    }
  }
  blockCounter++;
  return true;
}


bool KWPReceiveBlock(char s[], int maxsize, int &size){  
  bool ackeachbyte = false;
  uint8_t data = 0;
  int recvcount = 0;
  if (size == 0) ackeachbyte = true;
  Serial.print(F("---KWPReceive sz="));
  Serial.print(size);
  Serial.print(F(" blockCounter="));
  Serial.println(blockCounter);
  if (size > maxsize) {
    Serial.println("ERROR: invalid maxsize");
    return false;
  }  
  unsigned long timeout = millis() + 1000;  
  while ((recvcount == 0) || (recvcount != size)) {
    while (obd.available()){      
      data = obdRead();
      s[recvcount] = data;    
      recvcount++;      
      if ((size == 0) && (recvcount == 1)) {
        size = data + 1;
        if (size > maxsize) {
          Serial.println("ERROR: invalid maxsize");
          return false;
        }  
      }
      if ((ackeachbyte) && (recvcount == 2)) {
        if (data != blockCounter){
          Serial.println(F("ERROR: invalid blockCounter"));
          disconnect();
          errorData++;
          return false;
        }
      }
      if ( ((!ackeachbyte) && (recvcount == size)) ||  ((ackeachbyte) && (recvcount < size)) ){
        obdWrite(data ^ 0xFF);  // send complement ack        
         }
      timeout = millis() + 1000;        
    } 
    if (millis() >= timeout){
      Serial.println(F("ERROR: timeout"));
      disconnect();
      errorTimeout++;
      return false;
    }
  }
  // show data
  Serial.print(F("IN: sz="));  
  Serial.print(size);  
  Serial.print(F(" data="));  
  for (int i=0; i < size; i++){
    uint8_t data = s[i];
    Serial.print(data, HEX);
    Serial.print(F(" "));    
  }  
  Serial.println();
  blockCounter++;
  return true;
}

bool KWPSendAckBlock(){
  Serial.print(F("---KWPSendAckBlock blockCounter="));
  Serial.println(blockCounter);  
  char buf[32];  
  sprintf(buf, "\x03%c\x09\x03", blockCounter);  
  return (KWPSendBlock(buf, 4));
}

bool connect(uint8_t addr, int baudrate){  
  Serial.print(F("------connect addr="));
  Serial.print(addr);
  Serial.print(F(" baud="));  
  Serial.println(baudrate);  
  tone(pinBuzzer, 1200);    
  delay(100);
  noTone(pinBuzzer);  
  blockCounter = 0;  
  currAddr = 0;
  obd.begin(baudrate);       
  KWP5BaudInit(addr);
  char s[3];
  int size = 3;
  if (!KWPReceiveBlock(s, 3, size)) return false;
  if (    (((uint8_t)s[0]) != 0x55) 
     ||   (((uint8_t)s[1]) != 0x01) 
     ||   (((uint8_t)s[2]) != 0x8A)   ){
    Serial.println(F("ERROR: invalid magic"));
    disconnect();
    errorData++;
    return false;
  }
  currAddr = addr;
  connected = true;  
  if (!readConnectBlocks()) return false;
  return true;
}
  
bool readConnectBlocks(){  
  // read connect blocks
  Serial.println(F("------readconnectblocks"));
  String info;  
  while (true){
    int size = 0;
    char s[64];
    if (!(KWPReceiveBlock(s, 64, size))) return false;
    if (size == 0) return false;
    if (s[2] == '\x09') break; 
    if (s[2] != '\xF6') {
      Serial.println(F("ERROR: unexpected answer"));
      disconnect();
      errorData++;
      return false;
    }
    String text = String(s);
    info += text.substring(3, size-2);
    if (!KWPSendAckBlock()) return false;
  }
  Serial.print("label=");
  Serial.println(info);
  return true;
}

bool readSensors(int group){
  Serial.print(F("------readSensors "));
  Serial.println(group);
//  lcdPrint(0,0, F("KW1281 sensor"), 20);  
  char s[64];
  sprintf(s, "\x04%c\x29%c\x03", blockCounter, group);
  if (!KWPSendBlock(s, 5)) return false;
  int size = 0;
  KWPReceiveBlock(s, 64, size);
  if (s[2] != '\xe7') {
    Serial.println(F("ERROR: invalid answer"));
    disconnect();
    errorData++;
    return false;
  }
  int count = (size-4) / 3;
  Serial.print(F("count="));
  Serial.println(count);
  for (int idx=0; idx < count; idx++){
    byte k=s[3 + idx*3];
    byte a=s[3 + idx*3+1];
    byte b=s[3 + idx*3+2];
    String n;
    float v = 0;
    Serial.print(F("type="));
    Serial.print(k);
    Serial.print(F("  a="));
    Serial.print(a);
    Serial.print(F("  b="));
    Serial.print(b);
    Serial.print(F("  text="));
    String t = "";
    String units = "";
    char buf[32];    
    switch (k){
      case 1:  v=0.2*a*b;             units=F("rpm"); break;
      case 2:  v=a*0.002*b;           units=F("%%"); break;
      case 3:  v=0.002*a*b;           units=F("Deg"); break;
      case 4:  v=abs(b-127)*0.01*a;   units=F("ATDC"); break;
      case 5:  v=a*(b-100)*0.1;       units=F("°C");break;
      case 6:  v=0.001*a*b;           units=F("V");break;
      case 7:  v=0.01*a*b;            units=F("km/h");break;
      case 8:  v=0.1*a*b;             units=F(" ");break;
      case 9:  v=(b-127)*0.02*a;      units=F("Deg");break;
      case 10: if (b == 0) t=F("COLD"); else t=F("WARM");break;
      case 11: v=0.0001*a*(b-128)+1;  units = F(" ");break;
      case 12: v=0.001*a*b;           units =F("Ohm");break;
      case 13: v=(b-127)*0.001*a;     units =F("mm");break;
      case 14: v=0.005*a*b;           units=F("bar");break;
      case 15: v=0.01*a*b;            units=F("ms");break;
      case 18: v=0.04*a*b;            units=F("mbar");break;
      case 19: v=a*b*0.01;            units=F("l");break;
      case 20: v=a*(b-128)/128;       units=F("%%");break;
      case 21: v=0.001*a*b;           units=F("V");break;
      case 22: v=0.001*a*b;           units=F("ms");break;
      case 23: v=b/256*a;             units=F("%%");break;
      case 24: v=0.001*a*b;           units=F("A");break;
      case 25: v=(b*1.421)+(a/182);   units=F("g/s");break;
      case 26: v=float(b-a);          units=F("C");break;
      case 27: v=abs(b-128)*0.01*a;   units=F("°");break;
      case 28: v=float(b-a);          units=F(" ");break;
      case 30: v=b/12*a;              units=F("Deg k/w");break;
      case 31: v=b/2560*a;            units=F("°C");break;
      case 33: v=100*b/a;             units=F("%%");break;
      case 34: v=(b-128)*0.01*a;      units=F("kW");break;
      case 35: v=0.01*a*b;            units=F("l/h");break;
      case 36: v=((unsigned long)a)*2560+((unsigned long)b)*10;  units=F("km");break;
      case 37: v=b; break; // oil pressure ?!
      // ADP: FIXME!
      /*case 37: switch(b){
             case 0: sprintf(buf, F("ADP OK (%d,%d)"), a,b); t=String(buf); break;
             case 1: sprintf(buf, F("ADP RUN (%d,%d)"), a,b); t=String(buf); break;
             case 0x10: sprintf(buf, F("ADP ERR (%d,%d)"), a,b); t=String(buf); break;
             default: sprintf(buf, F("ADP (%d,%d)"), a,b); t=String(buf); break;
          }*/
      case 38: v=(b-128)*0.001*a;        units=F("Deg k/w"); break;
      case 39: v=b/256*a;                units=F("mg/h"); break;
      case 40: v=b*0.1+(25.5*a)-400;     units=F("A"); break;
      case 41: v=b+a*255;                units=F("Ah"); break;
      case 42: v=b*0.1+(25.5*a)-400;     units=F("Kw"); break;
      case 43: v=b*0.1+(25.5*a);         units=F("V"); break;
      case 44: sprintf(buf, "%2d:%2d", a,b); t=String(buf); break;
      case 45: v=0.1*a*b/100;            units=F(" "); break;
      case 46: v=(a*b-3200)*0.0027;      units=F("Deg k/w"); break;
      case 47: v=(b-128)*a;              units=F("ms"); break;
      case 48: v=b+a*255;                units=F(" "); break;
      case 49: v=(b/4)*a*0.1;            units=F("mg/h"); break;
      case 50: v=(b-128)/(0.01*a);       units=F("mbar"); break;
      case 51: v=((b-128)/255)*a;        units=F("mg/h"); break;
      case 52: v=b*0.02*a-a;             units=F("Nm"); break;
      case 53: v=(b-128)*1.4222+0.006*a;  units=F("g/s"); break;
      case 54: v=a*256+b;                units=F("count"); break;
      case 55: v=a*b/200;                units=F("s"); break;
      case 56: v=a*256+b;                units=F("WSC"); break;
      case 57: v=a*256+b+65536;          units=F("WSC"); break;
      case 59: v=(a*256+b)/32768;        units=F("g/s"); break;
      case 60: v=(a*256+b)*0.01;         units=F("sec"); break;
      case 62: v=0.256*a*b;              units=F("S"); break;
      case 64: v=float(a+b);             units=F("Ohm"); break;
      case 65: v=0.01*a*(b-127);         units=F("mm"); break;
      case 66: v=(a*b)/511.12;          units=F("V"); break;
      case 67: v=(640*a)+b*2.5;         units=F("Deg"); break;
      case 68: v=(256*a+b)/7.365;       units=F("deg/s");break;
      case 69: v=(256*a +b)*0.3254;     units=F("Bar");break;
      case 70: v=(256*a +b)*0.192;      units=F("m/s^2");break;
      default: sprintf(buf, "%2x, %2x      ", a, b); break;
    }
    
    switch (currAddr){
        case ADR_Engine: 
        switch(group){
          
          case 3: 
            switch (idx){
              case 0: engineSpeed = v; break;
              case 1: EGR_Consumption_target =v; break;
              case 2: EGR_Consumption=v; break;
              case 3: EGR_duty=v; break;
            }              
            break;
          case 11: 
            switch (idx){
              case 0: engineSpeed = v; break;
              case 1: TurboPressure_target =v; break;
              case 2: TurboPressure =v; break;
              case 3: Turbocharger_valve=v; break;
            }              
            break;
          case 15: 
            switch (idx){  
              case 2: fuelConsumption =v; break; //Расход топлива л/ч
            } 
            break;
            case 16: 
            switch (idx){              

              case 3: supplyVoltage =v; break; //Аккум

            }              
            break;
        }
        break;
      case ADR_Dashboard: 
        switch (group){ 
          case 1:  
            switch (idx){
              case 1: vehicleSpeed = v; break;      //Скорость
              case 2: engineSpeed = v; break;      //Обороты двигателя
             // case 3: fuelConsumption =v; break;   //Расход топлива л/ч !!! в приборке не меняется
                        
            }
            break;
          case 2:
            switch (idx){
              case 0: odometer = v; break;    //Пробег
              //case 1:  = v; break;  // ?????  Температура топлива
                
            }
            break;
            case 3:
            switch (idx){
              case 0: fuelLevel = v; break;   // Топлива в баку (литр)    
                     
            }
            break;
          case 50:
            switch (idx){
            // case 0: odometer = v; break;  //Пробег
            // case 1: engineSpeed = v; break; //Обороты двигателя
             case 2: oilTemp = v; break; // Температура масла // по ходу не работает датчик всегда показывает 78 
            }
            break;
        }
        break;
    }
    if (units.length() != 0){
      dtostrf(v,4, 2, buf); 
      t=String(buf) + " " + units;
    }          
    Serial.println(t);
    
    //lcd.setCursor(0, idx);      
    //while (t.length() < 20) t += " ";
    //lcd.print(t);//      
  }
  sensorCounter++;
  return true;
}

void alarm(){
  if (alarmCounter > 10) return;
  tone(pinBuzzer, 1200);    
  delay(100);
  noTone(pinBuzzer);   
  alarmCounter++;
}
void setup(){      
  myGLCD.InitLCD(PORTRAIT);                                    // инициируем дисплей (в качестве параметра данной функции можно указать ориентацию дисплея: PORTRAIT или LANDSCAPE), по умолчанию LANDSCAPE - горизонтальная ориентация
  myGLCD.clrScr();  
   
  pinMode(pinKLineTX, OUTPUT);  
  digitalWrite(pinKLineTX, HIGH);  
  
  pinMode(pinButton, INPUT);  
  pinMode(pinButton, INPUT_PULLUP);  
  
  pinMode(pinBuzzer, OUTPUT);
  /*tone(pinBuzzer, 1200);    
  delay(100);
  noTone(pinBuzzer);*/
  
  Serial.begin(19200);  
  Serial.println(F("SETUP"));            
        
  Serial.println(F("START"));       
}


void loop(){    
  
  if (digitalRead(pinButton) == LOW){    
    currPage++;
    if (currPage > 2) currPage = 1;
    
    errorTimeout = 0;
    errorData = 0;            
    while (digitalRead(pinButton) == LOW);        
  }

  switch (currPage){
    case 1:      
      if (currAddr != ADR_Dashboard){        
        connect(ADR_Dashboard, 9600);
      } else  {
        readSensors(1);
        readSensors(2);
        readSensors(3);
        readSensors(50);        
      }            
      break;
    case 2:       
       if (currAddr != ADR_Engine) {
        connect(ADR_Engine, 9600);
      } else {
        readSensors(3);
        readSensors(11);
        readSensors(15);
        readSensors(16);
      }    
      break;
      
  }   
   
  
/*
  myGLCD.setFont(BigFont);                           // устанавливаем большой шрифт
  myGLCD.setColor(VGA_WHITE);                          // устанавливаем цвет текста
  myGLCD.print("PR1:",LEFT, 3);
  myGLCD.print("PR2:",LEFT, 25); // выводим текст на дисплей
  myGLCD.print("PR3:", LEFT, 50);                // выводим текст на дисплей
  myGLCD.print("PR4:", LEFT, 75);             // выводим текст на дисплей
  myGLCD.print("PR5:", LEFT, 100);             // выводим текст на дисплей  

  myGLCD.setColor(VGA_WHITE);  
  myGLCD.setFont(BigFont);    
  myGLCD.printNumI(engineSpeed,60,3);
    
  myGLCD.setColor(VGA_WHITE);  
  myGLCD.setFont(BigFont);    
  myGLCD.printNumI(TurboPressure,60,25);

  myGLCD.setColor(VGA_WHITE);  
  myGLCD.setFont(BigFont);    
  myGLCD.printNumI(Turbocharger_valve,60,50);

  myGLCD.setColor(VGA_WHITE);  
  myGLCD.setFont(BigFont);    
  myGLCD.printNumI(EGR_duty,60,75);

  myGLCD.setColor(VGA_WHITE);  
  myGLCD.setFont(BigFont);    
  myGLCD.printNumI(EGR_Consumption,60,100);
*/

  myGLCD.setFont(SmallFont);                           // устанавливаем большой шрифт
  myGLCD.setColor(VGA_WHITE);                          // устанавливаем цвет текста
  myGLCD.print(" PR1:",LEFT, 3);
  myGLCD.print(" PR2:",LEFT, 13); 
  myGLCD.print(" PR3:", LEFT, 23);                // выводим текст на дисплей
  myGLCD.print(" PR4:", LEFT, 33);             
  myGLCD.print(" PR5:", LEFT, 43);             
  myGLCD.print(" PR6:", LEFT, 53);             
  myGLCD.print(" PR7:", LEFT, 63);              
  myGLCD.print(" PR8:", LEFT, 73);             
  myGLCD.print(" PR9:", LEFT, 83);   
  myGLCD.print(" R10:", LEFT, 93);
  myGLCD.print(" R11:", LEFT, 103);
  myGLCD.print(" R12:", LEFT, 113);
 

  myGLCD.printNumI(engineSpeed,40,5);              myGLCD.print("rpm",95,5);
  myGLCD.printNumI(coolantTemp,40,15);             myGLCD.print("C",95,15);
  myGLCD.printNumI(oilTemp,40,25);                 myGLCD.print("oilC",95,25);
  myGLCD.printNumI(supplyVoltage,40,35);           myGLCD.print("Volt",95,35);
  myGLCD.printNumI(fuelConsumption,40,45);         myGLCD.print("l/h",95,45);
  myGLCD.printNumI(odometer,40,55);                myGLCD.print("km",95,55);
  myGLCD.printNumI(TurboPressure,40,65);
  myGLCD.printNumI(Turbocharger_valve,40,75);
  myGLCD.printNumI(EGR_duty,40,85);
  myGLCD.printNumI(EGR_Consumption,40,95);
  //myGLCD.printNumI(EGR_Consumption_target,40,105);
  myGLCD.printNumI(fuelLevel,40,105);              myGLCD.print("litr",95,105);
  myGLCD.printNumI(vehicleSpeed,40,115);           myGLCD.print("km/h",95,115);


 
/*Serial.println();
Serial.print ("engineSpeed:  "); Serial.println(engineSpeed);
Serial.print ("coolantTemp :  "); Serial.println(coolantTemp);
Serial.print ("oilTemp :  "); Serial.println(oilTemp);
Serial.print ("supplyVoltage :  "); Serial.println(supplyVoltage);
Serial.print ("fuelConsumption :  "); Serial.println(fuelConsumption);
Serial.print ("odometer :  "); Serial.println(odometer);
Serial.print ("TurboPressure :  "); Serial.println(TurboPressure);
Serial.print ("Turbocharger_valve  "); Serial.println(Turbocharger_valve);
Serial.print ("EGR_duty:  "); Serial.println(EGR_duty);
Serial.print ("EGR_Consumption:  "); Serial.println(TurboPressure);
Serial.print ("EGR_Consumption_target:  "); Serial.println(TurboPressure_target);

Serial.println(); */     
}




 

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

если будет известно цикловое наполнение топливом (ну или часовой расход) - эти параметры только в ECM, то можно рассчитать,  кроме средего, также  и мгновенный расход топлива в час и на 100км. а также расход за поездку.  

taha17
taha17 аватар
Offline
Зарегистрирован: 08.10.2017

Все переменные готовы. В том числе и расход л/ч. Может целесообразно его сделать типом float, для дальнейшего более точно расчета ?


#include <UTFT.h>                                      // подключаем библиотеку UTFT
extern uint8_t SmallFont[];                            // подключаем маленький шрифт
extern uint8_t BigFont[];                              // подключаем большой шрифт
extern uint8_t SevenSegNumFont[];                      // подключаем цифровой шрифт
UTFT myGLCD(ST7735, 11, 13, 10, 8, 9);


#include <Wire.h>
#include "NewSoftwareSerial.h"

#define pinKLineRX 5
#define pinKLineTX 6
#define pinLED 2
#define pinBuzzer 3
#define pinButton 4


#define ADR_Engine 0x01
#define ADR_Gears  0x02
#define ADR_ABS_Brakes 0x03
#define ADR_Airbag 0x15
#define ADR_Dashboard 0x17
#define ADR_Immobilizer 0x25
#define ADR_Central_locking 0x35

//#define DEBUG 1

//LiquidCrystal_I2C lcd(0x27,20,4);  // set the LCD address to 0x20 for a 16 chars and 2 line display
NewSoftwareSerial obd(pinKLineRX, pinKLineTX, false); // RX, TX, inverse logic

uint8_t currAddr = 0;
uint8_t blockCounter = 0;
uint8_t errorTimeout = 0;
uint8_t errorData = 0;
bool connected = false;
int sensorCounter = 0;
int pageUpdateCounter = 0;
int alarmCounter = 0;

uint8_t currPage = 2; //************************

int8_t coolantTemp = 0;     //Температурв ОЖ                      1-1-3 /1-7-3/17-2-1         /////0-1-2-3
int8_t oilTemp = 0;         //Температура  Масла                  17-50-2
int8_t intakeAirTemp = 0;   //Температура всасываемого воздуха    1-7-2
int8_t oilPressure = 0;     //Давление масла
float engineLoad = 0;       //Нагрузка двигателя                  1-2-1
int   engineSpeed = 0;      //Обороты двигателя                   1-1-0
float throttleValve = 0;    //Дрорссельная заслонка(клапан)
float supplyVoltage = 0;    //Напряжение питания (аккума)         1-16-3
uint8_t vehicleSpeed = 0;   //Скорость автомобиля                 1-6-0/17-1-1
uint8_t fuelConsumption = 0;//Потребление топлива                 1-15-2 л/ч
uint8_t fuelLevel = 0;      //Уровень топлива                     17-3-0
unsigned long odometer = 0; // Одометр                            17-2-0
//ДМРВ 1-10-0
//Температура масла 29 группа... посмотреть

// наши параметры
int TurboPressure = 0;
int TurboPressure_target = 0;
uint8_t Turbocharger_valve = 0;
uint8_t EGR_duty = 0;
int EGR_Consumption = 0;
int EGR_Consumption_target = 0;


String floatToString(float v){
  String res; 
  char buf[16];      
  dtostrf(v,4, 2, buf); 
  res=String(buf);
  return res;
}

void disconnect(){
  connected = false;
  currAddr = 0;
}


void obdWrite(uint8_t data){
#ifdef DEBUG
  Serial.print("uC:");
  Serial.println(data, HEX);
#endif
  obd.write(data);
}

uint8_t obdRead(){
  unsigned long timeout = millis() + 1000;  
  while (!obd.available()){
    if (millis() >= timeout) {
      Serial.println(F("ERROR: obdRead timeout"));
      disconnect();      
      errorTimeout++;
      return 0;
    }
  }
  uint8_t data = obd.read();
#ifdef DEBUG  
  Serial.print("ECU:");
  Serial.println(data, HEX);
#endif  
  return data;
}

// 5Bd, 7O1
void send5baud(uint8_t data){
  // // 1 start bit, 7 data bits, 1 parity, 1 stop bit
  #define bitcount 10
  byte bits[bitcount];
  byte even=1;
  byte bit;
  for (int i=0; i < bitcount; i++){
    bit=0;
    if (i == 0)  bit = 0;
      else if (i == 8) bit = even; // computes parity bit
      else if (i == 9) bit = 1;
      else {
        bit = (byte) ((data & (1 << (i-1))) != 0);
        even = even ^ bit;
      }
    Serial.print(F("bit"));      
    Serial.print(i);          
    Serial.print(F("="));              
    Serial.print(bit);
    if (i == 0) Serial.print(F(" startbit"));
      else if (i == 8) Serial.print(F(" parity"));    
      else if (i == 9) Serial.print(F(" stopbit"));              
    Serial.println();      
    bits[i]=bit;
  }
  // now send bit stream    
  for (int i=0; i < bitcount+1; i++){
    if (i != 0){
      // wait 200 ms (=5 baud), adjusted by latency correction
      delay(200);
      if (i == bitcount) break;
    }
    if (bits[i] == 1){ 
      // high
      digitalWrite(pinKLineTX, HIGH);
    } else {
      // low
      digitalWrite(pinKLineTX, LOW);
    }
  }
  obd.flush();
}


bool KWP5BaudInit(uint8_t addr){
  Serial.println(F("---KWP 5 baud init"));
  //delay(3000);
  send5baud(addr);
  return true;
}


bool KWPSendBlock(char *s, int size){
  Serial.print(F("---KWPSend sz="));
  Serial.print(size);
  Serial.print(F(" blockCounter="));
  Serial.println(blockCounter);    
  // show data
  Serial.print(F("OUT:"));
  for (int i=0; i < size; i++){    
    uint8_t data = s[i];
    Serial.print(data, HEX);
    Serial.print(" ");    
  }  
  Serial.println();
  for (int i=0; i < size; i++){
    uint8_t data = s[i];    
    obdWrite(data);
    
    if (i < size-1){
      uint8_t complement = obdRead();        
      if (complement != (data ^ 0xFF)){
        Serial.println(F("ERROR: invalid complement"));
        disconnect();
        errorData++;
        return false;
      }
    }
  }
  blockCounter++;
  return true;
}


bool KWPReceiveBlock(char s[], int maxsize, int &size){  
  bool ackeachbyte = false;
  uint8_t data = 0;
  int recvcount = 0;
  if (size == 0) ackeachbyte = true;
  Serial.print(F("---KWPReceive sz="));
  Serial.print(size);
  Serial.print(F(" blockCounter="));
  Serial.println(blockCounter);
  if (size > maxsize) {
    Serial.println("ERROR: invalid maxsize");
    return false;
  }  
  unsigned long timeout = millis() + 1000;  
  while ((recvcount == 0) || (recvcount != size)) {
    while (obd.available()){      
      data = obdRead();
      s[recvcount] = data;    
      recvcount++;      
      if ((size == 0) && (recvcount == 1)) {
        size = data + 1;
        if (size > maxsize) {
          Serial.println("ERROR: invalid maxsize");
          return false;
        }  
      }
      if ((ackeachbyte) && (recvcount == 2)) {
        if (data != blockCounter){
          Serial.println(F("ERROR: invalid blockCounter"));
          disconnect();
          errorData++;
          return false;
        }
      }
      if ( ((!ackeachbyte) && (recvcount == size)) ||  ((ackeachbyte) && (recvcount < size)) ){
        obdWrite(data ^ 0xFF);  // send complement ack        
         }
      timeout = millis() + 1000;        
    } 
    if (millis() >= timeout){
      Serial.println(F("ERROR: timeout"));
      disconnect();
      errorTimeout++;
      return false;
    }
  }
  // show data
  Serial.print(F("IN: sz="));  
  Serial.print(size);  
  Serial.print(F(" data="));  
  for (int i=0; i < size; i++){
    uint8_t data = s[i];
    Serial.print(data, HEX);
    Serial.print(F(" "));    
  }  
  Serial.println();
  blockCounter++;
  return true;
}

bool KWPSendAckBlock(){
  Serial.print(F("---KWPSendAckBlock blockCounter="));
  Serial.println(blockCounter);  
  char buf[32];  
  sprintf(buf, "\x03%c\x09\x03", blockCounter);  
  return (KWPSendBlock(buf, 4));
}

bool connect(uint8_t addr, int baudrate){  
  Serial.print(F("------connect addr="));
  Serial.print(addr);
  Serial.print(F(" baud="));  
  Serial.println(baudrate);  
  tone(pinBuzzer, 1200);    
  delay(100);
  noTone(pinBuzzer);  
  blockCounter = 0;  
  currAddr = 0;
  obd.begin(baudrate);       
  KWP5BaudInit(addr);
  char s[3];
  int size = 3;
  if (!KWPReceiveBlock(s, 3, size)) return false;
  if (    (((uint8_t)s[0]) != 0x55) 
     ||   (((uint8_t)s[1]) != 0x01) 
     ||   (((uint8_t)s[2]) != 0x8A)   ){
    Serial.println(F("ERROR: invalid magic"));
    disconnect();
    errorData++;
    return false;
  }
  currAddr = addr;
  connected = true;  
  if (!readConnectBlocks()) return false;
  return true;
}
  
bool readConnectBlocks(){  
  // read connect blocks
  Serial.println(F("------readconnectblocks"));
  String info;  
  while (true){
    int size = 0;
    char s[64];
    if (!(KWPReceiveBlock(s, 64, size))) return false;
    if (size == 0) return false;
    if (s[2] == '\x09') break; 
    if (s[2] != '\xF6') {
      Serial.println(F("ERROR: unexpected answer"));
      disconnect();
      errorData++;
      return false;
    }
    String text = String(s);
    info += text.substring(3, size-2);
    if (!KWPSendAckBlock()) return false;
  }
  Serial.print("label=");
  Serial.println(info);
  return true;
}

bool readSensors(int group){
  Serial.print(F("------readSensors "));
  Serial.println(group);
//  lcdPrint(0,0, F("KW1281 sensor"), 20);  
  char s[64];
  sprintf(s, "\x04%c\x29%c\x03", blockCounter, group);
  if (!KWPSendBlock(s, 5)) return false;
  int size = 0;
  KWPReceiveBlock(s, 64, size);
  if (s[2] != '\xe7') {
    Serial.println(F("ERROR: invalid answer"));
    disconnect();
    errorData++;
    return false;
  }
  int count = (size-4) / 3;
  Serial.print(F("count="));
  Serial.println(count);
  for (int idx=0; idx < count; idx++){
    byte k=s[3 + idx*3];
    byte a=s[3 + idx*3+1];
    byte b=s[3 + idx*3+2];
    String n;
    float v = 0;
    Serial.print(F("type="));
    Serial.print(k);
    Serial.print(F("  a="));
    Serial.print(a);
    Serial.print(F("  b="));
    Serial.print(b);
    Serial.print(F("  text="));
    String t = "";
    String units = "";
    char buf[32];    
    switch (k){
      case 1:  v=0.2*a*b;             units=F("rpm"); break;
      case 2:  v=a*0.002*b;           units=F("%%"); break;
      case 3:  v=0.002*a*b;           units=F("Deg"); break;
      case 4:  v=abs(b-127)*0.01*a;   units=F("ATDC"); break;
      case 5:  v=a*(b-100)*0.1;       units=F("°C");break;
      case 6:  v=0.001*a*b;           units=F("V");break;
      case 7:  v=0.01*a*b;            units=F("km/h");break;
      case 8:  v=0.1*a*b;             units=F(" ");break;
      case 9:  v=(b-127)*0.02*a;      units=F("Deg");break;
      case 10: if (b == 0) t=F("COLD"); else t=F("WARM");break;
      case 11: v=0.0001*a*(b-128)+1;  units = F(" ");break;
      case 12: v=0.001*a*b;           units =F("Ohm");break;
      case 13: v=(b-127)*0.001*a;     units =F("mm");break;
      case 14: v=0.005*a*b;           units=F("bar");break;
      case 15: v=0.01*a*b;            units=F("ms");break;
      case 18: v=0.04*a*b;            units=F("mbar");break;
      case 19: v=a*b*0.01;            units=F("l");break;
      case 20: v=a*(b-128)/128;       units=F("%%");break;
      case 21: v=0.001*a*b;           units=F("V");break;
      case 22: v=0.001*a*b;           units=F("ms");break;
      case 23: v=b/256*a;             units=F("%%");break;
      case 24: v=0.001*a*b;           units=F("A");break;
      case 25: v=(b*1.421)+(a/182);   units=F("g/s");break;
      case 26: v=float(b-a);          units=F("C");break;
      case 27: v=abs(b-128)*0.01*a;   units=F("°");break;
      case 28: v=float(b-a);          units=F(" ");break;
      case 30: v=b/12*a;              units=F("Deg k/w");break;
      case 31: v=b/2560*a;            units=F("°C");break;
      case 33: v=100*b/a;             units=F("%%");break;
      case 34: v=(b-128)*0.01*a;      units=F("kW");break;
      case 35: v=0.01*a*b;            units=F("l/h");break;
      case 36: v=((unsigned long)a)*2560+((unsigned long)b)*10;  units=F("km");break;
      case 37: v=b; break; // oil pressure ?!
      // ADP: FIXME!
      /*case 37: switch(b){
             case 0: sprintf(buf, F("ADP OK (%d,%d)"), a,b); t=String(buf); break;
             case 1: sprintf(buf, F("ADP RUN (%d,%d)"), a,b); t=String(buf); break;
             case 0x10: sprintf(buf, F("ADP ERR (%d,%d)"), a,b); t=String(buf); break;
             default: sprintf(buf, F("ADP (%d,%d)"), a,b); t=String(buf); break;
          }*/
      case 38: v=(b-128)*0.001*a;        units=F("Deg k/w"); break;
      case 39: v=b/256*a;                units=F("mg/h"); break;
      case 40: v=b*0.1+(25.5*a)-400;     units=F("A"); break;
      case 41: v=b+a*255;                units=F("Ah"); break;
      case 42: v=b*0.1+(25.5*a)-400;     units=F("Kw"); break;
      case 43: v=b*0.1+(25.5*a);         units=F("V"); break;
      case 44: sprintf(buf, "%2d:%2d", a,b); t=String(buf); break;
      case 45: v=0.1*a*b/100;            units=F(" "); break;
      case 46: v=(a*b-3200)*0.0027;      units=F("Deg k/w"); break;
      case 47: v=(b-128)*a;              units=F("ms"); break;
      case 48: v=b+a*255;                units=F(" "); break;
      case 49: v=(b/4)*a*0.1;            units=F("mg/h"); break;
      case 50: v=(b-128)/(0.01*a);       units=F("mbar"); break;
      case 51: v=((b-128)/255)*a;        units=F("mg/h"); break;
      case 52: v=b*0.02*a-a;             units=F("Nm"); break;
      case 53: v=(b-128)*1.4222+0.006*a;  units=F("g/s"); break;
      case 54: v=a*256+b;                units=F("count"); break;
      case 55: v=a*b/200;                units=F("s"); break;
      case 56: v=a*256+b;                units=F("WSC"); break;
      case 57: v=a*256+b+65536;          units=F("WSC"); break;
      case 59: v=(a*256+b)/32768;        units=F("g/s"); break;
      case 60: v=(a*256+b)*0.01;         units=F("sec"); break;
      case 62: v=0.256*a*b;              units=F("S"); break;
      case 64: v=float(a+b);             units=F("Ohm"); break;
      case 65: v=0.01*a*(b-127);         units=F("mm"); break;
      case 66: v=(a*b)/511.12;          units=F("V"); break;
      case 67: v=(640*a)+b*2.5;         units=F("Deg"); break;
      case 68: v=(256*a+b)/7.365;       units=F("deg/s");break;
      case 69: v=(256*a +b)*0.3254;     units=F("Bar");break;
      case 70: v=(256*a +b)*0.192;      units=F("m/s^2");break;
      default: sprintf(buf, "%2x, %2x      ", a, b); break;
    }
    
    switch (currAddr){
        case ADR_Engine: 
        switch(group){
          case 1: 
            switch (idx){  
              case 3: coolantTemp =v; break; //Температура ОЖ
            } 
            break;
           case 2: 
            switch (idx){  
              case 1: engineLoad =v; break; //Нагрузка двигателя
            } 
            break;
          case 3: 
            switch (idx){

              case 0: engineSpeed = v; break;
              case 1: EGR_Consumption_target =v; break;
              case 2: EGR_Consumption=v; break;
              case 3: EGR_duty=v; break;
            }              
            break;
           case 7: 
            switch (idx){
              case 2: intakeAirTemp =v; break; //Температура всасываемого воздуха
              case 3: coolantTemp =v; break; //Температура ОЖ
            } 
            break;
          case 11: 
            switch (idx){
              case 0: engineSpeed = v; break;
              case 1: TurboPressure_target =v; break;
              case 2: TurboPressure =v; break;
              case 3: Turbocharger_valve=v; break;
            }              
            break;
          case 15: 
            switch (idx){  
              case 2: fuelConsumption =v; break; //Расход топлива л/ч
            } 
            break;
            case 16: 
            switch (idx){              

              case 3: supplyVoltage =v; break; //Аккум

            }              
            break;
        }
        break;
      case ADR_Dashboard: 
        switch (group){ 
          case 1:  
            switch (idx){
              case 1: vehicleSpeed = v; break;      //Скорость
              case 2: engineSpeed = v; break;      //Обороты двигателя
             // case 3: fuelConsumption =v; break;   //Расход топлива л/ч !!! в приборке не меняется
                        
            }
            break;
          case 2:
            switch (idx){
              case 0: odometer = v; break;    //Пробег
              //case 1:  = v; break;  // ?????  Температура топлива
                
            }
            break;
            case 3:
            switch (idx){
              case 0: fuelLevel = v; break;   // Топлива в баку (литр)    
                     
            }
            break;
          case 50:
            switch (idx){
            // case 0: odometer = v; break;  //Пробег
            // case 1: engineSpeed = v; break; //Обороты двигателя
             case 2: oilTemp = v; break;
            }
            break;
        }
        break;
    }
    if (units.length() != 0){
      dtostrf(v,4, 2, buf); 
      t=String(buf) + " " + units;
    }          
    Serial.println(t);
    
    //lcd.setCursor(0, idx);      
    //while (t.length() < 20) t += " ";
    //lcd.print(t);//      
  }
  sensorCounter++;
  return true;
}

void alarm(){
  if (alarmCounter > 10) return;
  tone(pinBuzzer, 1200);    
  delay(100);
  noTone(pinBuzzer);   
  alarmCounter++;
}
void setup(){      
  myGLCD.InitLCD(PORTRAIT);                                    // инициируем дисплей (в качестве параметра данной функции можно указать ориентацию дисплея: PORTRAIT или LANDSCAPE), по умолчанию LANDSCAPE - горизонтальная ориентация
  myGLCD.clrScr();  
   
  pinMode(pinKLineTX, OUTPUT);  
  digitalWrite(pinKLineTX, HIGH);  
  
  pinMode(pinButton, INPUT);  
  pinMode(pinButton, INPUT_PULLUP);  
  
  pinMode(pinBuzzer, OUTPUT);
  /*tone(pinBuzzer, 1200);    
  delay(100);
  noTone(pinBuzzer);*/
  
  Serial.begin(19200);  
  Serial.println(F("SETUP"));            
        
  Serial.println(F("START"));       
}


void loop(){    
  
  if (digitalRead(pinButton) == LOW){    
    currPage++;
    if (currPage > 2) currPage = 1;
    
    errorTimeout = 0;
    errorData = 0;            
    while (digitalRead(pinButton) == LOW);        
  }

  switch (currPage){
    case 1:      
      if (currAddr != ADR_Dashboard){        
        connect(ADR_Dashboard, 9600);
      } else  {
        readSensors(1);
        readSensors(2);
        readSensors(3);
        readSensors(50);        
      }            
      break;
    case 2:       
       if (currAddr != ADR_Engine) {
        connect(ADR_Engine, 9600);
      } else {
        readSensors(1);
        readSensors(2);
        readSensors(3);
        readSensors(7);
        readSensors(11);
        readSensors(15);
        readSensors(16);
      }    
      break;
      
  }   
   
  
/*
  myGLCD.setFont(BigFont);                           // устанавливаем большой шрифт
  myGLCD.setColor(VGA_WHITE);                          // устанавливаем цвет текста
  myGLCD.print("PR1:",LEFT, 3);
  myGLCD.print("PR2:",LEFT, 25); // выводим текст на дисплей
  myGLCD.print("PR3:", LEFT, 50);                // выводим текст на дисплей
  myGLCD.print("PR4:", LEFT, 75);             // выводим текст на дисплей
  myGLCD.print("PR5:", LEFT, 100);             // выводим текст на дисплей  

  myGLCD.setColor(VGA_WHITE);  
  myGLCD.setFont(BigFont);    
  myGLCD.printNumI(engineSpeed,60,3);
    
  myGLCD.setColor(VGA_WHITE);  
  myGLCD.setFont(BigFont);    
  myGLCD.printNumI(TurboPressure,60,25);

  myGLCD.setColor(VGA_WHITE);  
  myGLCD.setFont(BigFont);    
  myGLCD.printNumI(Turbocharger_valve,60,50);

  myGLCD.setColor(VGA_WHITE);  
  myGLCD.setFont(BigFont);    
  myGLCD.printNumI(EGR_duty,60,75);

  myGLCD.setColor(VGA_WHITE);  
  myGLCD.setFont(BigFont);    
  myGLCD.printNumI(EGR_Consumption,60,100);
*/

  myGLCD.setFont(SmallFont);                           // устанавливаем большой шрифт
  myGLCD.setColor(VGA_WHITE);                          // устанавливаем цвет текста
  myGLCD.print(" PR1:",LEFT, 3);
  myGLCD.print(" PR2:",LEFT, 13); 
  myGLCD.print(" PR3:", LEFT, 23);                // выводим текст на дисплей
  myGLCD.print(" PR4:", LEFT, 33);             
  myGLCD.print(" PR5:", LEFT, 43);             
  myGLCD.print(" PR6:", LEFT, 53);             
  myGLCD.print(" PR7:", LEFT, 63);              
  myGLCD.print(" PR8:", LEFT, 73);             
  myGLCD.print(" PR9:", LEFT, 83);   
  myGLCD.print(" R10:", LEFT, 93);
  myGLCD.print(" R11:", LEFT, 103);
  myGLCD.print(" R12:", LEFT, 113);
 

  myGLCD.printNumI(engineSpeed,40,5);              myGLCD.print("rpm",95,5);
  myGLCD.printNumI(coolantTemp,40,15);             myGLCD.print("C",95,15);
  myGLCD.printNumI(oilTemp,40,25);                 myGLCD.print("oilC",95,25);
  myGLCD.printNumI(supplyVoltage,40,35);           myGLCD.print("Volt",95,35);
  myGLCD.printNumI(fuelConsumption,40,45);         myGLCD.print("l/h",95,45);
  myGLCD.printNumI(odometer,40,55);                myGLCD.print("km",95,55);
  myGLCD.printNumI(TurboPressure,40,65);
  myGLCD.printNumI(Turbocharger_valve,40,75);
  myGLCD.printNumI(EGR_duty,40,85);
  myGLCD.printNumI(EGR_Consumption,40,95);
  myGLCD.printNumI(EGR_Consumption_target,40,105);
  myGLCD.printNumI(vehicleSpeed,40,115);           myGLCD.print("km/h",95,115);

 
/*Serial.println();
Serial.print ("engineSpeed:  "); Serial.println(engineSpeed);
Serial.print ("coolantTemp :  "); Serial.println(coolantTemp);
Serial.print ("oilTemp :  "); Serial.println(oilTemp);
Serial.print ("supplyVoltage :  "); Serial.println(supplyVoltage);
Serial.print ("fuelConsumption :  "); Serial.println(fuelConsumption);
Serial.print ("odometer :  "); Serial.println(odometer);
Serial.print ("TurboPressure :  "); Serial.println(TurboPressure);
Serial.print ("Turbocharger_valve  "); Serial.println(Turbocharger_valve);
Serial.print ("EGR_duty:  "); Serial.println(EGR_duty);
Serial.print ("EGR_Consumption:  "); Serial.println(TurboPressure);
Serial.print ("EGR_Consumption_target:  "); Serial.println(TurboPressure_target);

Serial.println(); */     
}




 

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

да, можно float

taha17
taha17 аватар
Offline
Зарегистрирован: 08.10.2017

Ок, понял. Значит идем дальше... беру всё что мне нужно(переменные, функции) и темы БК Опель Зафира и подгоняю под свой скетч??? Ну вы потом чуть-что подправите или напраите в нужню сторону ???

Ну и в целом, могу ли я сразу использовать ваши  готовые блоки кода в текущем  БК.

Две переменные  подправил на свои( fuelConsumption=LHor и odometer=kmAge) еще надо переменную о колличесве топлива в баку исправить. Только kmAge(пробег) в вашем скетче типа float. Скетч  скомпилился даже

float L100M = 0;           //расход на 100 км измеренный за поездку
float L100 = 0;            //мгновенный расход литров на 100км
/// fuelConsumption ////float LHor = 0;           //мгновенный расход топлива литров в час
float L100SR = 0;         //расход литров на 100км измеренный раз в интервал kmL  
float L100SR_TFT = 0;     // самый средний из расходов на 100км, он выводится на экран
  
int L100_Eeprom[11]= {10,10,10,10,10,10,10,10,10,10,10};
int FuelZamer[10]= {0};  // массив для измерения уровня (количества) топлива 
int ZamerNumber = 0;     // номер замера уровня (количества) топлива 
int n_eeprom = 0;        // текущий адрес ячейки еепром для записи расхода

//все что касается топлива
float Fuel = 0;  //остаток топлива 
float Fuel2 = 0;  //остаток мгновенного топлива байт 16 , датчика в баке
int FuelIGN = 0;      // количество топлвива в баке на момент включения зажигания
int Fuel_last = 0;   // для формул
bool flagFuelIGN = 0; // флаг записан ли остаток топлива в момент вкл. зажигания 
float FuelTrip = 0;     // количество литров топлива, израсходованное за один цикл включения зажигания
  
//все что касается километража
// odometer //float kmAge = 0;             //пробег, полученный со щитка приборов
int kmAgeIGN = 0;          //пробег который был в момент включения зажигания 
int kmAge_last = 0;       // для формул
bool flagkmAgeIGN = 0;     //флаг записан ли пробег в момент вкл. зажигания 
float kmTrip = 0;            //пробег за один цикл включения зажигания
int kmL = 10;               // интервал, через который будет происходить обновление среднего расхода на 100км
int km = 0;              // переменная для расчетов
int kmeeprom = 10;         // интервал, через который будет происходить подсчет среднеарифмитического расхода  L100SR_TFT
int kmTFT =  0;     // переменная для расчетов периодического подсчета среднеарифмитического расхода топлива L100SR_TFT
int kmREFUELING = 0;            // пробег до заправки на остатке топлива 

 

setup():

  //подсчет среднеарифметического усредненного расхода
  for (int i = 0; i < 11; i++) L100_Eeprom [i]= EEPROM.read(i);
  for (int i = 0; i < 11; i++) L100SR_TFT = L100SR_TFT +  L100_Eeprom [i];
  L100SR_TFT = (float)L100SR_TFT/110.0;
  if (L100SR_TFT<0) L100SR_TFT = 0;
  if (L100SR_TFT>99) L100SR_TFT = 99;

 

 

Ну и готовая функция Trip():

   void Trip() 
   {
  
  if (flagkmAgeIGN){

  FuelTrip = FuelIGN - Fuel;                          
   if (odometer>kmAgeIGN) kmTrip = odometer - kmAgeIGN;
   if (odometer<kmAgeIGN) kmTrip = 2000 - (kmAgeIGN - odometer);  // 2000 это через сколько км у тебя суточный пробег сбрасывается на ноль, поменяй если другое число
   if (odometer==kmAgeIGN) kmTrip = 0;
  
  //подсчет расхода на 100км за поездку
  L100M = ((float)FuelTrip*100.00)/(float)kmTrip;
   if (L100M<0) L100M = 0;
   if (L100M>99) L100M = 99;
 
  // ниже цикл считает среднеарифметический расход из еепром раз в пробег, указанный в переменной kmeeprom
   if (kmTrip-kmTFT>kmeeprom) {kmTFT = kmTrip; 

  // тут считаем среднеарифметический усредненного расход из ячеек еепром 
   for (int i = 0; i < 11; i++) L100_Eeprom [i]= EEPROM.read(i);
   for (int i = 0; i < 11; i++) L100SR_TFT = L100SR_TFT +  L100_Eeprom [i];
   L100SR_TFT = (float)L100SR_TFT/110.00;
   if (L100SR_TFT<0) L100SR_TFT = 0;
   if (L100SR_TFT>99) L100SR_TFT = 99;}
  
  // ниже цикл считает расход топлива за пробег, указанный в переменной kmL, здесь же запись в ячейки еепром 
   if (kmTrip-km>kmL) {km=kmTrip; 

  L100SR = ((float)(Fuel_last-Fuel)*100.00)/(float)kmL; // расход/100км  - обновляется раз в 10км, меняется км в int kmL = 10;
  Fuel_last = Fuel;      // сохранение параметров с последнего измерениея 
   if (L100SR<0) L100SR = 0;
   if (L100SR>99) L100SR = 99;
 
  //расчет остатка километров в баке, постоянно подстраеваемый под ваш стиль вождения
  if (L100SR>0) kmREFUELING=((float)Fuel*100.0)/(float)L100SR; //если средний расход больше нуля, то расчитывать км в баке из него
  else kmREFUELING=((float)Fuel*100.00)/(float)L100SR_TFT;    //если ноль или меньше то расчитывать км в баке с устредненного расхода
    //еще вариант расчета киломеров в баке от устредненного расхода L100SR_TFT, если он у вас уже вышел на стабильную цифру
  //kmREFUELING=((float)Fuel*100.0)/(float)L100SR_TFT;
    //еще вариант если вы знаете примерный средний расход за весь бак.  
  //kmREFUELING=((float)Fuel*100.0)/(float)6.7; //где 6.7 вош средний расход за бак
  
  // тут записываем  L100SR последовательно в одну из 11 ячеек еепром
  //EEPROM.write (12,n_eeprom);      // ЗДЕСЬ ВНИМАТЕЛЬНО. ЗАГРУЗИТЬ ПРОШИВКУ С ЭТОЙ СТРОКОЙ ОДИН РАЗ, ПОТОМ ЗАКОМЕНТИРОВАТЬ И ЕЩЁ РАЗ ЗАГРУЗИТЬ
  n_eeprom = EEPROM.read (12);    // в ячейке 12 хранится № текущей ячейки для записи расхода, чтобы где остановился при выкл питания, от туда и продолжил
  EEPROM.write(n_eeprom, L100SR*10); 
  n_eeprom++; if (n_eeprom>10) n_eeprom=0;
  EEPROM.write (12,n_eeprom); }}}
woodhousel
Offline
Зарегистрирован: 01.10.2017

Приветствую единомышленники, тоже ковыряю скетч немца Александра, выше на меня уже давалась ссылка на Drive 2, добиться коннекта и получить от ЭБУ идентификационные данные  я смог, но вот при запросе чтения информации с групп, у меня остановка, так как в ответе должно содержаться  Е7 – ответ на запрос параметров группы датчиков, а у меня на этом месте ЭБУ выдаёт 0x02 и дальше блок неприменимых к формулам расчёта байтов. вообще всё как в этой теме https://www.blafusel.de/phpbb/viewtopic.php?f=15&t=2415, есть какие идеи по  этому поводу?

З.Ы.ЭБУ коннектится только на скорости 1200.

SETUP
START
------connect addr=1 baud=1200
---KWP 5 baud init
bit0=0 startbit
bit1=1
bit2=0
bit3=0
bit4=0
bit5=0
bit6=0
bit7=0
bit8=0 parity
bit9=1 stopbit
---KWPReceive sz=3 blockCounter=0
ECU:55
ECU:1
ECU:8A
uC:75
IN: sz=3 data=55 1 8A 
------readconnectblocks
---KWPReceive sz=0 blockCounter=1
ECU:F
uC:F0
ECU:F
uC:F0
ECU:F6
uC:9
ECU:30
uC:CF
ECU:33
uC:CC
ECU:39
uC:C6
ECU:39
uC:C6
ECU:30
uC:CF
ECU:36
uC:C9
ECU:30
uC:CF
ECU:32
uC:CD
ECU:32
uC:CD
ECU:20
uC:DF
ECU:20
uC:DF
ECU:20
uC:DF
ECU:3
IN: sz=16 data=F F F6 30 33 39 39 30 36 30 32 32 20 20 20 3 
---KWPSendAckBlock blockCounter=2
---KWPSend sz=4 blockCounter=2
OUT:3 2 9 3 
uC:3
ECU:FC
uC:2
ECU:FD
uC:9
ECU:F6
uC:3
---KWPReceive sz=0 blockCounter=3
ECU:1B
uC:E4
ECU:3
uC:FC
ECU:F6
uC:9
ECU:44
uC:BB
ECU:49
uC:B6
ECU:47
uC:B8
ECU:49
uC:B6
ECU:46
uC:B9
ECU:41
uC:BE
ECU:4E
uC:B1
ECU:54
uC:AB
ECU:20
uC:DF
ECU:31
uC:CE
ECU:2E
uC:D1
ECU:36
uC:C9
ECU:20
uC:DF
ECU:20
uC:DF
ECU:20
uC:DF
ECU:20
uC:DF
ECU:20
uC:DF
ECU:20
uC:DF
ECU:20
uC:DF
ECU:20
uC:DF
ECU:31
uC:CE
ECU:32
uC:CD
ECU:34
uC:CB
ECU:33
uC:CC
ECU:3
IN: sz=28 data=1B 3 F6 44 49 47 49 46 41 4E 54 20 31 2E 36 20 20 20 20 20 20 20 20 31 32 34 33 3 
---KWPSendAckBlock blockCounter=4
---KWPSend sz=4 blockCounter=4
OUT:3 4 9 3 
uC:3
ECU:FC
uC:4
ECU:FB
uC:9
ECU:F6
uC:3
---KWPReceive sz=0 blockCounter=5
ECU:F
uC:F0
ECU:5
uC:FA
ECU:F6
uC:9
ECU:50
uC:AF
ECU:4D
uC:B2
ECU:43
uC:BC
ECU:20
uC:DF
ECU:31
uC:CE
ECU:31
uC:CE
ECU:20
uC:DF
ECU:20
uC:DF
ECU:20
uC:DF
ECU:20
uC:DF
ECU:20
uC:DF
ECU:20
uC:DF
ECU:3
IN: sz=16 data=F 5 F6 50 4D 43 20 31 31 20 20 20 20 20 20 3 
---KWPSendAckBlock blockCounter=6
---KWPSend sz=4 blockCounter=6
OUT:3 6 9 3 
uC:3
ECU:FC
uC:6
ECU:F9
uC:9
ECU:F6
uC:3
---KWPReceive sz=0 blockCounter=7
ECU:3
uC:FC
ECU:7
uC:F8
ECU:9
uC:F6
ECU:3
IN: sz=4 data=3 7 9 3 
label=039906022  DIGIFANT 1.6        124PMC 11     
------readSensors 3
---KWPSend sz=5 blockCounter=8
OUT:4 8 29 3 3 
uC:4
ECU:FB
uC:8
ECU:F7
uC:29
ECU:D6
uC:3
ECU:FC
uC:3
---KWPReceive sz=0 blockCounter=9
ECU:42
uC:BD
ECU:9
uC:F6
ECU:2
uC:FD
ECU:8C
uC:73
ECU:28
uC:D7
ECU:11
uC:EE
ECU:A0
uC:5F
ECU:64
uC:9B
ECU:50
uC:AF
ECU:44
uC:BB
ECU:3A
uC:C5
ECU:32
uC:CD
ECU:2C
uC:D3
ECU:26
uC:D9
ECU:21
uC:DE
ECU:1B
uC:E4
ECU:16
uC:E9
ECU:10
uC:EF
ECU:B
uC:F4
ECU:4
uC:FB
ECU:0
uC:FF
ECU:0
uC:FF
ECU:0
uC:FF
ECU:8B
uC:74
ECU:1A
uC:E5
ECU:11
uC:EE
ECU:FA
uC:5
ECU:E1
uC:1E
ECU:E0
uC:1F
ECU:BC
uC:43
ECU:AD
uC:52
ECU:96
uC:69
ECU:84
uC:7B
ECU:75
uC:8A
ECU:61
uC:9E
ECU:53
uC:AC
ECU:48
uC:B7
ECU:39
uC:C6
ECU:28
uC:D7
ECU:1F
uC:E0
ECU:19
uC:E6
ECU:12
uC:ED
ECU:0
uC:FF
ECU:8C
uC:73
ECU:28
uC:D7
ECU:11
uC:EE
ECU:A0
uC:5F
ECU:64
uC:9B
ECU:50
uC:AF
ECU:44
uC:BB
ECU:3A
uC:C5
ECU:32
uC:CD
ECU:2C
uC:D3
ECU:26
uC:D9
ECU:21
uC:DE
ECU:1B
uC:E4
ECU:16
uC:E9
ECU:10
uC:EF
ECU:B
uC:F4
ECU:4
uC:FB
ECU:0
uC:FF
ECU:0
uC:FF
ECU:0
uC:FF
ECU:85
uC:7A
ECU:18
uC:E7
ECU:0
uC:FF
ECU:3
IN: sz=67 data=42 9 2 8C 28 11 A0 64 50 44 3A 32 2C 26 21 1B 16 10 B 4 0 0 0 8B 1A 11 FA E1 E0 BC AD 96 84 75 61 53 48 39 28 1F 19 12 0 8C 28 11 A0 64 50 44 3A 32 2C 26 21 1B 16 10 B 4 0 0 0 85 18 0 3 
readConnectBlocks: got 02
count=21
type=140  a=40  b=17  text=
type=160  a=100  b=80  text=
type=68  a=58  b=50  text=2022.81 deg/s
type=44  a=38  b=33  text=38:33
type=27  a=22  b=16  text=24.64 °
type=11  a=4  b=0  text=0.95  
type=0  a=0  b=139  text=
type=26  a=17  b=250  text=233.00 C
type=225  a=224  b=188  text=
type=173  a=150  b=132  text=
type=117  a=97  b=83  text=
type=72  a=57  b=40  text=
type=31  a=25  b=18  text=0.00 °C
type=0  a=140  b=40  text=
type=17  a=160  b=100  text=
type=80  a=68  b=58  text=
type=50  a=44  b=38  text=-204.55 mbar
type=33  a=27  b=22  text=81.00 %%
type=16  a=11  b=4  text=
type=0  a=0  b=0  text=
type=133  a=32  b=48  text=
------readSensors 3
---KWPSend sz=5 blockCounter=10
OUT:4 A 29 3 3 
uC:4
ECU:FB
uC:A
ECU:F5
uC:29
ECU:D6
uC:3
ECU:FC
uC:3
---KWPReceive sz=0 blockCounter=11
ECU:7
uC:F8
ECU:B
uC:F4
ECU:F4
uC:B
ECU:FF
uC:0
ECU:FF
uC:0
ECU:FF
uC:0
ECU:89
uC:76
ECU:3
IN: sz=8 data=7 B F4 FF FF FF 89 3 
count=1
type=255  a=255  b=255  text=

 

taha17
taha17 аватар
Offline
Зарегистрирован: 08.10.2017

День добрый. Вам надо дождаться ответа MaksVV. У его опыт большой и шарит в этой тематике  больше )))

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

woodhousel пишет:

Приветствую единомышленники, тоже ковыряю скетч немца Александра, выше на меня уже давалась ссылка на Drive 2, добиться коннекта и получить от ЭБУ идентификационные данные  я смог, но вот при запросе чтения информации с групп, у меня остановка, так как в ответе должно содержаться  Е7 – ответ на запрос параметров группы датчиков, а у меня на этом месте ЭБУ выдаёт 0x02 и дальше блок неприменимых к формулам расчёта байтов. вообще всё как в этой теме https://www.blafusel.de/phpbb/viewtopic.php?f=15&t=2415, есть какие идеи по  этому поводу?

З.Ы.ЭБУ коннектится только на скорости 1200.

а диагностика типа VAGCOM или ВАСЯ диагност как себя ведёт? Если её нет, ответ дать будет непросто. Купите ваг ком адаптер на али, стоит недорого

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

taha17 , вы научились данные с блока нормально получать? Нужен пробег, остаток топлива, для функции Trip(). 

woodhousel
Offline
Зарегистрирован: 01.10.2017

Диагностику я приобрёл лет 10 назад, VAGCom читает группы как надо, тоже на скорости 1200. Лежит куча мозгов на столе, те что посвежее от AUDI A4B5, коннектится на ура на 9600, а также  читает группы. 

woodhousel
Offline
Зарегистрирован: 01.10.2017

Возможно проблема в библиотеке NEWSofrwareSerial, сами разработчики предупреждают

 ** Будьте осторожны в использовании 300 и 1200 бод. Обработчик прерываний с такой скоростью становится настолько длинным, что прерывания таймера могут быть истощены, в результате чего millis () перестает работать во время приема.

http://arduiniana.org/libraries/newsoftserial/

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

сделайте сниф обмена как в этой теме. посмотрим. Дак повесьте на хард

woodhousel
Offline
Зарегистрирован: 01.10.2017

Хорошо, после выходных сделаю

taha17
taha17 аватар
Offline
Зарегистрирован: 08.10.2017

В реализации поочеродного обращения к двум блокам нужна ваша помощь. Есть еще вопрос по переменным связанных с топливом:

float Fuel2 = 0;  //остаток мгновенного топлива байт 16 , датчика в баке. 

наверное не нужна вовсе. т.к. не используется 

int FuelIGN = 0;      // количество топлива в баке на момент включения зажигания

этот момент не совсем понятен. Запись в переменную идет как только подалось питание на ардуино и установилась связь с приборкой ???

По переменным  - всё готово. Все данные получены. Пробег(odometer),остаток топлива(fuelLevel), Потребление топлива л\ч (fuelConsumption)

Переменные в функции Trip(), заменил на свои.

 

#include <EEPROM.h>
#include <UTFT.h>                                      // подключаем библиотеку UTFT
extern uint8_t SmallFont[];                            // подключаем маленький шрифт
extern uint8_t BigFont[];                              // подключаем большой шрифт
extern uint8_t SevenSegNumFont[];                      // подключаем цифровой шрифт
UTFT myGLCD(ST7735, 11, 13, 10, 8, 9);


#include <Wire.h>
#include "NewSoftwareSerial.h"

#define pinKLineRX 5
#define pinKLineTX 6
#define pinLED 2
#define pinBuzzer 3
#define pinButton 4


#define ADR_Engine 0x01
#define ADR_Gears  0x02
#define ADR_ABS_Brakes 0x03
#define ADR_Airbag 0x15
#define ADR_Dashboard 0x17
#define ADR_Immobilizer 0x25
#define ADR_Central_locking 0x35

//#define DEBUG 1

//LiquidCrystal_I2C lcd(0x27,20,4);  // set the LCD address to 0x20 for a 16 chars and 2 line display
NewSoftwareSerial obd(pinKLineRX, pinKLineTX, false); // RX, TX, inverse logic

uint8_t currAddr = 0;
uint8_t blockCounter = 0;
uint8_t errorTimeout = 0;
uint8_t errorData = 0;
bool connected = false;
int sensorCounter = 0;
int pageUpdateCounter = 0;
int alarmCounter = 0;

uint8_t currPage = 2; //************************

int8_t coolantTemp = 0;     //Температурв ОЖ                      1-1-3 /1-7-3/17-2-1         /////0-1-2-3
int8_t oilTemp = 0;         //Температура  Масла                  17-50-2
int8_t intakeAirTemp = 0;   //Температура всасываемого воздуха    1-7-2
int8_t oilPressure = 0;     //Давление масла
float engineLoad = 0;       //Нагрузка двигателя                  1-2-1
int   engineSpeed = 0;      //Обороты двигателя                   1-1-0/17-1-2/
float throttleValve = 0;    //Дрорссельная заслонка(клапан)
float supplyVoltage = 0;    //Напряжение питания (аккума)         1-16-3
uint8_t vehicleSpeed = 0;   //Скорость автомобиля                 1-6-0/17-1-1
float fuelConsumption = 0;  //Потребление топлива                 1-15-2 л/ч
uint8_t fuelLevel = 0;      //Уровень топлива                     17-3-0
unsigned long odometer = 0; // Одометр                            17-2-0
//ДМРВ 1-10-0
//Температура масла 29 группа... посмотреть

// наши параметры
int TurboPressure = 0;
int TurboPressure_target = 0;
uint8_t Turbocharger_valve = 0;
uint8_t EGR_duty = 0;
int EGR_Consumption = 0;
int EGR_Consumption_target = 0;
//**************************************************************************************************************************
float L100M = 0;           //расход на 100 км измеренный за поездку
float L100 = 0;            //мгновенный расход литров на 100км
/// fuelConsumption ////float LHor = 0;           //мгновенный расход топлива литров в час
float L100SR = 0;         //расход литров на 100км измеренный раз в интервал kmL  
float L100SR_TFT = 0;     // самый средний из расходов на 100км, он выводится на экран
  
int L100_Eeprom[11]= {10,10,10,10,10,10,10,10,10,10,10};
int FuelZamer[10]= {0};  // массив для измерения уровня (количества) топлива 
int ZamerNumber = 0;     // номер замера уровня (количества) топлива 
int n_eeprom = 0;        // текущий адрес ячейки еепром для записи расхода

//все что касается топлива
/// fuelLevel///float Fuel = 0;  //остаток топлива 
float Fuel2 = 0;  //остаток мгновенного топлива байт 16 , датчика в баке
int FuelIGN = 0;      // количество топлива в баке на момент включения зажигания
int Fuel_last = 0;   // для формул
bool flagFuelIGN = 0; // флаг записан ли остаток топлива в момент вкл. зажигания 
float FuelTrip = 0;     // количество литров топлива, израсходованное за один цикл включения зажигания
  
//все что касается километража
// odometer //float kmAge = 0;             //пробег, полученный со щитка приборов
int kmAgeIGN = 0;          //пробег который был в момент включения зажигания 
int kmAge_last = 0;       // для формул
bool flagkmAgeIGN = 0;     //флаг записан ли пробег в момент вкл. зажигания 
float kmTrip = 0;            //пробег за один цикл включения зажигания
int kmL = 10;               // интервал, через который будет происходить обновление среднего расхода на 100км
int km = 0;              // переменная для расчетов
int kmeeprom = 10;         // интервал, через который будет происходить подсчет среднеарифмитического расхода  L100SR_TFT
int kmTFT =  0;     // переменная для расчетов периодического подсчета среднеарифмитического расхода топлива L100SR_TFT
int kmREFUELING = 0;            // пробег до заправки на остатке топлива 

//*******************************************************************************************************************************
String floatToString(float v){
  String res; 
  char buf[16];      
  dtostrf(v,4, 2, buf); 
  res=String(buf);
  return res;
}

void disconnect(){
  connected = false;
  currAddr = 0;
}


void obdWrite(uint8_t data){
#ifdef DEBUG
  Serial.print("uC:");
  Serial.println(data, HEX);
#endif
  obd.write(data);
}

uint8_t obdRead(){
  unsigned long timeout = millis() + 1000;  
  while (!obd.available()){
    if (millis() >= timeout) {
      Serial.println(F("ERROR: obdRead timeout"));
      disconnect();      
      errorTimeout++;
      return 0;
    }
  }
  uint8_t data = obd.read();
#ifdef DEBUG  
  Serial.print("ECU:");
  Serial.println(data, HEX);
#endif  
  return data;
}

// 5Bd, 7O1
void send5baud(uint8_t data){
  // // 1 start bit, 7 data bits, 1 parity, 1 stop bit
  #define bitcount 10
  byte bits[bitcount];
  byte even=1;
  byte bit;
  for (int i=0; i < bitcount; i++){
    bit=0;
    if (i == 0)  bit = 0;
      else if (i == 8) bit = even; // computes parity bit
      else if (i == 9) bit = 1;
      else {
        bit = (byte) ((data & (1 << (i-1))) != 0);
        even = even ^ bit;
      }
    Serial.print(F("bit"));      
    Serial.print(i);          
    Serial.print(F("="));              
    Serial.print(bit);
    if (i == 0) Serial.print(F(" startbit"));
      else if (i == 8) Serial.print(F(" parity"));    
      else if (i == 9) Serial.print(F(" stopbit"));              
    Serial.println();      
    bits[i]=bit;
  }
  // now send bit stream    
  for (int i=0; i < bitcount+1; i++){
    if (i != 0){
      // wait 200 ms (=5 baud), adjusted by latency correction
      delay(200);
      if (i == bitcount) break;
    }
    if (bits[i] == 1){ 
      // high
      digitalWrite(pinKLineTX, HIGH);
    } else {
      // low
      digitalWrite(pinKLineTX, LOW);
    }
  }
  obd.flush();
}


bool KWP5BaudInit(uint8_t addr){
  Serial.println(F("---KWP 5 baud init"));
  //delay(3000);
  send5baud(addr);
  return true;
}


bool KWPSendBlock(char *s, int size){
  Serial.print(F("---KWPSend sz="));
  Serial.print(size);
  Serial.print(F(" blockCounter="));
  Serial.println(blockCounter);    
  // show data
  Serial.print(F("OUT:"));
  for (int i=0; i < size; i++){    
    uint8_t data = s[i];
    Serial.print(data, HEX);
    Serial.print(" ");    
  }  
  Serial.println();
  for (int i=0; i < size; i++){
    uint8_t data = s[i];    
    obdWrite(data);
    
    if (i < size-1){
      uint8_t complement = obdRead();        
      if (complement != (data ^ 0xFF)){
        Serial.println(F("ERROR: invalid complement"));
        disconnect();
        errorData++;
        return false;
      }
    }
  }
  blockCounter++;
  return true;
}


bool KWPReceiveBlock(char s[], int maxsize, int &size){  
  bool ackeachbyte = false;
  uint8_t data = 0;
  int recvcount = 0;
  if (size == 0) ackeachbyte = true;
  Serial.print(F("---KWPReceive sz="));
  Serial.print(size);
  Serial.print(F(" blockCounter="));
  Serial.println(blockCounter);
  if (size > maxsize) {
    Serial.println("ERROR: invalid maxsize");
    return false;
  }  
  unsigned long timeout = millis() + 1000;  
  while ((recvcount == 0) || (recvcount != size)) {
    while (obd.available()){      
      data = obdRead();
      s[recvcount] = data;    
      recvcount++;      
      if ((size == 0) && (recvcount == 1)) {
        size = data + 1;
        if (size > maxsize) {
          Serial.println("ERROR: invalid maxsize");
          return false;
        }  
      }
      if ((ackeachbyte) && (recvcount == 2)) {
        if (data != blockCounter){
          Serial.println(F("ERROR: invalid blockCounter"));
          disconnect();
          errorData++;
          return false;
        }
      }
      if ( ((!ackeachbyte) && (recvcount == size)) ||  ((ackeachbyte) && (recvcount < size)) ){
        obdWrite(data ^ 0xFF);  // send complement ack        
         }
      timeout = millis() + 1000;        
    } 
    if (millis() >= timeout){
      Serial.println(F("ERROR: timeout"));
      disconnect();
      errorTimeout++;
      return false;
    }
  }
  // show data
  Serial.print(F("IN: sz="));  
  Serial.print(size);  
  Serial.print(F(" data="));  
  for (int i=0; i < size; i++){
    uint8_t data = s[i];
    Serial.print(data, HEX);
    Serial.print(F(" "));    
  }  
  Serial.println();
  blockCounter++;
  return true;
}

bool KWPSendAckBlock(){
  Serial.print(F("---KWPSendAckBlock blockCounter="));
  Serial.println(blockCounter);  
  char buf[32];  
  sprintf(buf, "\x03%c\x09\x03", blockCounter);  
  return (KWPSendBlock(buf, 4));
}

bool connect(uint8_t addr, int baudrate){  
  Serial.print(F("------connect addr="));
  Serial.print(addr);
  Serial.print(F(" baud="));  
  Serial.println(baudrate);  
  tone(pinBuzzer, 1200);    
  delay(100);
  noTone(pinBuzzer);  
  blockCounter = 0;  
  currAddr = 0;
  obd.begin(baudrate);       
  KWP5BaudInit(addr);
  char s[3];
  int size = 3;
  if (!KWPReceiveBlock(s, 3, size)) return false;
  if (    (((uint8_t)s[0]) != 0x55) 
     ||   (((uint8_t)s[1]) != 0x01) 
     ||   (((uint8_t)s[2]) != 0x8A)   ){
    Serial.println(F("ERROR: invalid magic"));
    disconnect();
    errorData++;
    return false;
  }
  currAddr = addr;
  connected = true;  
  if (!readConnectBlocks()) return false;
  return true;
}
  
bool readConnectBlocks(){  
  // read connect blocks
  Serial.println(F("------readconnectblocks"));
  String info;  
  while (true){
    int size = 0;
    char s[64];
    if (!(KWPReceiveBlock(s, 64, size))) return false;
    if (size == 0) return false;
    if (s[2] == '\x09') break; 
    if (s[2] != '\xF6') {
      Serial.println(F("ERROR: unexpected answer"));
      disconnect();
      errorData++;
      return false;
    }
    String text = String(s);
    info += text.substring(3, size-2);
    if (!KWPSendAckBlock()) return false;
  }
  Serial.print("label=");
  Serial.println(info);
  return true;
}

bool readSensors(int group){
  Serial.print(F("------readSensors "));
  Serial.println(group);
//  lcdPrint(0,0, F("KW1281 sensor"), 20);  
  char s[64];
  sprintf(s, "\x04%c\x29%c\x03", blockCounter, group);
  if (!KWPSendBlock(s, 5)) return false;
  int size = 0;
  KWPReceiveBlock(s, 64, size);
  if (s[2] != '\xe7') {
    Serial.println(F("ERROR: invalid answer"));
    disconnect();
    errorData++;
    return false;
  }
  int count = (size-4) / 3;
  Serial.print(F("count="));
  Serial.println(count);
  for (int idx=0; idx < count; idx++){
    byte k=s[3 + idx*3];
    byte a=s[3 + idx*3+1];
    byte b=s[3 + idx*3+2];
    String n;
    float v = 0;
    Serial.print(F("type="));
    Serial.print(k);
    Serial.print(F("  a="));
    Serial.print(a);
    Serial.print(F("  b="));
    Serial.print(b);
    Serial.print(F("  text="));
    String t = "";
    String units = "";
    char buf[32];    
    switch (k){
      case 1:  v=0.2*a*b;             units=F("rpm"); break;
      case 2:  v=a*0.002*b;           units=F("%%"); break;
      case 3:  v=0.002*a*b;           units=F("Deg"); break;
      case 4:  v=abs(b-127)*0.01*a;   units=F("ATDC"); break;
      case 5:  v=a*(b-100)*0.1;       units=F("°C");break;
      case 6:  v=0.001*a*b;           units=F("V");break;
      case 7:  v=0.01*a*b;            units=F("km/h");break;
      case 8:  v=0.1*a*b;             units=F(" ");break;
      case 9:  v=(b-127)*0.02*a;      units=F("Deg");break;
      case 10: if (b == 0) t=F("COLD"); else t=F("WARM");break;
      case 11: v=0.0001*a*(b-128)+1;  units = F(" ");break;
      case 12: v=0.001*a*b;           units =F("Ohm");break;
      case 13: v=(b-127)*0.001*a;     units =F("mm");break;
      case 14: v=0.005*a*b;           units=F("bar");break;
      case 15: v=0.01*a*b;            units=F("ms");break;
      case 18: v=0.04*a*b;            units=F("mbar");break;
      case 19: v=a*b*0.01;            units=F("l");break;
      case 20: v=a*(b-128)/128;       units=F("%%");break;
      case 21: v=0.001*a*b;           units=F("V");break;
      case 22: v=0.001*a*b;           units=F("ms");break;
      case 23: v=b/256*a;             units=F("%%");break;
      case 24: v=0.001*a*b;           units=F("A");break;
      case 25: v=(b*1.421)+(a/182);   units=F("g/s");break;
      case 26: v=float(b-a);          units=F("C");break;
      case 27: v=abs(b-128)*0.01*a;   units=F("°");break;
      case 28: v=float(b-a);          units=F(" ");break;
      case 30: v=b/12*a;              units=F("Deg k/w");break;
      case 31: v=b/2560*a;            units=F("°C");break;
      case 33: v=100*b/a;             units=F("%%");break;
      case 34: v=(b-128)*0.01*a;      units=F("kW");break;
      case 35: v=0.01*a*b;            units=F("l/h");break;
      case 36: v=((unsigned long)a)*2560+((unsigned long)b)*10;  units=F("km");break;
      case 37: v=b; break; // oil pressure ?!
      // ADP: FIXME!
      /*case 37: switch(b){
             case 0: sprintf(buf, F("ADP OK (%d,%d)"), a,b); t=String(buf); break;
             case 1: sprintf(buf, F("ADP RUN (%d,%d)"), a,b); t=String(buf); break;
             case 0x10: sprintf(buf, F("ADP ERR (%d,%d)"), a,b); t=String(buf); break;
             default: sprintf(buf, F("ADP (%d,%d)"), a,b); t=String(buf); break;
          }*/
      case 38: v=(b-128)*0.001*a;        units=F("Deg k/w"); break;
      case 39: v=b/256*a;                units=F("mg/h"); break;
      case 40: v=b*0.1+(25.5*a)-400;     units=F("A"); break;
      case 41: v=b+a*255;                units=F("Ah"); break;
      case 42: v=b*0.1+(25.5*a)-400;     units=F("Kw"); break;
      case 43: v=b*0.1+(25.5*a);         units=F("V"); break;
      case 44: sprintf(buf, "%2d:%2d", a,b); t=String(buf); break;
      case 45: v=0.1*a*b/100;            units=F(" "); break;
      case 46: v=(a*b-3200)*0.0027;      units=F("Deg k/w"); break;
      case 47: v=(b-128)*a;              units=F("ms"); break;
      case 48: v=b+a*255;                units=F(" "); break;
      case 49: v=(b/4)*a*0.1;            units=F("mg/h"); break;
      case 50: v=(b-128)/(0.01*a);       units=F("mbar"); break;
      case 51: v=((b-128)/255)*a;        units=F("mg/h"); break;
      case 52: v=b*0.02*a-a;             units=F("Nm"); break;
      case 53: v=(b-128)*1.4222+0.006*a;  units=F("g/s"); break;
      case 54: v=a*256+b;                units=F("count"); break;
      case 55: v=a*b/200;                units=F("s"); break;
      case 56: v=a*256+b;                units=F("WSC"); break;
      case 57: v=a*256+b+65536;          units=F("WSC"); break;
      case 59: v=(a*256+b)/32768;        units=F("g/s"); break;
      case 60: v=(a*256+b)*0.01;         units=F("sec"); break;
      case 62: v=0.256*a*b;              units=F("S"); break;
      case 64: v=float(a+b);             units=F("Ohm"); break;
      case 65: v=0.01*a*(b-127);         units=F("mm"); break;
      case 66: v=(a*b)/511.12;          units=F("V"); break;
      case 67: v=(640*a)+b*2.5;         units=F("Deg"); break;
      case 68: v=(256*a+b)/7.365;       units=F("deg/s");break;
      case 69: v=(256*a +b)*0.3254;     units=F("Bar");break;
      case 70: v=(256*a +b)*0.192;      units=F("m/s^2");break;
      default: sprintf(buf, "%2x, %2x      ", a, b); break;
    }
    
    switch (currAddr){
        case ADR_Engine: 
        switch(group){
          case 1: 
            switch (idx){  
              case 3: coolantTemp =v; break; //Температура ОЖ
            } 
            break;
           case 2: 
            switch (idx){  
              case 1: engineLoad =v; break; //Нагрузка двигателя
            } 
            break;
          case 3: 
            switch (idx){

              case 0: engineSpeed = v; break;
              case 1: EGR_Consumption_target =v; break;
              case 2: EGR_Consumption=v; break;
              case 3: EGR_duty=v; break;
            }              
            break;
            case 6: 
            switch (idx){
              case 0: vehicleSpeed =v; break; //Скорость
            } 
            break;
           case 7: 
            switch (idx){
              case 2: intakeAirTemp =v; break; //Температура всасываемого воздуха
              case 3: coolantTemp =v; break; //Температура ОЖ
            } 
            break;
          case 11: 
            switch (idx){
              case 0: engineSpeed = v; break;
              case 1: TurboPressure_target =v; break;
              case 2: TurboPressure =v; break;
              case 3: Turbocharger_valve=v; break;
            }              
            break;
          case 15: 
            switch (idx){  
              case 2: fuelConsumption =v; break; //Расход топлива л/ч
            } 
            break;
            case 16: 
            switch (idx){              

              case 3: supplyVoltage =v; break; //Аккум

            }              
            break;
        }
        break;
      case ADR_Dashboard: 
        switch (group){ 
          case 1:  
            switch (idx){
              case 1: vehicleSpeed = v; break;      //Скорость
              case 2: engineSpeed = v; break;      //Обороты двигателя
             // case 3: fuelConsumption =v; break;   //Расход топлива л/ч !!! в приборке не меняется
                        
            }
            break;
          case 2:
            switch (idx){
              case 0: odometer = v; break;    //Пробег
              //case 1:  = v; break;  // ?????  Температура топлива
                
            }
            break;
            case 3:
            switch (idx){
              case 0: fuelLevel = v; break;   // Топлива в баку (литр)    
                     
            }
            break;
          case 50:
            switch (idx){
            // case 0: odometer = v; break;  //Пробег
            // case 1: engineSpeed = v; break; //Обороты двигателя
             case 2: oilTemp = v; break;
            }
            break;
        }
        break;
    }
    if (units.length() != 0){
      dtostrf(v,4, 2, buf); 
      t=String(buf) + " " + units;
    }          
    Serial.println(t);
    
    //lcd.setCursor(0, idx);      
    //while (t.length() < 20) t += " ";
    //lcd.print(t);//      
  }
  sensorCounter++;
  return true;
}

void alarm(){
  if (alarmCounter > 10) return;
  tone(pinBuzzer, 1200);    
  delay(100);
  noTone(pinBuzzer);   
  alarmCounter++;
}
void setup(){      
  myGLCD.InitLCD(PORTRAIT);                                    // инициируем дисплей (в качестве параметра данной функции можно указать ориентацию дисплея: PORTRAIT или LANDSCAPE), по умолчанию LANDSCAPE - горизонтальная ориентация
  myGLCD.clrScr();  
   
  pinMode(pinKLineTX, OUTPUT);  
  digitalWrite(pinKLineTX, HIGH);  
  
  pinMode(pinButton, INPUT);  
  pinMode(pinButton, INPUT_PULLUP);  
  
  pinMode(pinBuzzer, OUTPUT);
  /*tone(pinBuzzer, 1200);    
  delay(100);
  noTone(pinBuzzer);*/
  
  Serial.begin(19200);  
  Serial.println(F("SETUP"));            
        
  Serial.println(F("START"));   

  //подсчет среднеарифметического усредненного расхода
  for (int i = 0; i < 11; i++) L100_Eeprom [i]= EEPROM.read(i);
  for (int i = 0; i < 11; i++) L100SR_TFT = L100SR_TFT +  L100_Eeprom [i];
  L100SR_TFT = (float)L100SR_TFT/110.0;
  if (L100SR_TFT<0) L100SR_TFT = 0;
  if (L100SR_TFT>99) L100SR_TFT = 99;
}


void loop(){    
  
  if (digitalRead(pinButton) == LOW){    
    currPage++;
    if (currPage > 2) currPage = 1;
    
    errorTimeout = 0;
    errorData = 0;            
    while (digitalRead(pinButton) == LOW);        
  }

  switch (currPage){
    case 1:      
      if (currAddr != ADR_Dashboard){        
        connect(ADR_Dashboard, 9600);
      } else  {
        readSensors(1);
        readSensors(2);
        readSensors(3);
        readSensors(50);        
      }            
      break;
    case 2:       
       if (currAddr != ADR_Engine) {
        connect(ADR_Engine, 9600);
      } else {
        readSensors(1);
        readSensors(2);
        readSensors(3);
        readSensors(6);
        readSensors(7);
        readSensors(11);
        readSensors(15);
        readSensors(16);
      }    
      break;
      
  }   
   
  
/*
  myGLCD.setFont(BigFont);                           // устанавливаем большой шрифт
  myGLCD.setColor(VGA_WHITE);                          // устанавливаем цвет текста
  myGLCD.print("PR1:",LEFT, 3);
  myGLCD.print("PR2:",LEFT, 25); // выводим текст на дисплей
  myGLCD.print("PR3:", LEFT, 50);                // выводим текст на дисплей
  myGLCD.print("PR4:", LEFT, 75);             // выводим текст на дисплей
  myGLCD.print("PR5:", LEFT, 100);             // выводим текст на дисплей  

  myGLCD.setColor(VGA_WHITE);  
  myGLCD.setFont(BigFont);    
  myGLCD.printNumI(engineSpeed,60,3);
    
  myGLCD.setColor(VGA_WHITE);  
  myGLCD.setFont(BigFont);    
  myGLCD.printNumI(TurboPressure,60,25);

  myGLCD.setColor(VGA_WHITE);  
  myGLCD.setFont(BigFont);    
  myGLCD.printNumI(Turbocharger_valve,60,50);

  myGLCD.setColor(VGA_WHITE);  
  myGLCD.setFont(BigFont);    
  myGLCD.printNumI(EGR_duty,60,75);

  myGLCD.setColor(VGA_WHITE);  
  myGLCD.setFont(BigFont);    
  myGLCD.printNumI(EGR_Consumption,60,100);
*/

  myGLCD.setFont(SmallFont);                           // устанавливаем маленький шрифт
  myGLCD.setColor(VGA_WHITE);                          // устанавливаем цвет текста
  myGLCD.print(" PR1:",LEFT, 3);
  myGLCD.print(" PR2:",LEFT, 13); 
  myGLCD.print(" PR3:", LEFT, 23);                // выводим текст на дисплей
  myGLCD.print(" PR4:", LEFT, 33);             
  myGLCD.print(" PR5:", LEFT, 43);             
  myGLCD.print(" PR6:", LEFT, 53);             
  myGLCD.print(" PR7:", LEFT, 63);              
  myGLCD.print(" PR8:", LEFT, 73);             
  myGLCD.print(" PR9:", LEFT, 83);   
  myGLCD.print(" R10:", LEFT, 93);
  myGLCD.print(" R11:", LEFT, 103);
  myGLCD.print(" R12:", LEFT, 113);
 

  myGLCD.printNumI(engineSpeed,40,5);              myGLCD.print("rpm",95,5);
  myGLCD.printNumI(coolantTemp,40,15);             myGLCD.print("C",95,15);
  myGLCD.printNumI(oilTemp,40,25);                 myGLCD.print("oilC",95,25);
  myGLCD.printNumI(supplyVoltage,40,35);           myGLCD.print("Volt",95,35);
  myGLCD.printNumI(fuelConsumption,40,45);         myGLCD.print("l/h",95,45);
  myGLCD.printNumI(odometer,40,55);                myGLCD.print("km",95,55);
  myGLCD.printNumI(TurboPressure,40,65);
  myGLCD.printNumI(Turbocharger_valve,40,75);
  myGLCD.printNumI(EGR_duty,40,85);
  myGLCD.printNumI(EGR_Consumption,40,95);
  myGLCD.printNumI(EGR_Consumption_target,40,105);
  myGLCD.printNumI(vehicleSpeed,40,115);           myGLCD.print("km/h",95,115);

 
/*Serial.println();
Serial.print ("engineSpeed:  "); Serial.println(engineSpeed);
Serial.print ("coolantTemp :  "); Serial.println(coolantTemp);
Serial.print ("oilTemp :  "); Serial.println(oilTemp);
Serial.print ("supplyVoltage :  "); Serial.println(supplyVoltage);
Serial.print ("fuelConsumption :  "); Serial.println(fuelConsumption);
Serial.print ("odometer :  "); Serial.println(odometer);
Serial.print ("TurboPressure :  "); Serial.println(TurboPressure);
Serial.print ("Turbocharger_valve  "); Serial.println(Turbocharger_valve);
Serial.print ("EGR_duty:  "); Serial.println(EGR_duty);
Serial.print ("EGR_Consumption:  "); Serial.println(TurboPressure);
Serial.print ("EGR_Consumption_target:  "); Serial.println(TurboPressure_target);

Serial.println(); */   


}


   void Trip() 
   {
  
  if (flagkmAgeIGN){

  FuelTrip = FuelIGN - fuelLevel;                          
   if (odometer>kmAgeIGN) kmTrip = odometer - kmAgeIGN;
   if (odometer<kmAgeIGN) kmTrip = 2000 - (kmAgeIGN - odometer);  // 2000 это через сколько км у тебя суточный пробег сбрасывается на ноль, поменяй если другое число
   if (odometer==kmAgeIGN) kmTrip = 0;
  
  //подсчет расхода на 100км за поездку
  L100M = ((float)FuelTrip*100.00)/(float)kmTrip;
   if (L100M<0) L100M = 0;
   if (L100M>99) L100M = 99;
 
  // ниже цикл считает среднеарифметический расход из еепром раз в пробег, указанный в переменной kmeeprom
   if (kmTrip-kmTFT>kmeeprom) {kmTFT = kmTrip; 

  // тут считаем среднеарифметический усредненного расход из ячеек еепром 
   for (int i = 0; i < 11; i++) L100_Eeprom [i]= EEPROM.read(i);
   for (int i = 0; i < 11; i++) L100SR_TFT = L100SR_TFT +  L100_Eeprom [i];
   L100SR_TFT = (float)L100SR_TFT/110.00;
   if (L100SR_TFT<0) L100SR_TFT = 0;
   if (L100SR_TFT>99) L100SR_TFT = 99;}
  
  // ниже цикл считает расход топлива за пробег, указанный в переменной kmL, здесь же запись в ячейки еепром 
   if (kmTrip-km>kmL) {km=kmTrip; 

  L100SR = ((float)(Fuel_last-fuelLevel)*100.00)/(float)kmL; // расход/100км  - обновляется раз в 10км, меняется км в int kmL = 10;
  Fuel_last = fuelLevel;      // сохранение параметров с последнего измерениея 
   if (L100SR<0) L100SR = 0;
   if (L100SR>99) L100SR = 99;
 
  //расчет остатка километров в баке, постоянно подстраеваемый под ваш стиль вождения
  if (L100SR>0) kmREFUELING=((float)fuelLevel*100.0)/(float)L100SR; //если средний расход больше нуля, то расчитывать км в баке из него
  else kmREFUELING=((float)fuelLevel*100.00)/(float)L100SR_TFT;    //если ноль или меньше то расчитывать км в баке с устредненного расхода
    //еще вариант расчета киломеров в баке от устредненного расхода L100SR_TFT, если он у вас уже вышел на стабильную цифру
  //kmREFUELING=((float)Fuel*100.0)/(float)L100SR_TFT;
    //еще вариант если вы знаете примерный средний расход за весь бак.  
  //kmREFUELING=((float)Fuel*100.0)/(float)6.7; //где 6.7 вош средний расход за бак
  
  // тут записываем  L100SR последовательно в одну из 11 ячеек еепром
  //EEPROM.write (12,n_eeprom);      // ЗДЕСЬ ВНИМАТЕЛЬНО. ЗАГРУЗИТЬ ПРОШИВКУ С ЭТОЙ СТРОКОЙ ОДИН РАЗ, ПОТОМ ЗАКОМЕНТИРОВАТЬ И ЕЩЁ РАЗ ЗАГРУЗИТЬ
  n_eeprom = EEPROM.read (12);    // в ячейке 12 хранится № текущей ячейки для записи расхода, чтобы где остановился при выкл питания, от туда и продолжил
  EEPROM.write(n_eeprom, L100SR*10); 
  n_eeprom++; if (n_eeprom>10) n_eeprom=0;
  EEPROM.write (12,n_eeprom); }}}




 

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

taha17 пишет:
int FuelIGN = 0;      // количество топлива в баке на момент включения зажигания

эта переменная записывается один раз при старте ардуины (включении зажигания), далее ставится флаг, что она уже записана и при следующих итерациях цикла программы эта переменная больше уже не трогается.

Тем самым мы можем, считая разницу между этой переменной и остатком в баке, знать сколько на данный момент времени потреблено топлива. Это нужно для расчета среднего расхода топлива, расхода в литрах за поездку. 

Также поступается и с километражом. Записывается на момент вкл зажигания и далее сравнивается с одометром, тем самым выясняется сколько проехали с момента включения зажигания. 

woodhousel
Offline
Зарегистрирован: 01.10.2017


Вот логи с ардуины

   0x0D0 20 62 6C 6F 63 6B 43 6F 75 6E 74 65 72 3D 31 0D   blockCounter=1. 
   0x0E0 0A 4F 55 54 3A 34 20 F1 53 45 54 55 50 0D 0A 53  .OUT:4 сSETUP..S 
   0x0F0 54 41 52 54 0D 0A 2D 2D 2D 2D 2D 2D 63 6F 6E 6E  TART..------conn 
   0x100 65 63 74 20 61 64 64 72 3D 31 20 62 61 75 64 3D  ect addr=1 baud= 
   0x110 31 32 30 30 0D 0A 2D 2D 2D 4B 57 50 20 35 20 62  1200..---KWP 5 b 
   0x120 61 75 64 20 69 6E 69 74 0D 0A 62 69 74 30 3D 30  aud init..bit0=0 
   0x130 20 73 74 61 72 74 62 69 74 0D 0A 62 69 74 31 3D   startbit..bit1= 
   0x140 31 0D 0A 62 69 74 32 3D 30 0D 0A 62 69 74 33 3D  1..bit2=0..bit3= 
   0x150 30 0D 0A 62 69 74 34 3D 30 0D 0A 62 69 74 35 3D  0..bit4=0..bit5= 
   0x160 30 0D 0A 62 69 74 36 3D 30 0D 0A 62 69 74 37 3D  0..bit6=0..bit7= 
   0x170 30 0D 0A 62 69 74 38 3D 30 20 70 61 72 69 74 79  0..bit8=0 parity 
   0x180 0D 0A 62 69 74 39 3D 31 20 73 74 6F 70 62 69 74  ..bit9=1 stopbit 
   0x190 0D 0A 2D 2D 2D 4B 57 50 52 65 63 65 69 76 65 20  ..---KWPReceive  
   0x1A0 73 7A 3D 33 20 62 6C 6F 63 6B 43 6F 75 6E 74 65  sz=3 blockCounte 
   0x1B0 72 3D 30 0D 0A 49 4E 3A 20 73 7A 3D 33 20 64 61  r=0..IN: sz=3 da 
   0x1C0 74 61 3D 35 35 20 31 20 38 41 20 0D 0A 2D 2D 2D  ta=55 1 8A ..--- 
   0x1D0 2D 2D 2D 72 65 61 64 63 6F 6E 6E 65 63 74 62 6C  ---readconnectbl 
   0x1E0 6F 63 6B 73 0D 0A 2D 2D 2D 4B 57 50 52 65 63 65  ocks..---KWPRece 
   0x1F0 69 76 65 20 73 7A 3D 30 20 62 6C 6F 63 6B 43 6F  ive sz=0 blockCo 
   0x200 75 6E 74 65 72 3D 31 0D 0A 45 52 52 4F 52 3A 20  unter=1..ERROR:  
   0x210 69 6E 76 61 6C 69 64 20 62 6C 6F 63 6B 43 6F 75  invalid blockCou 
   0x220 6E 74 65 72 0D 0A 31 0D 0A 32 0D 0A 31 0D 0A 49  nter..1..2..1..I 
   0x230 4E 3A 20 73 7A 3D 31 36 20 64 61 74 61 3D 46 20  N: sz=16 data=F  
   0x240 46 43 20 46 36 20 33 30 20 33 33 20 33 39 20 33  FC F6 30 33 39 3 
   0x250 39 20 33 30 20 33 36 20 33 30 20 33 32 20 33 32  9 30 36 30 32 32 
   0x260 20 32 30 20 32 30 20 32 30 20 33 20 0D 0A 2D 2D   20 20 20 3 ..-- 
   0x270 2D 4B 57 50 53 65 6E 64 41 63 6B 42 6C 6F 63 6B  -KWPSendAckBlock 
   0x280 20 62 6C 6F 63 6B 43 6F 75 6E 74 65 72 3D 32 0D   blockCounter=2. 
   0x290 0A 2D 2D 2D 4B 57 50 53 65 6E 64 20 73 7A 3D 34  .---KWPSend sz=4 
   0x2A0 20 62 6C 6F 63 6B 43 6F 75 6E 74 65 72 3D 32 0D   blockCounter=2. 
   0x2B0 0A 4F 55 54 3A 33 20 32 20 39 20 33 20 0D 0A 2D  .OUT:3 2 9 3 ..- 
   0x2C0 2D 2D 4B 57 50 52 65 63 65 69 76 65 20 73 7A 3D  --KWPReceive sz= 
   0x2D0 30 20 62 6C 6F 63 6B 43 6F 75 6E 74 65 72 3D 33  0 blockCounter=3 
   0x2E0 0D 0A 49 4E 3A 20 73 7A 3D 32 38 20 64 61 74 61  ..IN: sz=28 data 
   0x2F0 3D 31 42 20 33 20 46 36 20 34 34 20 34 39 20 34  =1B 3 F6 44 49 4 
   0x300 37 20 34 39 20 34 36 20 34 31 20 34 45 20 35 34  7 49 46 41 4E 54 
   0x310 20 32 30 20 33 31 20 32 45 20 33 36 20 32 30 20   20 31 2E 36 20  
   0x320 32 30 20 32 30 20 32 30 20 32 30 20 32 30 20 32  20 20 20 20 20 2 
   0x330 30 20 32 30 20 33 31 20 33 32 20 33 34 20 33 33  0 20 31 32 34 33 
   0x340 20 33 20 0D 0A 2D 2D 2D 4B 57 50 53 65 6E 64 41   3 ..---KWPSendA 
   0x350 63 6B 42 6C 6F 63 6B 20 62 6C 6F 63 6B 43 6F 75  ckBlock blockCou 
   0x360 6E 74 65 72 3D 34 0D 0A 2D 2D 2D 4B 57 50 53 65  nter=4..---KWPSe 
   0x370 6E 64 20 73 7A 3D 34 20 62 6C 6F 63 6B 43 6F 75  nd sz=4 blockCou 
   0x380 6E 74 65 72 3D 34 0D 0A 4F 55 54 3A 33 20 34 20  nter=4..OUT:3 4  
   0x390 39 20 33 20 0D 0A 2D 2D 2D 4B 57 50 52 65 63 65  9 3 ..---KWPRece 
   0x3A0 69 76 65 20 73 7A 3D 30 20 62 6C 6F 63 6B 43 6F  ive sz=0 blockCo 
   0x3B0 75 6E 74 65 72 3D 35 0D 0A 49 4E 3A 20 73 7A 3D  unter=5..IN: sz= 
   0x3C0 31 36 20 64 61 74 61 3D 46 20 35 20 46 36 20 35  16 data=F 5 F6 5 
   0x3D0 30 20 34 44 20 34 33 20 32 30 20 33 31 20 33 31  0 4D 43 20 31 31 
   0x3E0 20 32 30 20 32 30 20 32 30 20 32 30 20 32 30 20   20 20 20 20 20  
   0x3F0 32 30 20 33 20 0D 0A 2D 2D 2D 4B 57 50 53 65 6E  20 3 ..---KWPSen 
   0x400 64 41 63 6B 42 6C 6F 63 6B 20 62 6C 6F 63 6B 43  dAckBlock blockC 
   0x410 6F 75 6E 74 65 72 3D 36 0D 0A 2D 2D 2D 4B 57 50  ounter=6..---KWP 
   0x420 53 65 6E 64 20 73 7A 3D 34 20 62 6C 6F 63 6B 43  Send sz=4 blockC 
   0x430 6F 75 6E 74 65 72 3D 36 0D 0A 4F 55 54 3A 33 20  ounter=6..OUT:3  
   0x440 36 20 39 20 33 20 0D 0A 2D 2D 2D 4B 57 50 52 65  6 9 3 ..---KWPRe 
   0x450 63 65 69 76 65 20 73 7A 3D 30 20 62 6C 6F 63 6B  ceive sz=0 block 
   0x460 43 6F 75 6E 74 65 72 3D 37 0D 0A 49 4E 3A 20 73  Counter=7..IN: s 
   0x470 7A 3D 34 20 64 61 74 61 3D 33 20 37 20 39 20 33  z=4 data=3 7 9 3 
   0x480 20 0D 0A 6C 61 62 65 6C 3D 30 33 39 39 30 36 30   ..label=0399060 
   0x490 32 32 20 20 44 49 47 49 46 41 4E 54 20 31 2E 36  22  DIGIFANT 1.6 
   0x4A0 20 20 20 20 20 20 20 20 31 32 34 50 4D 43 20 31          124PMC 1 
   0x4B0 31 20 20 20 20 20 0D 0A 2D 2D 2D 2D 2D 2D 72 65  1     ..------re 
   0x4C0 61 64 53 65 6E 73 6F 72 73 20 34 0D 0A 2D 2D 2D  adSensors 4..--- 
   0x4D0 4B 57 50 53 65 6E 64 20 73 7A 3D 35 20 62 6C 6F  KWPSend sz=5 blo 
   0x4E0 63 6B 43 6F 75 6E 74 65 72 3D 38 0D 0A 4F 55 54  ckCounter=8..OUT 
   0x4F0 3A 34 20 38 20 32 39 20 34 20 33 20 0D 0A 2D 2D  :4 8 29 4 3 ..-- 
   0x500 2D 4B 57 50 52 65 63 65 69 76 65 20 73 7A 3D 30  -KWPReceive sz=0 
   0x510 20 62 6C 6F 63 6B 43 6F 75 6E 74 65 72 3D 39 0D   blockCounter=9. 
   0x520 0A 49 4E 3A 20 73 7A 3D 35 30 20 64 61 74 61 3D  .IN: sz=50 data= 
   0x530 33 31 20 39 20 32 20 38 43 20 32 38 20 31 31 20  31 9 2 8C 28 11  
   0x540 41 30 20 36 34 20 35 30 20 34 34 20 33 41 20 33  A0 64 50 44 3A 3 
   0x550 32 20 32 43 20 32 36 20 32 31 20 31 42 20 31 36  2 2C 26 21 1B 16 
   0x560 20 31 30 20 42 20 34 20 30 20 30 20 30 20 38 42   10 B 4 0 0 0 8B 
   0x570 20 31 41 20 31 31 20 46 41 20 45 31 20 45 30 20   1A 11 FA E1 E0  
   0x580 42 43 20 41 44 20 39 36 20 38 34 20 37 35 20 36  BC AD 96 84 75 6 
   0x590 31 20 35 33 20 34 38 20 33 39 20 32 38 20 31 46  1 53 48 39 28 1F 
   0x5A0 20 31 39 20 31 32 20 30 20 38 33 20 32 20 30 20   19 12 0 83 2 0  
   0x5B0 38 31 20 36 34 20 30 20 33 20 0D 0A 5F 5F 5F 5F  81 64 0 3 ..____ 
   0x5C0 32 5F 5F 5F 5F 5F 5F 32 72 65 61 64 43 6F 6E 6E  2______2readConn 
   0x5D0 65 63 74 42 6C 6F 63 6B 73 3A 20 67 6F 74 20 30  ectBlocks: got 0 
   0x5E0 32 0D 0A 2D 2D 2D 2D 2D 2D 72 65 61 64 53 65 6E  2..------readSen 
   0x5F0 73 6F 72 73 20 34 0D 0A 2D 2D 2D 4B 57 50 53 65  sors 4..---KWPSe 
   0x600 6E 64 20 73 7A 3D 35 20 62 6C 6F 63 6B 43 6F 75  nd sz=5 blockCou 
   0x610 6E 74 65 72 3D 31 30 0D 0A 4F 55 54 3A 34 20 41  nter=10..OUT:4 A 
   0x620 20 32 39 20 34 20 33 20 0D 0A 2D 2D 2D 4B 57 50   29 4 3 ..---KWP 
   0x630 52 65 63 65 69 76 65 20 73 7A 3D 30 20 62 6C 6F  Receive sz=0 blo 
   0x640 63 6B 43 6F 75 6E 74 65 72 3D 31 31 0D 0A 49 4E  ckCounter=11..IN 
   0x650 3A 20 73 7A 3D 38 20 64 61 74 61 3D 37 20 42 20  : sz=8 data=7 B  
   0x660 46 34 20 46 46 20 46 46 20 31 38 20 30 20 33 20  F4 FF FF 18 0 3  
   0x670 0D 0A 5F 5F 5F 5F 32 5F 5F 5F 5F 5F 5F 46 46 46  ..____2______FFF 
   0x680 46 46 46 46 34 63 6F 75 6E 74 3D 31 0D 0A 74 79  FFFF4count=1..ty 
   0x690 70 65 3D 32 35 35 20 20 61 3D 32 35 35 20 20 62  pe=255  a=255  b 
   0x6A0 3D 32 34 20 20 74 65 78 74 3D 0D 0A 2D 2D 2D 2D  =24  text=..---- 
   0x6B0 2D 2D 72 65 61 64 53 65 6E 73 6F 72 73 20 34 0D  --readSensors 4. 
   0x6C0 0A 2D 2D 2D 4B 57 50 53 65 6E 64 20 73 7A 3D 35  .---KWPSend sz=5 
   0x6D0 20 62 6C 6F 63 6B 43 6F 75 6E 74 65 72 3D 31 32   blockCounter=12 
   0x6E0 0D 0A 4F 55 54 3A 34 20 43 20 32 39 20 34 20 33  ..OUT:4 C 29 4 3 
   0x6F0 20 0D 0A 2D 2D 2D 4B 57 50 52 65 63 65 69 76 65   ..---KWPReceive 
   0x700 20 73 7A 3D 30 20 62 6C 6F 63 6B 43 6F 75 6E 74   sz=0 blockCount 
   0x710 65 72 3D 31 33 0D 0A 49 4E 3A 20 73 7A 3D 38 20  er=13..IN: sz=8  
   0x720 64 61 74 61 3D 37 20 44 20 46 34 20 46 46 20 46  data=7 D F4 FF F 
   0x730 46 20 31 38 20 30 20 33 20 0D 0A 5F 5F 5F 5F 32  F 18 0 3 ..____2 
   0x740 5F 5F 5F 5F 5F 5F 46 46 46 46 46 46 46 34 63 6F  ______FFFFFFF4co 
   0x750 75 6E 74 3D 31 0D 0A 74 79 70 65 3D 32 35 35 20  unt=1..type=255  
   0x760 20 61 3D 32 35 35 20 20 62 3D 32 34 20 20 74 65   a=255  b=24  te 
   0x770 78 74 3D 0D 0A 2D 2D 2D 2D 2D 2D 72 65 61 64 53  xt=..------readS 
   0x780 65 6E 73 6F 72 73 20 34 0D 0A 2D 2D 2D 4B 57 50  ensors 4..---KWP 
   0x790 53 65 6E 64 20 73 7A 3D 35 20 62 6C 6F 63 6B 43  Send sz=5 blockC 
   0x7A0 6F 75 6E 74 65 72 3D 31 34 0D 0A 4F 55 54 3A 34  ounter=14..OUT:4 
   0x7B0 20 45 20 32 39 20 34 20 33 20 0D 0A 2D 2D 2D 4B   E 29 4 3 ..---K 
   0x7C0 57 50 52 65 63 65 69 76 65 20 73 7A 3D 30 20 62  WPReceive sz=0 b 
   0x7D0 6C 6F 63 6B 43 6F 75 6E 74 65 72 3D 31 35 0D 0A  lockCounter=15.. 
   0x7E0 49 4E 3A 20 73 7A 3D 38 20 64 61 74 61 3D 37 20  IN: sz=8 data=7  
Итд.

 

 

 

woodhousel
Offline
Зарегистрирован: 01.10.2017

А вот логи с программы Monoscan отлично читает группы измерений

  0x0000 43 4F 4D 20 EE F2 EA F0 FB F2 20 D1 EA EE F0 EE  COM открыт Скоро 
  0x0010 F1 F2 FC 20 EF E5 F0 E5 E4 E0 F7 E8 20 31 32 30  сть передачи 120 
  0x0020 30 20 52 54 53 20 E2 FB EA EB FE F7 E5 ED 20 44  0 RTS выключен D 
  0x0030 54 52 20 E2 EA EB FE F7 E5 ED 20 C1 E8 F2 FB 20  TR включен Биты  
  0x0040 E4 E0 ED ED FB F5 3D 38 2C 20 D1 F2 EE EF EE E2  данных=8, Стопов 
  0x0050 FB E5 20 E1 E8 F2 FB 3D 31 2C 20 D7 E5 F2 ED EE  ые биты=1, Четно 
  0x0060 F1 F2 FC 3D 4E 6F 6E 65 20 D1 EB F3 E6 2E 20 F1  сть=None Служ. с 
  0x0070 E8 EC E2 EE EB FB 3A 20 45 6F 66 3D 30 78 30 30  имволы: Eof=0x00 
  0x0080 2C 20 45 72 72 6F 72 3D 30 78 30 30 2C 20 42 72  , Error=0x00, Br 
  0x0090 65 61 6B 3D 30 78 30 30 2C 20 45 76 65 6E 74 3D  eak=0x00, Event= 
  0x00A0 30 78 30 30 2C 20 58 6F 6E 3D 30 78 30 30 2C 20  0x00, Xon=0x00,  
  0x00B0 58 6F 66 66 3D 30 78 30 30 20 CA EE ED F2 F0 EE  Xoff=0x00 Контро 
  0x00C0 EB FC 20 EF E5 F0 E5 E4 E0 F7 E8 3A 20 43 6F 6E  ль передачи: Con 
  0x00D0 74 72 6F 6C 48 61 6E 64 53 68 61 6B 65 3D 28 44  trolHandShake=(D 
  0x00E0 54 52 5F 43 4F 4E 54 52 4F 4C 29 2C 20 C7 E0 EC  TR_CONTROL), Зам 
  0x00F0 E5 ED E0 3D 28 58 4F 46 46 5F 43 4F 4E 54 49 4E  ена=(XOFF_CONTIN 
  0x0100 55 45 29 2C 20 CB E8 EC E8 F2 20 58 6F 6E 3D 30  UE), Лимит Xon=0 
  0x0110 2C 20 CB E8 EC E8 F2 20 58 6F 66 66 3D 30 20 D2  , Лимит Xoff=0 Т 
  0x0120 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74  аймауты: ReadInt 
  0x0130 65 72 76 61 6C 3D 30 2C 20 52 65 61 64 54 6F 74  erval=0, ReadTot 
  0x0140 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C  alTimeoutMultipl 
  0x0150 69 65 72 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C  ier=0, ReadTotal 
  0x0160 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D  TimeoutConstant= 
  0x0170 30 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D  0, WriteTotalTim 
  0x0180 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30  eoutMultiplier=0 
  0x0190 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65  , WriteTotalTime 
  0x01A0 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30 20 D0 E0  outConstant=0 Ра 
  0x01B0 E7 EC E5 F0 20 E2 F5 2E 2F E8 F1 F5 2E 20 EE F7  змер вх./исх. оч 
  0x01C0 E5 F0 E5 E4 E8 20 32 35 36 2F 32 35 36 20 CE F7  ереди 256/256 Оч 
  0x01D0 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52 58 43  истка порта: RXC 
  0x01E0 4C 45 41 52 2C 20 54 58 43 4C 45 41 52 20 42 72  LEAR, TXCLEAR Br 
  0x01F0 65 61 6B 20 E2 EA EB FE F7 E5 ED 20 52 54 53 20  eak включен RTS  
  0x0200 E2 EA EB FE F7 E5 ED 20 42 72 65 61 6B 20 E2 FB  включен Break вы 
  0x0210 EA EB FE F7 E5 ED 20 52 54 53 20 E2 FB EA EB FE  ключен RTS выклю 
  0x0220 F7 E5 ED 20 42 72 65 61 6B 20 E2 EA EB FE F7 E5  чен Break включе 
  0x0230 ED 20 52 54 53 20 E2 EA EB FE F7 E5 ED 20 42 72  н RTS включен Br 
  0x0240 65 61 6B 20 E2 EA EB FE F7 E5 ED 20 52 54 53 20  eak включен RTS  
  0x0250 E2 EA EB FE F7 E5 ED 20 42 72 65 61 6B 20 E2 EA  включен Break вк 
  0x0260 EB FE F7 E5 ED 20 52 54 53 20 E2 EA EB FE F7 E5  лючен RTS включе 
  0x0270 ED 20 42 72 65 61 6B 20 E2 EA EB FE F7 E5 ED 20  н Break включен  
  0x0280 52 54 53 20 E2 EA EB FE F7 E5 ED 20 42 72 65 61  RTS включен Brea 
  0x0290 6B 20 E2 EA EB FE F7 E5 ED 20 52 54 53 20 E2 EA  k включен RTS вк 
  0x02A0 EB FE F7 E5 ED 20 42 72 65 61 6B 20 E2 EA EB FE  лючен Break вклю 
  0x02B0 F7 E5 ED 20 52 54 53 20 E2 EA EB FE F7 E5 ED 20  чен RTS включен  
  0x02C0 42 72 65 61 6B 20 E2 EA EB FE F7 E5 ED 20 52 54  Break включен RT 
  0x02D0 53 20 E2 EA EB FE F7 E5 ED 20 42 72 65 61 6B 20  S включен Break  
  0x02E0 E2 FB EA EB FE F7 E5 ED 20 52 54 53 20 E2 FB EA  выключен RTS вык 
  0x02F0 EB FE F7 E5 ED 20 D2 E0 E9 EC E0 F3 F2 FB 3A 20  лючен Таймауты:  
  0x0300 52 65 61 64 49 6E 74 65 72 76 61 6C 3D 2D 31 2C  ReadInterval=-1, 
  0x0310 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75   ReadTotalTimeou 
  0x0320 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20 52  tMultiplier=0, R 
  0x0330 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43  eadTotalTimeoutC 
  0x0340 6F 6E 73 74 61 6E 74 3D 30 2C 20 57 72 69 74 65  onstant=0, Write 
  0x0350 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74  TotalTimeoutMult 
  0x0360 69 70 6C 69 65 72 3D 30 2C 20 57 72 69 74 65 54  iplier=0, WriteT 
  0x0370 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74  otalTimeoutConst 
  0x0380 61 6E 74 3D 30 20 00 00 D2 E0 E9 EC E0 F3 F2 FB  ant=0 ..Таймауты 
  0x0390 3A 20 52 65 61 64 49 6E 74 65 72 76 61 6C 3D 30  : ReadInterval=0 
  0x03A0 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F  , ReadTotalTimeo 
  0x03B0 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20  utMultiplier=0,  
  0x03C0 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74  ReadTotalTimeout 
  0x03D0 43 6F 6E 73 74 61 6E 74 3D 31 31 30 31 2C 20 57  Constant=1101, W 
  0x03E0 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74  riteTotalTimeout 
  0x03F0 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20 57 72  Multiplier=0, Wr 
  0x0400 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43  iteTotalTimeoutC 
  0x0410 6F 6E 73 74 61 6E 74 3D 30 20 55 D2 E0 E9 EC E0  onstant=0 UТайма 
  0x0420 F3 F2 FB 3A 20 52 65 61 64 49 6E 74 65 72 76 61  уты: ReadInterva 
  0x0430 6C 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69  l=0, ReadTotalTi 
  0x0440 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D  meoutMultiplier= 
  0x0450 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65  0, ReadTotalTime 
  0x0460 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 31 34 31 2C  outConstant=141, 
  0x0470 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F   WriteTotalTimeo 
  0x0480 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20  utMultiplier=0,  
  0x0490 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75  WriteTotalTimeou 
  0x04A0 74 43 6F 6E 73 74 61 6E 74 3D 30 20 01 8A CE F7  tConstant=0 .ЉОч 
  0x04B0 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52 58 43  истка порта: RXC 
  0x04C0 4C 45 41 52 2C 20 54 58 43 4C 45 41 52 20 75 75  LEAR, TXCLEAR uu 
  0x04D0 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49 6E  Таймауты: ReadIn 
  0x04E0 74 65 72 76 61 6C 3D 30 2C 20 52 65 61 64 54 6F  terval=0, ReadTo 
  0x04F0 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70  talTimeoutMultip 
  0x0500 6C 69 65 72 3D 30 2C 20 52 65 61 64 54 6F 74 61  lier=0, ReadTota 
  0x0510 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74  lTimeoutConstant 
  0x0520 3D 31 30 30 31 2C 20 57 72 69 74 65 54 6F 74 61  =1001, WriteTota 
  0x0530 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69  lTimeoutMultipli 
  0x0540 65 72 3D 30 2C 20 57 72 69 74 65 54 6F 74 61 6C  er=0, WriteTotal 
  0x0550 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D  TimeoutConstant= 
  0x0560 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A  0 Очистка порта: 
  0x0570 20 54 58 43 4C 45 41 52 20 0F F0 F0 D2 E0 E9 EC   TXCLEAR .ррТайм 
  0x0580 E0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74 65 72 76  ауты: ReadInterv 
  0x0590 61 6C 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54  al=0, ReadTotalT 
  0x05A0 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72  imeoutMultiplier 
  0x05B0 3D 36 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69  =60, ReadTotalTi 
  0x05C0 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 31 2C  meoutConstant=1, 
  0x05D0 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F   WriteTotalTimeo 
  0x05E0 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20  utMultiplier=0,  
  0x05F0 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75  WriteTotalTimeou 
  0x0600 74 43 6F 6E 73 74 61 6E 74 3D 30 20 CE F7 E8 F1  tConstant=0 Очис 
  0x0610 F2 EA E0 20 EF EE F0 F2 E0 3A 20 54 58 43 4C 45  тка порта: TXCLE 
  0x0620 41 52 20 29 D6 D6 F6 09 09 30 CF CF 33 CC CC 39  AR )ЦЦц..0ПП3ММ9 
  0x0630 C6 C6 39 C6 C6 30 CF CF 36 C9 C9 30 CF CF 32 CD  ЖЖ9ЖЖ0ПП6ЙЙ0ПП2Н 
  0x0640 CD 32 CD CD 20 DF DF 20 DF DF 20 DF DF 03 D2 E0  Н2НН ЯЯ ЯЯ ЯЯ.Та 
  0x0650 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74 65  ймауты: ReadInte 
  0x0660 72 76 61 6C 3D 30 2C 20 52 65 61 64 54 6F 74 61  rval=0, ReadTota 
  0x0670 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69  lTimeoutMultipli 
  0x0680 65 72 3D 36 30 2C 20 52 65 61 64 54 6F 74 61 6C  er=60, ReadTotal 
  0x0690 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D  TimeoutConstant= 
  0x06A0 31 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D  1, WriteTotalTim 
  0x06B0 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30  eoutMultiplier=0 
  0x06C0 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65  , WriteTotalTime 
  0x06D0 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30 20 CE F7  outConstant=0 Оч 
  0x06E0 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52 58 43  истка порта: RXC 
  0x06F0 4C 45 41 52 2C 20 54 58 43 4C 45 41 52 20 03 03  LEAR, TXCLEAR .. 
  0x0700 FC 2A 2A D5 09 09 F6 CE F7 E8 F1 F2 EA E0 20 EF  ь**Х..цОчистка п 
  0x0710 EE F0 F2 E0 3A 20 52 58 43 4C 45 41 52 2C 20 54  орта: RXCLEAR, T 
  0x0720 58 43 4C 45 41 52 20 03 03 D2 E0 E9 EC E0 F3 F2  XCLEAR ..Таймаут 
  0x0730 FB 3A 20 52 65 61 64 49 6E 74 65 72 76 61 6C 3D  ы: ReadInterval= 
  0x0740 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65  0, ReadTotalTime 
  0x0750 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C  outMultiplier=0, 
  0x0760 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75   ReadTotalTimeou 
  0x0770 74 43 6F 6E 73 74 61 6E 74 3D 31 30 30 31 2C 20  tConstant=1001,  
  0x0780 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75  WriteTotalTimeou 
  0x0790 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20 57  tMultiplier=0, W 
  0x07A0 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74  riteTotalTimeout 
  0x07B0 43 6F 6E 73 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2  Constant=0 Очист 
  0x07C0 EA E0 20 EF EE F0 F2 E0 3A 20 54 58 43 4C 45 41  ка порта: TXCLEA 
  0x07D0 52 20 1B E4 E4 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52  R .ддТаймауты: R 
  0x07E0 65 61 64 49 6E 74 65 72 76 61 6C 3D 30 2C 20 52  eadInterval=0, R 
  0x07F0 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D  eadTotalTimeoutM 
  0x0800 75 6C 74 69 70 6C 69 65 72 3D 36 30 2C 20 52 65  ultiplier=60, Re 
  0x0810 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F  adTotalTimeoutCo 
  0x0820 6E 73 74 61 6E 74 3D 31 2C 20 57 72 69 74 65 54  nstant=1, WriteT 
  0x0830 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69  otalTimeoutMulti 
  0x0840 70 6C 69 65 72 3D 30 2C 20 57 72 69 74 65 54 6F  plier=0, WriteTo 
  0x0850 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61  talTimeoutConsta 
  0x0860 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0  nt=0 Очистка пор 
  0x0870 F2 E0 3A 20 54 58 43 4C 45 41 52 20 2B D4 D4 F6  та: TXCLEAR +ФФц 
  0x0880 09 09 44 BB BB 49 B6 B6 47 B8 B8 49 B6 B6 46 B9  ..D»»I¶¶GёёI¶¶F№ 
  0x0890 B9 41 BE BE 4E B1 B1 54 AB AB 20 DF DF 31 CE CE  №AѕѕN±±T«« ЯЯ1ОО 
  0x08A0 2E D1 D1 36 C9 C9 20 DF DF 20 DF DF 20 DF DF 20  .СС6ЙЙ ЯЯ ЯЯ ЯЯ  
  0x08B0 DF DF 20 DF DF 20 DF DF 20 DF DF 20 DF DF 31 CE  ЯЯ ЯЯ ЯЯ ЯЯ ЯЯ1О 
  0x08C0 CE 32 CD CD 34 CB CB 33 CC CC 03 D2 E0 E9 EC E0  О2НН4ЛЛ3ММ.Тайма 
  0x08D0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74 65 72 76 61  уты: ReadInterva 
  0x08E0 6C 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69  l=0, ReadTotalTi 
  0x08F0 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D  meoutMultiplier= 
  0x0900 36 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D  60, ReadTotalTim 
  0x0910 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 31 2C 20  eoutConstant=1,  
  0x0920 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75  WriteTotalTimeou 
  0x0930 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20 57  tMultiplier=0, W 
  0x0940 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74  riteTotalTimeout 
  0x0950 43 6F 6E 73 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2  Constant=0 Очист 
  0x0960 EA E0 20 EF EE F0 F2 E0 3A 20 52 58 43 4C 45 41  ка порта: RXCLEA 
  0x0970 52 2C 20 54 58 43 4C 45 41 52 20 03 03 FC 2C 2C  R, TXCLEAR ..ь,, 
  0x0980 D3 09 09 F6 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2  У..цОчистка порт 
  0x0990 E0 3A 20 52 58 43 4C 45 41 52 2C 20 54 58 43 4C  а: RXCLEAR, TXCL 
  0x09A0 45 41 52 20 03 03 D2 E0 E9 EC E0 F3 F2 FB 3A 20  EAR ..Таймауты:  
  0x09B0 52 65 61 64 49 6E 74 65 72 76 61 6C 3D 30 2C 20  ReadInterval=0,  
  0x09C0 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74  ReadTotalTimeout 
  0x09D0 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20 52 65  Multiplier=0, Re 
  0x09E0 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F  adTotalTimeoutCo 
  0x09F0 6E 73 74 61 6E 74 3D 31 30 30 31 2C 20 57 72 69  nstant=1001, Wri 
  0x0A00 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75  teTotalTimeoutMu 
  0x0A10 6C 74 69 70 6C 69 65 72 3D 30 2C 20 57 72 69 74  ltiplier=0, Writ 
  0x0A20 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E  eTotalTimeoutCon 
  0x0A30 73 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20  stant=0 Очистка  
  0x0A40 EF EE F0 F2 E0 3A 20 54 58 43 4C 45 41 52 20 0F  порта: TXCLEAR . 
  0x0A50 F0 F0 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64  ррТаймауты: Read 
  0x0A60 49 6E 74 65 72 76 61 6C 3D 30 2C 20 52 65 61 64  Interval=0, Read 
  0x0A70 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74  TotalTimeoutMult 
  0x0A80 69 70 6C 69 65 72 3D 36 30 2C 20 52 65 61 64 54  iplier=60, ReadT 
  0x0A90 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74  otalTimeoutConst 
  0x0AA0 61 6E 74 3D 31 2C 20 57 72 69 74 65 54 6F 74 61  ant=1, WriteTota 
  0x0AB0 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69  lTimeoutMultipli 
  0x0AC0 65 72 3D 30 2C 20 57 72 69 74 65 54 6F 74 61 6C  er=0, WriteTotal 
  0x0AD0 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D  TimeoutConstant= 
  0x0AE0 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A  0 Очистка порта: 
  0x0AF0 20 54 58 43 4C 45 41 52 20 2D D2 D2 F6 09 09 50   TXCLEAR -ТТц..P 
  0x0B00 AF AF 4D B2 B2 43 BC BC 20 DF DF 31 CE CE 31 CE  ЇЇMІІCјј ЯЯ1ОО1О 
  0x0B10 CE 20 DF DF 20 DF DF 20 DF DF 20 DF DF 20 DF DF  О ЯЯ ЯЯ ЯЯ ЯЯ ЯЯ 
  0x0B20 20 DF DF 03 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65   ЯЯ.Таймауты: Re 
  0x0B30 61 64 49 6E 74 65 72 76 61 6C 3D 30 2C 20 52 65  adInterval=0, Re 
  0x0B40 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75  adTotalTimeoutMu 
  0x0B50 6C 74 69 70 6C 69 65 72 3D 36 30 2C 20 52 65 61  ltiplier=60, Rea 
  0x0B60 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E  dTotalTimeoutCon 
  0x0B70 73 74 61 6E 74 3D 31 2C 20 57 72 69 74 65 54 6F  stant=1, WriteTo 
  0x0B80 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70  talTimeoutMultip 
  0x0B90 6C 69 65 72 3D 30 2C 20 57 72 69 74 65 54 6F 74  lier=0, WriteTot 
  0x0BA0 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E  alTimeoutConstan 
  0x0BB0 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2  t=0 Очистка порт 
  0x0BC0 E0 3A 20 52 58 43 4C 45 41 52 2C 20 54 58 43 4C  а: RXCLEAR, TXCL 
  0x0BD0 45 41 52 20 03 03 FC 2E 2E D1 09 09 F6 CE F7 E8  EAR ..ь..С..цОчи 
  0x0BE0 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52 58 43 4C  стка порта: RXCL 
  0x0BF0 45 41 52 2C 20 54 58 43 4C 45 41 52 20 03 03 D2  EAR, TXCLEAR ..Т 
  0x0C00 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74  аймауты: ReadInt 
  0x0C10 65 72 76 61 6C 3D 30 2C 20 52 65 61 64 54 6F 74  erval=0, ReadTot 
  0x0C20 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C  alTimeoutMultipl 
  0x0C30 69 65 72 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C  ier=0, ReadTotal 
  0x0C40 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D  TimeoutConstant= 
  0x0C50 31 30 30 31 2C 20 57 72 69 74 65 54 6F 74 61 6C  1001, WriteTotal 
  0x0C60 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65  TimeoutMultiplie 
  0x0C70 72 3D 30 2C 20 57 72 69 74 65 54 6F 74 61 6C 54  r=0, WriteTotalT 
  0x0C80 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30  imeoutConstant=0 
  0x0C90 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20   Очистка порта:  
  0x0CA0 54 58 43 4C 45 41 52 20 03 FC FC D2 E0 E9 EC E0  TXCLEAR .ььТайма 
  0x0CB0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74 65 72 76 61  уты: ReadInterva 
  0x0CC0 6C 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69  l=0, ReadTotalTi 
  0x0CD0 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D  meoutMultiplier= 
  0x0CE0 36 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D  60, ReadTotalTim 
  0x0CF0 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 31 2C 20  eoutConstant=1,  
  0x0D00 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75  WriteTotalTimeou 
  0x0D10 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20 57  tMultiplier=0, W 
  0x0D20 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74  riteTotalTimeout 
  0x0D30 43 6F 6E 73 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2  Constant=0 Очист 
  0x0D40 EA E0 20 EF EE F0 F2 E0 3A 20 54 58 43 4C 45 41  ка порта: TXCLEA 
  0x0D50 52 20 2F D0 D0 09 F6 F6 03 D2 E0 E9 EC E0 F3 F2  R /РР.цц.Таймаут 
  0x0D60 FB 3A 20 52 65 61 64 49 6E 74 65 72 76 61 6C 3D  ы: ReadInterval= 
  0x0D70 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65  0, ReadTotalTime 
  0x0D80 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 36 30  outMultiplier=60 
  0x0D90 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F  , ReadTotalTimeo 
  0x0DA0 75 74 43 6F 6E 73 74 61 6E 74 3D 31 2C 20 57 72  utConstant=1, Wr 
  0x0DB0 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D  iteTotalTimeoutM 
  0x0DC0 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20 57 72 69  ultiplier=0, Wri 
  0x0DD0 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F  teTotalTimeoutCo 
  0x0DE0 6E 73 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0  nstant=0 Очистка 
  0x0DF0 20 EF EE F0 F2 E0 3A 20 52 58 43 4C 45 41 52 2C   порта: RXCLEAR, 
  0x0E00 20 54 58 43 4C 45 41 52 20 03 03 FC 30 30 CF 09   TXCLEAR ..ь00П. 
  0x0E10 09 F6 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A  .цОчистка порта: 
  0x0E20 20 52 58 43 4C 45 41 52 2C 20 54 58 43 4C 45 41   RXCLEAR, TXCLEA 
  0x0E30 52 20 03 03 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65  R ..Таймауты: Re 
  0x0E40 61 64 49 6E 74 65 72 76 61 6C 3D 30 2C 20 52 65  adInterval=0, Re 
  0x0E50 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75  adTotalTimeoutMu 
  0x0E60 6C 74 69 70 6C 69 65 72 3D 30 2C 20 52 65 61 64  ltiplier=0, Read 
  0x0E70 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73  TotalTimeoutCons 
  0x0E80 74 61 6E 74 3D 31 30 30 31 2C 20 57 72 69 74 65  tant=1001, Write 
  0x0E90 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74  TotalTimeoutMult 
  0x0EA0 69 70 6C 69 65 72 3D 30 2C 20 57 72 69 74 65 54  iplier=0, WriteT 
  0x0EB0 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74  otalTimeoutConst 
  0x0EC0 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE  ant=0 Очистка по 
  0x0ED0 F0 F2 E0 3A 20 54 58 43 4C 45 41 52 20 03 FC FC  рта: TXCLEAR .ьь 
  0x0EE0 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49 6E  Таймауты: ReadIn 
  0x0EF0 74 65 72 76 61 6C 3D 30 2C 20 52 65 61 64 54 6F  terval=0, ReadTo 
  0x0F00 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70  talTimeoutMultip 
  0x0F10 6C 69 65 72 3D 36 30 2C 20 52 65 61 64 54 6F 74  lier=60, ReadTot 
  0x0F20 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E  alTimeoutConstan 
  0x0F30 74 3D 31 2C 20 57 72 69 74 65 54 6F 74 61 6C 54  t=1, WriteTotalT 
  0x0F40 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72  imeoutMultiplier 
  0x0F50 3D 30 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69  =0, WriteTotalTi 
  0x0F60 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30 20  meoutConstant=0  
  0x0F70 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 54  Очистка порта: T 
  0x0F80 58 43 4C 45 41 52 20 31 CE CE 09 F6 F6 03 D2 E0  XCLEAR 1ОО.цц.Та 
  0x0F90 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74 65  ймауты: ReadInte 
  0x0FA0 72 76 61 6C 3D 30 2C 20 52 65 61 64 54 6F 74 61  rval=0, ReadTota 
  0x0FB0 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69  lTimeoutMultipli 
  0x0FC0 65 72 3D 36 30 2C 20 52 65 61 64 54 6F 74 61 6C  er=60, ReadTotal 
  0x0FD0 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D  TimeoutConstant= 
  0x0FE0 31 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D  1, WriteTotalTim 
  0x0FF0 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30  eoutMultiplier=0 
  0x1000 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65  , WriteTotalTime 
  0x1010 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30 20 CE F7  outConstant=0 Оч 
  0x1020 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52 58 43  истка порта: RXC 
  0x1030 4C 45 41 52 2C 20 54 58 43 4C 45 41 52 20 03 03  LEAR, TXCLEAR .. 
  0x1040 FC 32 32 CD 09 09 F6 CE F7 E8 F1 F2 EA E0 20 EF  ь22Н..цОчистка п 
  0x1050 EE F0 F2 E0 3A 20 52 58 43 4C 45 41 52 2C 20 54  орта: RXCLEAR, T 
  0x1060 58 43 4C 45 41 52 20 03 03 D2 E0 E9 EC E0 F3 F2  XCLEAR ..Таймаут 
  0x1070 FB 3A 20 52 65 61 64 49 6E 74 65 72 76 61 6C 3D  ы: ReadInterval= 
  0x1080 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65  0, ReadTotalTime 
  0x1090 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C  outMultiplier=0, 
  0x10A0 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75   ReadTotalTimeou 
  0x10B0 74 43 6F 6E 73 74 61 6E 74 3D 31 30 30 31 2C 20  tConstant=1001,  
  0x10C0 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75  WriteTotalTimeou 
  0x10D0 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20 57  tMultiplier=0, W 
  0x10E0 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74  riteTotalTimeout 
  0x10F0 43 6F 6E 73 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2  Constant=0 Очист 
  0x1100 EA E0 20 EF EE F0 F2 E0 3A 20 54 58 43 4C 45 41  ка порта: TXCLEA 
  0x1110 52 20 03 FC FC D2 E0 E9 EC E0 F3 F2 FB 3A 20 52  R .ььТаймауты: R 
  0x1120 65 61 64 49 6E 74 65 72 76 61 6C 3D 30 2C 20 52  eadInterval=0, R 
  0x1130 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D  eadTotalTimeoutM 
  0x1140 75 6C 74 69 70 6C 69 65 72 3D 36 30 2C 20 52 65  ultiplier=60, Re 
  0x1150 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F  adTotalTimeoutCo 
  0x1160 6E 73 74 61 6E 74 3D 31 2C 20 57 72 69 74 65 54  nstant=1, WriteT 
  0x1170 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69  otalTimeoutMulti 
  0x1180 70 6C 69 65 72 3D 30 2C 20 57 72 69 74 65 54 6F  plier=0, WriteTo 
  0x1190 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61  talTimeoutConsta 
  0x11A0 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0  nt=0 Очистка пор 
  0x11B0 F2 E0 3A 20 54 58 43 4C 45 41 52 20 33 CC CC 09  та: TXCLEAR 3ММ. 
  0x11C0 F6 F6 03 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61  цц.Таймауты: Rea 
  0x11D0 64 49 6E 74 65 72 76 61 6C 3D 30 2C 20 52 65 61  dInterval=0, Rea 
  0x11E0 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C  dTotalTimeoutMul 
  0x11F0 74 69 70 6C 69 65 72 3D 36 30 2C 20 52 65 61 64  tiplier=60, Read 
  0x1200 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73  TotalTimeoutCons 
  0x1210 74 61 6E 74 3D 31 2C 20 57 72 69 74 65 54 6F 74  tant=1, WriteTot 
  0x1220 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C  alTimeoutMultipl 
  0x1230 69 65 72 3D 30 2C 20 57 72 69 74 65 54 6F 74 61  ier=0, WriteTota 
  0x1240 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74  lTimeoutConstant 
  0x1250 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0  =0 Очистка порта 
  0x1260 3A 20 52 58 43 4C 45 41 52 2C 20 54 58 43 4C 45  : RXCLEAR, TXCLE 
  0x1270 41 52 20 03 03 FC 34 34 CB 09 09 F6 CE F7 E8 F1  AR ..ь44Л..цОчис 
  0x1280 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52 58 43 4C 45  тка порта: RXCLE 
  0x1290 41 52 2C 20 54 58 43 4C 45 41 52 20 03 03 D2 E0  AR, TXCLEAR ..Та 
  0x12A0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74 65  ймауты: ReadInte 
  0x12B0 72 76 61 6C 3D 30 2C 20 52 65 61 64 54 6F 74 61  rval=0, ReadTota 
  0x12C0 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69  lTimeoutMultipli 
  0x12D0 65 72 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54  er=0, ReadTotalT 
  0x12E0 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 31  imeoutConstant=1 
  0x12F0 30 30 31 2C 20 57 72 69 74 65 54 6F 74 61 6C 54  001, WriteTotalT 
  0x1300 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72  imeoutMultiplier 
  0x1310 3D 30 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69  =0, WriteTotalTi 
  0x1320 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30 20  meoutConstant=0  
  0x1330 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 54  Очистка порта: T 
  0x1340 58 43 4C 45 41 52 20 03 FC FC D2 E0 E9 EC E0 F3  XCLEAR .ььТаймау 
  0x1350 F2 FB 3A 20 52 65 61 64 49 6E 74 65 72 76 61 6C  ты: ReadInterval 
  0x1360 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D  =0, ReadTotalTim 
  0x1370 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 36  eoutMultiplier=6 
  0x1380 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65  0, ReadTotalTime 
  0x1390 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 31 2C 20 57  outConstant=1, W 
  0x13A0 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74  riteTotalTimeout 
  0x13B0 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20 57 72  Multiplier=0, Wr 
  0x13C0 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43  iteTotalTimeoutC 
  0x13D0 6F 6E 73 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA  onstant=0 Очистк 
  0x13E0 E0 20 EF EE F0 F2 E0 3A 20 54 58 43 4C 45 41 52  а порта: TXCLEAR 
  0x13F0 20 35 CA CA 09 F6 F6 03 D2 E0 E9 EC E0 F3 F2 FB   5КК.цц.Таймауты 
  0x1400 3A 20 52 65 61 64 49 6E 74 65 72 76 61 6C 3D 30  : ReadInterval=0 
  0x1410 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F  , ReadTotalTimeo 
  0x1420 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 36 30 2C  utMultiplier=60, 
  0x1430 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75   ReadTotalTimeou 
  0x1440 74 43 6F 6E 73 74 61 6E 74 3D 31 2C 20 57 72 69  tConstant=1, Wri 
  0x1450 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75  teTotalTimeoutMu 
  0x1460 6C 74 69 70 6C 69 65 72 3D 30 2C 20 57 72 69 74  ltiplier=0, Writ 
  0x1470 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E  eTotalTimeoutCon 
  0x1480 73 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20  stant=0 Очистка  
  0x1490 EF EE F0 F2 E0 3A 20 52 58 43 4C 45 41 52 2C 20  порта: RXCLEAR,  
  0x14A0 54 58 43 4C 45 41 52 20 03 03 FC 36 36 C9 09 09  TXCLEAR ..ь66Й.. 
  0x14B0 F6 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20  цОчистка порта:  
  0x14C0 52 58 43 4C 45 41 52 2C 20 54 58 43 4C 45 41 52  RXCLEAR, TXCLEAR 
  0x14D0 20 03 03 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61   ..Таймауты: Rea 
  0x14E0 64 49 6E 74 65 72 76 61 6C 3D 30 2C 20 52 65 61  dInterval=0, Rea 
  0x14F0 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C  dTotalTimeoutMul 
  0x1500 74 69 70 6C 69 65 72 3D 30 2C 20 52 65 61 64 54  tiplier=0, ReadT 
  0x1510 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74  otalTimeoutConst 
  0x1520 61 6E 74 3D 31 30 30 31 2C 20 57 72 69 74 65 54  ant=1001, WriteT 
  0x1530 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69  otalTimeoutMulti 
  0x1540 70 6C 69 65 72 3D 30 2C 20 57 72 69 74 65 54 6F  plier=0, WriteTo 
  0x1550 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61  talTimeoutConsta 
  0x1560 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0  nt=0 Очистка пор 
  0x1570 F2 E0 3A 20 54 58 43 4C 45 41 52 20 03 FC FC D2  та: TXCLEAR .ььТ 
  0x1580 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74  аймауты: ReadInt 
  0x1590 65 72 76 61 6C 3D 30 2C 20 52 65 61 64 54 6F 74  erval=0, ReadTot 
  0x15A0 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C  alTimeoutMultipl 
  0x15B0 69 65 72 3D 36 30 2C 20 52 65 61 64 54 6F 74 61  ier=60, ReadTota 
  0x15C0 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74  lTimeoutConstant 
  0x15D0 3D 31 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69  =1, WriteTotalTi 
  0x15E0 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D  meoutMultiplier= 
  0x15F0 30 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D  0, WriteTotalTim 
  0x1600 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30 20 CE  eoutConstant=0 О 
  0x1610 F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 54 58  чистка порта: TX 
  0x1620 43 4C 45 41 52 20 37 C8 C8 09 F6 F6 03 D2 E0 E9  CLEAR 7ИИ.цц.Тай 
  0x1630 EC E0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74 65 72  мауты: ReadInter 
  0x1640 76 61 6C 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C  val=0, ReadTotal 
  0x1650 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65  TimeoutMultiplie 
  0x1660 72 3D 36 30 2C 20 52 65 61 64 54 6F 74 61 6C 54  r=60, ReadTotalT 
  0x1670 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 31  imeoutConstant=1 
  0x1680 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65  , WriteTotalTime 
  0x1690 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C  outMultiplier=0, 
  0x16A0 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F   WriteTotalTimeo 
  0x16B0 75 74 43 6F 6E 73 74 61 6E 74 3D 30 20 CE F7 E8  utConstant=0 Очи 
  0x16C0 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52 58 43 4C  стка порта: RXCL 
  0x16D0 45 41 52 2C 20 54 58 43 4C 45 41 52 20 03 03 FC  EAR, TXCLEAR ..ь 
  0x16E0 38 38 C7 09 09 F6 CE F7 E8 F1 F2 EA E0 20 EF EE  88З..цОчистка по 
  0x16F0 F0 F2 E0 3A 20 52 58 43 4C 45 41 52 2C 20 54 58  рта: RXCLEAR, TX 
  0x1700 43 4C 45 41 52 20 03 03 D2 E0 E9 EC E0 F3 F2 FB  CLEAR ..Таймауты 
  0x1710 3A 20 52 65 61 64 49 6E 74 65 72 76 61 6C 3D 30  : ReadInterval=0 
  0x1720 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F  , ReadTotalTimeo 
  0x1730 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20  utMultiplier=0,  
  0x1740 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74  ReadTotalTimeout 
  0x1750 43 6F 6E 73 74 61 6E 74 3D 31 30 30 31 2C 20 57  Constant=1001, W 
  0x1760 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74  riteTotalTimeout 
  0x1770 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20 57 72  Multiplier=0, Wr 
  0x1780 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43  iteTotalTimeoutC 
  0x1790 6F 6E 73 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA  onstant=0 Очистк 
  0x17A0 E0 20 EF EE F0 F2 E0 3A 20 54 58 43 4C 45 41 52  а порта: TXCLEAR 
  0x17B0 20 03 FC FC D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65   .ььТаймауты: Re 
  0x17C0 61 64 49 6E 74 65 72 76 61 6C 3D 30 2C 20 52 65  adInterval=0, Re 
  0x17D0 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75  adTotalTimeoutMu 
  0x17E0 6C 74 69 70 6C 69 65 72 3D 36 30 2C 20 52 65 61  ltiplier=60, Rea 
  0x17F0 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E  dTotalTimeoutCon 
  0x1800 73 74 61 6E 74 3D 31 2C 20 57 72 69 74 65 54 6F  stant=1, WriteTo 
  0x1810 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70  talTimeoutMultip 
  0x1820 6C 69 65 72 3D 30 2C 20 57 72 69 74 65 54 6F 74  lier=0, WriteTot 
  0x1830 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E  alTimeoutConstan 
  0x1840 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2  t=0 Очистка порт 
  0x1850 E0 3A 20 54 58 43 4C 45 41 52 20 39 C6 C6 09 F6  а: TXCLEAR 9ЖЖ.ц 
  0x1860 F6 03 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64  ц.Таймауты: Read 
  0x1870 49 6E 74 65 72 76 61 6C 3D 30 2C 20 52 65 61 64  Interval=0, Read 
  0x1880 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74  TotalTimeoutMult 
  0x1890 69 70 6C 69 65 72 3D 36 30 2C 20 52 65 61 64 54  iplier=60, ReadT 
  0x18A0 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74  otalTimeoutConst 
  0x18B0 61 6E 74 3D 31 2C 20 57 72 69 74 65 54 6F 74 61  ant=1, WriteTota 
  0x18C0 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69  lTimeoutMultipli 
  0x18D0 65 72 3D 30 2C 20 57 72 69 74 65 54 6F 74 61 6C  er=0, WriteTotal 
  0x18E0 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D  TimeoutConstant= 
  0x18F0 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A  0 Очистка порта: 
  0x1900 20 52 58 43 4C 45 41 52 2C 20 54 58 43 4C 45 41   RXCLEAR, TXCLEA 
  0x1910 52 20 03 03 FC 3A 3A C5 09 09 F6 CE F7 E8 F1 F2  R ..ь::Е..цОчист 
  0x1920 EA E0 20 EF EE F0 F2 E0 3A 20 52 58 43 4C 45 41  ка порта: RXCLEA 
  0x1930 52 2C 20 54 58 43 4C 45 41 52 20 03 03 D2 E0 E9  R, TXCLEAR ..Тай 
  0x1940 EC E0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74 65 72  мауты: ReadInter 
  0x1950 76 61 6C 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C  val=0, ReadTotal 
  0x1960 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65  TimeoutMultiplie 
  0x1970 72 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69  r=0, ReadTotalTi 
  0x1980 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 31 30  meoutConstant=10 
  0x1990 30 31 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69  01, WriteTotalTi 
  0x19A0 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D  meoutMultiplier= 
  0x19B0 30 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D  0, WriteTotalTim 
  0x19C0 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30 20 CE  eoutConstant=0 О 
  0x19D0 F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 54 58  чистка порта: TX 
  0x19E0 43 4C 45 41 52 20 03 FC FC D2 E0 E9 EC E0 F3 F2  CLEAR .ььТаймаут 
  0x19F0 FB 3A 20 52 65 61 64 49 6E 74 65 72 76 61 6C 3D  ы: ReadInterval= 
  0x1A00 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65  0, ReadTotalTime 
  0x1A10 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 36 30  outMultiplier=60 
  0x1A20 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F  , ReadTotalTimeo 
  0x1A30 75 74 43 6F 6E 73 74 61 6E 74 3D 31 2C 20 57 72  utConstant=1, Wr 
  0x1A40 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D  iteTotalTimeoutM 
  0x1A50 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20 57 72 69  ultiplier=0, Wri 
  0x1A60 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F  teTotalTimeoutCo 
  0x1A70 6E 73 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0  nstant=0 Очистка 
  0x1A80 20 EF EE F0 F2 E0 3A 20 54 58 43 4C 45 41 52 20   порта: TXCLEAR  
  0x1A90 3B C4 C4 09 F6 F6 03 D2 E0 E9 EC E0 F3 F2 FB 3A  ;ДД.цц.Таймауты: 
  0x1AA0 20 52 65 61 64 49 6E 74 65 72 76 61 6C 3D 30 2C   ReadInterval=0, 
  0x1AB0 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75   ReadTotalTimeou 
  0x1AC0 74 4D 75 6C 74 69 70 6C 69 65 72 3D 36 30 2C 20  tMultiplier=60,  
  0x1AD0 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74  ReadTotalTimeout 
  0x1AE0 43 6F 6E 73 74 61 6E 74 3D 31 2C 20 57 72 69 74  Constant=1, Writ 
  0x1AF0 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C  eTotalTimeoutMul 
  0x1B00 74 69 70 6C 69 65 72 3D 30 2C 20 57 72 69 74 65  tiplier=0, Write 
  0x1B10 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73  TotalTimeoutCons 
  0x1B20 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF  tant=0 Очистка п 
  0x1B30 EE F0 F2 E0 3A 20 52 58 43 4C 45 41 52 2C 20 54  орта: RXCLEAR, T 
  0x1B40 58 43 4C 45 41 52 20 03 03 FC 3C 3C C3 09 09 F6  XCLEAR ..ь..ц 
  0x1B50 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52  Очистка порта: R 
  0x1B60 58 43 4C 45 41 52 2C 20 54 58 43 4C 45 41 52 20  XCLEAR, TXCLEAR  
  0x1B70 03 03 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64  ..Таймауты: Read 
  0x1B80 49 6E 74 65 72 76 61 6C 3D 30 2C 20 52 65 61 64  Interval=0, Read 
  0x1B90 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74  TotalTimeoutMult 
  0x1BA0 69 70 6C 69 65 72 3D 30 2C 20 52 65 61 64 54 6F  iplier=0, ReadTo 
  0x1BB0 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61  talTimeoutConsta 
  0x1BC0 6E 74 3D 31 30 30 31 2C 20 57 72 69 74 65 54 6F  nt=1001, WriteTo 
  0x1BD0 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70  talTimeoutMultip 
  0x1BE0 6C 69 65 72 3D 30 2C 20 57 72 69 74 65 54 6F 74  lier=0, WriteTot 
  0x1BF0 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E  alTimeoutConstan 
  0x1C00 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2  t=0 Очистка порт 
  0x1C10 E0 3A 20 54 58 43 4C 45 41 52 20 03 FC FC D2 E0  а: TXCLEAR .ььТа 
  0x1C20 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74 65  ймауты: ReadInte 
  0x1C30 72 76 61 6C 3D 30 2C 20 52 65 61 64 54 6F 74 61  rval=0, ReadTota 
  0x1C40 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69  lTimeoutMultipli 
  0x1C50 65 72 3D 36 30 2C 20 52 65 61 64 54 6F 74 61 6C  er=60, ReadTotal 
  0x1C60 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D  TimeoutConstant= 
  0x1C70 31 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D  1, WriteTotalTim 
  0x1C80 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30  eoutMultiplier=0 
  0x1C90 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65  , WriteTotalTime 
  0x1CA0 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30 20 CE F7  outConstant=0 Оч 
  0x1CB0 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 54 58 43  истка порта: TXC 
  0x1CC0 4C 45 41 52 20 3D C2 C2 09 F6 F6 03 D2 E0 E9 EC  LEAR =ВВ.цц.Тайм 
  0x1CD0 E0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74 65 72 76  ауты: ReadInterv 
  0x1CE0 61 6C 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54  al=0, ReadTotalT 
  0x1CF0 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72  imeoutMultiplier 
  0x1D00 3D 36 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69  =60, ReadTotalTi 
  0x1D10 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 31 2C  meoutConstant=1, 
  0x1D20 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F   WriteTotalTimeo 
  0x1D30 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20  utMultiplier=0,  
  0x1D40 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75  WriteTotalTimeou 
  0x1D50 74 43 6F 6E 73 74 61 6E 74 3D 30 20 CE F7 E8 F1  tConstant=0 Очис 
  0x1D60 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52 58 43 4C 45  тка порта: RXCLE 
  0x1D70 41 52 2C 20 54 58 43 4C 45 41 52 20 03 03 FC 3E  AR, TXCLEAR ..ь>  
  0x1D80 3E C1 09 09 F6 CE F7 E8 F1 F2 EA E0 20 EF EE F0  >ББ..цОчистка пор 
  0x1D90 F2 E0 3A 20 52 58 43 4C 45 41 52 2C 20 54 58 43  та: RXCLEAR, TXC 
  0x1DA0 4C 45 41 52 20 03 03 D2 E0 E9 EC E0 F3 F2 FB 3A  LEAR ..Таймауты: 
  0x1DB0 20 52 65 61 64 49 6E 74 65 72 76 61 6C 3D 30 2C   ReadInterval=0, 
  0x1DC0 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75   ReadTotalTimeou 
  0x1DD0 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20 52  tMultiplier=0, R 
  0x1DE0 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43  eadTotalTimeoutC 
  0x1DF0 6F 6E 73 74 61 6E 74 3D 31 30 30 31 2C 20 57 72  onstant=1001, Wr 
  0x1E00 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D  iteTotalTimeoutM 
  0x1E10 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20 57 72 69  ultiplier=0, Wri 
  0x1E20 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F  teTotalTimeoutCo 
  0x1E30 6E 73 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0  nstant=0 Очистка 
  0x1E40 20 EF EE F0 F2 E0 3A 20 54 58 43 4C 45 41 52 20   порта: TXCLEAR  
  0x1E50 03 FC FC D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61  .ььТаймауты: Rea 
  0x1E60 64 49 6E 74 65 72 76 61 6C 3D 30 2C 20 52 65 61  dInterval=0, Rea 
  0x1E70 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C  dTotalTimeoutMul 
  0x1E80 74 69 70 6C 69 65 72 3D 36 30 2C 20 52 65 61 64  tiplier=60, Read 
  0x1E90 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73  TotalTimeoutCons 
  0x1EA0 74 61 6E 74 3D 31 2C 20 57 72 69 74 65 54 6F 74  tant=1, WriteTot 
  0x1EB0 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C  alTimeoutMultipl 
  0x1EC0 69 65 72 3D 30 2C 20 57 72 69 74 65 54 6F 74 61  ier=0, WriteTota 
  0x1ED0 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74  lTimeoutConstant 
  0x1EE0 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0  =0 Очистка порта 
  0x1EF0 3A 20 54 58 43 4C 45 41 52 20 3F C0 C0 09 F6 F6  : TXCLEAR ?АА.цц 
  0x1F00 03 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49  .Таймауты: ReadI 
  0x1F10 6E 74 65 72 76 61 6C 3D 30 2C 20 52 65 61 64 54  nterval=0, ReadT 
  0x1F20 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69  otalTimeoutMulti 
  0x1F30 70 6C 69 65 72 3D 36 30 2C 20 52 65 61 64 54 6F  plier=60, ReadTo 
  0x1F40 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61  talTimeoutConsta 
  0x1F50 6E 74 3D 31 2C 20 57 72 69 74 65 54 6F 74 61 6C  nt=1, WriteTotal 
  0x1F60 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65  TimeoutMultiplie 
  0x1F70 72 3D 30 2C 20 57 72 69 74 65 54 6F 74 61 6C 54  r=0, WriteTotalT 
  0x1F80 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30  imeoutConstant=0 
  0x1F90 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20   Очистка порта:  
  0x1FA0 52 58 43 4C 45 41 52 2C 20 54 58 43 4C 45 41 52  RXCLEAR, TXCLEAR 
  0x1FB0 20 03 03 FC 40 40 BF 09 09 F6 CE F7 E8 F1 F2 EA   ..ь@@ї..цОчистк 
  0x1FC0 E0 20 EF EE F0 F2 E0 3A 20 52 58 43 4C 45 41 52  а порта: RXCLEAR 
  0x1FD0 2C 20 54 58 43 4C 45 41 52 20 03 03 D2 E0 E9 EC  , TXCLEAR ..Тайм 
  0x1FE0 E0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74 65 72 76  ауты: ReadInterv 
  0x1FF0 61 6C 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54  al=0, ReadTotalT 
  0x2000 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72  imeoutMultiplier 
  0x2010 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D  =0, ReadTotalTim 
  0x2020 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 31 30 30  eoutConstant=100 
  0x2030 31 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D  1, WriteTotalTim 
  0x2040 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30  eoutMultiplier=0 
  0x2050 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65  , WriteTotalTime 
  0x2060 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30 20 CE F7  outConstant=0 Оч 
  0x2070 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 54 58 43  истка порта: TXC 
  0x2080 4C 45 41 52 20 03 FC FC D2 E0 E9 EC E0 F3 F2 FB  LEAR .ььТаймауты 
  0x2090 3A 20 52 65 61 64 49 6E 74 65 72 76 61 6C 3D 30  : ReadInterval=0 
  0x20A0 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F  , ReadTotalTimeo 
  0x20B0 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 36 30 2C  utMultiplier=60, 
  0x20C0 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75   ReadTotalTimeou 
  0x20D0 74 43 6F 6E 73 74 61 6E 74 3D 31 2C 20 57 72 69  tConstant=1, Wri 
  0x20E0 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75  teTotalTimeoutMu 
  0x20F0 6C 74 69 70 6C 69 65 72 3D 30 2C 20 57 72 69 74  ltiplier=0, Writ 
  0x2100 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E  eTotalTimeoutCon 
  0x2110 73 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20  stant=0 Очистка  
  0x2120 EF EE F0 F2 E0 3A 20 54 58 43 4C 45 41 52 20 41  порта: TXCLEAR A 
  0x2130 BE BE 09 F6 F6 03 D2 E0 E9 EC E0 F3 F2 FB 3A 20  ѕѕ.цц.Таймауты:  
  0x2140 52 65 61 64 49 6E 74 65 72 76 61 6C 3D 30 2C 20  ReadInterval=0,  
  0x2150 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74  ReadTotalTimeout 
  0x2160 4D 75 6C 74 69 70 6C 69 65 72 3D 36 30 2C 20 52  Multiplier=60, R 
  0x2170 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43  eadTotalTimeoutC 
  0x2180 6F 6E 73 74 61 6E 74 3D 31 2C 20 57 72 69 74 65  onstant=1, Write 
  0x2190 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74  TotalTimeoutMult 
  0x21A0 69 70 6C 69 65 72 3D 30 2C 20 57 72 69 74 65 54  iplier=0, WriteT 
  0x21B0 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74  otalTimeoutConst 
  0x21C0 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE  ant=0 Очистка по 
  0x21D0 F0 F2 E0 3A 20 52 58 43 4C 45 41 52 2C 20 54 58  рта: RXCLEAR, TX 
  0x21E0 43 4C 45 41 52 20 03 03 FC 42 42 BD 09 09 F6 CE  CLEAR ..ьBBЅ..цО 
  0x21F0 F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52 58  чистка порта: RX 
  0x2200 43 4C 45 41 52 2C 20 54 58 43 4C 45 41 52 20 03  CLEAR, TXCLEAR . 
  0x2210 03 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49  .Таймауты: ReadI 
  0x2220 6E 74 65 72 76 61 6C 3D 30 2C 20 52 65 61 64 54  nterval=0, ReadT 
  0x2230 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69  otalTimeoutMulti 
  0x2240 70 6C 69 65 72 3D 30 2C 20 52 65 61 64 54 6F 74  plier=0, ReadTot 
  0x2250 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E  alTimeoutConstan 
  0x2260 74 3D 31 30 30 31 2C 20 57 72 69 74 65 54 6F 74  t=1001, WriteTot 
  0x2270 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C  alTimeoutMultipl 
  0x2280 69 65 72 3D 30 2C 20 57 72 69 74 65 54 6F 74 61  ier=0, WriteTota 
  0x2290 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74  lTimeoutConstant 
  0x22A0 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0  =0 Очистка порта 
  0x22B0 3A 20 54 58 43 4C 45 41 52 20 03 FC FC D2 E0 E9  : TXCLEAR .ььТай 
  0x22C0 EC E0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74 65 72  мауты: ReadInter 
  0x22D0 76 61 6C 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C  val=0, ReadTotal 
  0x22E0 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65  TimeoutMultiplie 
  0x22F0 72 3D 36 30 2C 20 52 65 61 64 54 6F 74 61 6C 54  r=60, ReadTotalT 
  0x2300 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 31  imeoutConstant=1 
  0x2310 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65  , WriteTotalTime 
  0x2320 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C  outMultiplier=0, 
  0x2330 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F   WriteTotalTimeo 
  0x2340 75 74 43 6F 6E 73 74 61 6E 74 3D 30 20 CE F7 E8  utConstant=0 Очи 
  0x2350 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 54 58 43 4C  стка порта: TXCL 
  0x2360 45 41 52 20 43 BC BC 09 F6 F6 03 D2 E0 E9 EC E0  EAR Cјј.цц.Тайма 
  0x2370 F3 F2 FB 3A 20 52 65 61 64 49 6E 74 65 72 76 61  уты: ReadInterva 
  0x2380 6C 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69  l=0, ReadTotalTi 
  0x2390 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D  meoutMultiplier= 
  0x23A0 36 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D  60, ReadTotalTim 
  0x23B0 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 31 2C 20  eoutConstant=1,  
  0x23C0 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75  WriteTotalTimeou 
  0x23D0 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20 57  tMultiplier=0, W 
  0x23E0 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74  riteTotalTimeout 
  0x23F0 43 6F 6E 73 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2  Constant=0 Очист 
  0x2400 EA E0 20 EF EE F0 F2 E0 3A 20 52 58 43 4C 45 41  ка порта: RXCLEA 
  0x2410 52 2C 20 54 58 43 4C 45 41 52 20 03 03 FC 44 44  R, TXCLEAR ..ьDD 
  0x2420 BB 09 09 F6 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2  »..цОчистка порт 
  0x2430 E0 3A 20 52 58 43 4C 45 41 52 2C 20 54 58 43 4C  а: RXCLEAR, TXCL 
  0x2440 45 41 52 20 03 03 D2 E0 E9 EC E0 F3 F2 FB 3A 20  EAR ..Таймауты:  
  0x2450 52 65 61 64 49 6E 74 65 72 76 61 6C 3D 30 2C 20  ReadInterval=0,  
  0x2460 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74  ReadTotalTimeout 
  0x2470 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20 52 65  Multiplier=0, Re 
  0x2480 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F  adTotalTimeoutCo 
  0x2490 6E 73 74 61 6E 74 3D 31 30 30 31 2C 20 57 72 69  nstant=1001, Wri 
  0x24A0 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75  teTotalTimeoutMu 
  0x24B0 6C 74 69 70 6C 69 65 72 3D 30 2C 20 57 72 69 74  ltiplier=0, Writ 
  0x24C0 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E  eTotalTimeoutCon 
  0x24D0 73 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20  stant=0 Очистка  
  0x24E0 EF EE F0 F2 E0 3A 20 54 58 43 4C 45 41 52 20 03  порта: TXCLEAR . 
  0x24F0 FC FC D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64  ььТаймауты: Read 
  0x2500 49 6E 74 65 72 76 61 6C 3D 30 2C 20 52 65 61 64  Interval=0, Read 
  0x2510 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74  TotalTimeoutMult 
  0x2520 69 70 6C 69 65 72 3D 36 30 2C 20 52 65 61 64 54  iplier=60, ReadT 
  0x2530 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74  otalTimeoutConst 
  0x2540 61 6E 74 3D 31 2C 20 57 72 69 74 65 54 6F 74 61  ant=1, WriteTota 
  0x2550 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69  lTimeoutMultipli 
  0x2560 65 72 3D 30 2C 20 57 72 69 74 65 54 6F 74 61 6C  er=0, WriteTotal 
  0x2570 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D  TimeoutConstant= 
  0x2580 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A  0 Очистка порта: 
  0x2590 20 54 58 43 4C 45 41 52 20 45 BA BA 09 F6 F6 03   TXCLEAR Eєє.цц. 
  0x25A0 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49 6E  Таймауты: ReadIn 
  0x25B0 74 65 72 76 61 6C 3D 30 2C 20 52 65 61 64 54 6F  terval=0, ReadTo 
  0x25C0 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70  talTimeoutMultip 
  0x25D0 6C 69 65 72 3D 36 30 2C 20 52 65 61 64 54 6F 74  lier=60, ReadTot 
  0x25E0 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E  alTimeoutConstan 
  0x25F0 74 3D 31 2C 20 57 72 69 74 65 54 6F 74 61 6C 54  t=1, WriteTotalT 
  0x2600 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72  imeoutMultiplier 
  0x2610 3D 30 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69  =0, WriteTotalTi 
  0x2620 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30 20  meoutConstant=0  
  0x2630 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52  Очистка порта: R 
  0x2640 58 43 4C 45 41 52 2C 20 54 58 43 4C 45 41 52 20  XCLEAR, TXCLEAR  
  0x2650 03 03 FC 46 46 B9 09 09 F6 CE F7 E8 F1 F2 EA E0  ..ьFF№..цОчистка 
  0x2660 20 EF EE F0 F2 E0 3A 20 52 58 43 4C 45 41 52 2C   порта: RXCLEAR, 
  0x2670 20 54 58 43 4C 45 41 52 20 03 03 D2 E0 E9 EC E0   TXCLEAR ..Тайма 
  0x2680 F3 F2 FB 3A 20 52 65 61 64 49 6E 74 65 72 76 61  уты: ReadInterva 
  0x2690 6C 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69  l=0, ReadTotalTi 
  0x26A0 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D  meoutMultiplier= 
  0x26B0 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65  0, ReadTotalTime 
  0x26C0 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 31 30 30 31  outConstant=1001 
  0x26D0 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65  , WriteTotalTime 
  0x26E0 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C  outMultiplier=0, 
  0x26F0 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F   WriteTotalTimeo 
  0x2700 75 74 43 6F 6E 73 74 61 6E 74 3D 30 20 CE F7 E8  utConstant=0 Очи 
  0x2710 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 54 58 43 4C  стка порта: TXCL 
  0x2720 45 41 52 20 03 FC FC D2 E0 E9 EC E0 F3 F2 FB 3A  EAR .ььТаймауты: 
  0x2730 20 52 65 61 64 49 6E 74 65 72 76 61 6C 3D 30 2C   ReadInterval=0, 
  0x2740 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75   ReadTotalTimeou 
  0x2750 74 4D 75 6C 74 69 70 6C 69 65 72 3D 36 30 2C 20  tMultiplier=60,  
  0x2760 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74  ReadTotalTimeout 
  0x2770 43 6F 6E 73 74 61 6E 74 3D 31 2C 20 57 72 69 74  Constant=1, Writ 
  0x2780 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C  eTotalTimeoutMul 
  0x2790 74 69 70 6C 69 65 72 3D 30 2C 20 57 72 69 74 65  tiplier=0, Write 
  0x27A0 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73  TotalTimeoutCons 
  0x27B0 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF  tant=0 Очистка п 
  0x27C0 EE F0 F2 E0 3A 20 54 58 43 4C 45 41 52 20 47 B8  орта: TXCLEAR Gё 
  0x27D0 B8 09 F6 F6 03 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52  ё.цц.Таймауты: R 
  0x27E0 65 61 64 49 6E 74 65 72 76 61 6C 3D 30 2C 20 52  eadInterval=0, R 
  0x27F0 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D  eadTotalTimeoutM 
  0x2800 75 6C 74 69 70 6C 69 65 72 3D 36 30 2C 20 52 65  ultiplier=60, Re 
  0x2810 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F  adTotalTimeoutCo 
  0x2820 6E 73 74 61 6E 74 3D 31 2C 20 57 72 69 74 65 54  nstant=1, WriteT 
  0x2830 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69  otalTimeoutMulti 
  0x2840 70 6C 69 65 72 3D 30 2C 20 57 72 69 74 65 54 6F  plier=0, WriteTo 
  0x2850 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61  talTimeoutConsta 
  0x2860 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0  nt=0 Очистка пор 
  0x2870 F2 E0 3A 20 52 58 43 4C 45 41 52 2C 20 54 58 43  та: RXCLEAR, TXC 
  0x2880 4C 45 41 52 20 03 03 FC 48 48 B7 09 09 F6 CE F7  LEAR ..ьHH·..цОч 
  0x2890 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52 58 43  истка порта: RXC 
  0x28A0 4C 45 41 52 2C 20 54 58 43 4C 45 41 52 20 03 03  LEAR, TXCLEAR .. 
  0x28B0 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49 6E  Таймауты: ReadIn 
  0x28C0 74 65 72 76 61 6C 3D 30 2C 20 52 65 61 64 54 6F  terval=0, ReadTo 
  0x28D0 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70  talTimeoutMultip 
  0x28E0 6C 69 65 72 3D 30 2C 20 52 65 61 64 54 6F 74 61  lier=0, ReadTota 
  0x28F0 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74  lTimeoutConstant 
  0x2900 3D 31 30 30 31 2C 20 57 72 69 74 65 54 6F 74 61  =1001, WriteTota 
  0x2910 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69  lTimeoutMultipli 
  0x2920 65 72 3D 30 2C 20 57 72 69 74 65 54 6F 74 61 6C  er=0, WriteTotal 
  0x2930 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D  TimeoutConstant= 
  0x2940 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A  0 Очистка порта: 
  0x2950 20 54 58 43 4C 45 41 52 20 03 FC FC D2 E0 E9 EC   TXCLEAR .ььТайм 
  0x2960 E0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74 65 72 76  ауты: ReadInterv 
  0x2970 61 6C 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54  al=0, ReadTotalT 
  0x2980 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72  imeoutMultiplier 
  0x2990 3D 36 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69  =60, ReadTotalTi 
  0x29A0 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 31 2C  meoutConstant=1, 
  0x29B0 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F   WriteTotalTimeo 
  0x29C0 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20  utMultiplier=0,  
  0x29D0 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75  WriteTotalTimeou 
  0x29E0 74 43 6F 6E 73 74 61 6E 74 3D 30 20 CE F7 E8 F1  tConstant=0 Очис 
  0x29F0 F2 EA E0 20 EF EE F0 F2 E0 3A 20 54 58 43 4C 45  тка порта: TXCLE 
  0x2A00 41 52 20 49 B6 B6 09 F6 F6 03 D2 E0 E9 EC E0 F3  AR I¶¶.цц.Таймау 
  0x2A10 F2 FB 3A 20 52 65 61 64 49 6E 74 65 72 76 61 6C  ты: ReadInterval 
  0x2A20 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D  =0, ReadTotalTim 
  0x2A30 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 36  eoutMultiplier=6 
  0x2A40 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65  0, ReadTotalTime 
  0x2A50 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 31 2C 20 57  outConstant=1, W 
  0x2A60 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74  riteTotalTimeout 
  0x2A70 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20 57 72  Multiplier=0, Wr 
  0x2A80 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43  iteTotalTimeoutC 
  0x2A90 6F 6E 73 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA  onstant=0 Очистк 
  0x2AA0 E0 20 EF EE F0 F2 E0 3A 20 52 58 43 4C 45 41 52  а порта: RXCLEAR 
  0x2AB0 2C 20 54 58 43 4C 45 41 52 20 03 03 FC 4A 4A B5  , TXCLEAR ..ьJJµ 
  0x2AC0 09 09 F6 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0  ..цОчистка порта 
  0x2AD0 3A 20 52 58 43 4C 45 41 52 2C 20 54 58 43 4C 45  : RXCLEAR, TXCLE 
  0x2AE0 41 52 20 03 03 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52  AR ..Таймауты: R 
  0x2AF0 65 61 64 49 6E 74 65 72 76 61 6C 3D 30 2C 20 52  eadInterval=0, R 
  0x2B00 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D  eadTotalTimeoutM 
  0x2B10 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20 52 65 61  ultiplier=0, Rea 
  0x2B20 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E  dTotalTimeoutCon 
  0x2B30 73 74 61 6E 74 3D 31 30 30 31 2C 20 57 72 69 74  stant=1001, Writ 
  0x2B40 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C  eTotalTimeoutMul 
  0x2B50 74 69 70 6C 69 65 72 3D 30 2C 20 57 72 69 74 65  tiplier=0, Write 
  0x2B60 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73  TotalTimeoutCons 
  0x2B70 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF  tant=0 Очистка п 
  0x2B80 EE F0 F2 E0 3A 20 54 58 43 4C 45 41 52 20 03 FC  орта: TXCLEAR .ь 
  0x2B90 FC D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49  ьТаймауты: ReadI 
  0x2BA0 6E 74 65 72 76 61 6C 3D 30 2C 20 52 65 61 64 54  nterval=0, ReadT 
  0x2BB0 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69  otalTimeoutMulti 
  0x2BC0 70 6C 69 65 72 3D 36 30 2C 20 52 65 61 64 54 6F  plier=60, ReadTo 
  0x2BD0 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61  talTimeoutConsta 
  0x2BE0 6E 74 3D 31 2C 20 57 72 69 74 65 54 6F 74 61 6C  nt=1, WriteTotal 
  0x2BF0 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65  TimeoutMultiplie 
  0x2C00 72 3D 30 2C 20 57 72 69 74 65 54 6F 74 61 6C 54  r=0, WriteTotalT 
  0x2C10 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30  imeoutConstant=0 
  0x2C20 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20   Очистка порта:  
  0x2C30 54 58 43 4C 45 41 52 20 4B B4 B4 09 F6 F6 03 D2  TXCLEAR Kґґ.цц.Т 
  0x2C40 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74  аймауты: ReadInt 
  0x2C50 65 72 76 61 6C 3D 30 2C 20 52 65 61 64 54 6F 74  erval=0, ReadTot 
  0x2C60 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C  alTimeoutMultipl 
  0x2C70 69 65 72 3D 36 30 2C 20 52 65 61 64 54 6F 74 61  ier=60, ReadTota 
  0x2C80 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74  lTimeoutConstant 
  0x2C90 3D 31 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69  =1, WriteTotalTi 
  0x2CA0 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D  meoutMultiplier= 
  0x2CB0 30 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D  0, WriteTotalTim 
  0x2CC0 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30 20 CE  eoutConstant=0 О 
  0x2CD0 F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52 58  чистка порта: RX 
  0x2CE0 43 4C 45 41 52 2C 20 54 58 43 4C 45 41 52 20 03  CLEAR, TXCLEAR . 
  0x2CF0 03 FC 4C 4C B3 09 09 F6 CE F7 E8 F1 F2 EA E0 20  .ьLLі..цОчистка  
  0x2D00 EF EE F0 F2 E0 3A 20 52 58 43 4C 45 41 52 2C 20  порта: RXCLEAR,  
  0x2D10 54 58 43 4C 45 41 52 20 03 03 D2 E0 E9 EC E0 F3  TXCLEAR ..Таймау 
  0x2D20 F2 FB 3A 20 52 65 61 64 49 6E 74 65 72 76 61 6C  ты: ReadInterval 
  0x2D30 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D  =0, ReadTotalTim 
  0x2D40 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30  eoutMultiplier=0 
  0x2D50 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F  , ReadTotalTimeo 
  0x2D60 75 74 43 6F 6E 73 74 61 6E 74 3D 31 30 30 31 2C  utConstant=1001, 
  0x2D70 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F   WriteTotalTimeo 
  0x2D80 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20  utMultiplier=0,  
  0x2D90 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75  WriteTotalTimeou 
  0x2DA0 74 43 6F 6E 73 74 61 6E 74 3D 30 20 CE F7 E8 F1  tConstant=0 Очис 
  0x2DB0 F2 EA E0 20 EF EE F0 F2 E0 3A 20 54 58 43 4C 45  тка порта: TXCLE 
  0x2DC0 41 52 20 03 FC FC D2 E0 E9 EC E0 F3 F2 FB 3A 20  AR .ььТаймауты:  
  0x2DD0 52 65 61 64 49 6E 74 65 72 76 61 6C 3D 30 2C 20  ReadInterval=0,  
  0x2DE0 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74  ReadTotalTimeout 
  0x2DF0 4D 75 6C 74 69 70 6C 69 65 72 3D 36 30 2C 20 52  Multiplier=60, R 
  0x2E00 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43  eadTotalTimeoutC 
  0x2E10 6F 6E 73 74 61 6E 74 3D 31 2C 20 57 72 69 74 65  onstant=1, Write 
  0x2E20 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74  TotalTimeoutMult 
  0x2E30 69 70 6C 69 65 72 3D 30 2C 20 57 72 69 74 65 54  iplier=0, WriteT 
  0x2E40 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74  otalTimeoutConst 
  0x2E50 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE  ant=0 Очистка по 
  0x2E60 F0 F2 E0 3A 20 54 58 43 4C 45 41 52 20 4D B2 B2  рта: TXCLEAR MІІ 
  0x2E70 09 F6 F6 03 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65  .цц.Таймауты: Re 
  0x2E80 61 64 49 6E 74 65 72 76 61 6C 3D 30 2C 20 52 65  adInterval=0, Re 
  0x2E90 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75  adTotalTimeoutMu 
  0x2EA0 6C 74 69 70 6C 69 65 72 3D 36 30 2C 20 52 65 61  ltiplier=60, Rea 
  0x2EB0 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E  dTotalTimeoutCon 
  0x2EC0 73 74 61 6E 74 3D 31 2C 20 57 72 69 74 65 54 6F  stant=1, WriteTo 
  0x2ED0 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70  talTimeoutMultip 
  0x2EE0 6C 69 65 72 3D 30 2C 20 57 72 69 74 65 54 6F 74  lier=0, WriteTot 
  0x2EF0 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E  alTimeoutConstan 
  0x2F00 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2  t=0 Очистка порт 
  0x2F10 E0 3A 20 52 58 43 4C 45 41 52 2C 20 54 58 43 4C  а: RXCLEAR, TXCL 
  0x2F20 45 41 52 20 03 03 FC 4E 4E B1 09 09 F6 CE F7 E8  EAR ..ьNN±..цОчи 
  0x2F30 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52 58 43 4C  стка порта: RXCL 
  0x2F40 45 41 52 2C 20 54 58 43 4C 45 41 52 20 03 03 D2  EAR, TXCLEAR ..Т 
  0x2F50 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74  аймауты: ReadInt 
  0x2F60 65 72 76 61 6C 3D 30 2C 20 52 65 61 64 54 6F 74  erval=0, ReadTot 
  0x2F70 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C  alTimeoutMultipl 
  0x2F80 69 65 72 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C  ier=0, ReadTotal 
  0x2F90 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D  TimeoutConstant= 
  0x2FA0 31 30 30 31 2C 20 57 72 69 74 65 54 6F 74 61 6C  1001, WriteTotal 
  0x2FB0 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65  TimeoutMultiplie 
  0x2FC0 72 3D 30 2C 20 57 72 69 74 65 54 6F 74 61 6C 54  r=0, WriteTotalT 
  0x2FD0 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30  imeoutConstant=0 
  0x2FE0 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20   Очистка порта:  
  0x2FF0 54 58 43 4C 45 41 52 20 03 FC FC D2 E0 E9 EC E0  TXCLEAR .ььТайма 
  0x3000 F3 F2 FB 3A 20 52 65 61 64 49 6E 74 65 72 76 61  уты: ReadInterva 
  0x3010 6C 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69  l=0, ReadTotalTi 
  0x3020 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D  meoutMultiplier= 
  0x3030 36 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D  60, ReadTotalTim 
  0x3040 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 31 2C 20  eoutConstant=1,  
  0x3050 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75  WriteTotalTimeou 
  0x3060 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20 57  tMultiplier=0, W 
  0x3070 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74  riteTotalTimeout 
  0x3080 43 6F 6E 73 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2  Constant=0 Очист 
  0x3090 EA E0 20 EF EE F0 F2 E0 3A 20 54 58 43 4C 45 41  ка порта: TXCLEA 
  0x30A0 52 20 4F B0 B0 09 F6 F6 03 D2 E0 E9 EC E0 F3 F2  R O°°.цц.Таймаут 
  0x30B0 FB 3A 20 52 65 61 64 49 6E 74 65 72 76 61 6C 3D  ы: ReadInterval= 
  0x30C0 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65  0, ReadTotalTime 
  0x30D0 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 36 30  outMultiplier=60 
  0x30E0 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F  , ReadTotalTimeo 
  0x30F0 75 74 43 6F 6E 73 74 61 6E 74 3D 31 2C 20 57 72  utConstant=1, Wr 
  0x3100 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D  iteTotalTimeoutM 
  0x3110 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20 57 72 69  ultiplier=0, Wri 
  0x3120 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F  teTotalTimeoutCo 
  0x3130 6E 73 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0  nstant=0 Очистка 
  0x3140 20 EF EE F0 F2 E0 3A 20 52 58 43 4C 45 41 52 2C   порта: RXCLEAR, 
  0x3150 20 54 58 43 4C 45 41 52 20 03 03 FC 50 50 AF 09   TXCLEAR ..ьPPЇ. 
  0x3160 09 F6 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A  .цОчистка порта: 
  0x3170 20 52 58 43 4C 45 41 52 2C 20 54 58 43 4C 45 41   RXCLEAR, TXCLEA 
  0x3180 52 20 03 03 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65  R ..Таймауты: Re 
  0x3190 61 64 49 6E 74 65 72 76 61 6C 3D 30 2C 20 52 65  adInterval=0, Re 
  0x31A0 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75  adTotalTimeoutMu 
  0x31B0 6C 74 69 70 6C 69 65 72 3D 30 2C 20 52 65 61 64  ltiplier=0, Read 
  0x31C0 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73  TotalTimeoutCons 
  0x31D0 74 61 6E 74 3D 31 30 30 31 2C 20 57 72 69 74 65  tant=1001, Write 
  0x31E0 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74  TotalTimeoutMult 
  0x31F0 69 70 6C 69 65 72 3D 30 2C 20 57 72 69 74 65 54  iplier=0, WriteT 
  0x3200 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74  otalTimeoutConst 
  0x3210 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE  ant=0 Очистка по 
  0x3220 F0 F2 E0 3A 20 54 58 43 4C 45 41 52 20 03 FC FC  рта: TXCLEAR .ьь 
  0x3230 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49 6E  Таймауты: ReadIn 
  0x3240 74 65 72 76 61 6C 3D 30 2C 20 52 65 61 64 54 6F  terval=0, ReadTo 
  0x3250 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70  talTimeoutMultip 
  0x3260 6C 69 65 72 3D 36 30 2C 20 52 65 61 64 54 6F 74  lier=60, ReadTot 
  0x3270 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E  alTimeoutConstan 
  0x3280 74 3D 31 2C 20 57 72 69 74 65 54 6F 74 61 6C 54  t=1, WriteTotalT 
  0x3290 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72  imeoutMultiplier 
  0x32A0 3D 30 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69  =0, WriteTotalTi 
  0x32B0 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30 20  meoutConstant=0  
  0x32C0 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 54  Очистка порта: T 
  0x32D0 58 43 4C 45 41 52 20 51 AE AE 09 F6 F6 03 D2 E0  XCLEAR Q®®.цц.Та 
  0x32E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74 65  ймауты: ReadInte 
  0x32F0 72 76 61 6C 3D 30 2C 20 52 65 61 64 54 6F 74 61  rval=0, ReadTota 
  0x3300 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69  lTimeoutMultipli 
  0x3310 65 72 3D 36 30 2C 20 52 65 61 64 54 6F 74 61 6C  er=60, ReadTotal 
  0x3320 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D  TimeoutConstant= 
  0x3330 31 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D  1, WriteTotalTim 
  0x3340 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30  eoutMultiplier=0 
  0x3350 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65  , WriteTotalTime 
  0x3360 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30 20 CE F7  outConstant=0 Оч 
  0x3370 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52 58 43  истка порта: RXC 
  0x3380 4C 45 41 52 2C 20 54 58 43 4C 45 41 52 20 03 03  LEAR, TXCLEAR .. 
  0x3390 FC 52 52 AD 12 12 ED CE F7 E8 F1 F2 EA E0 20 EF  ьRR¬..нОчистка п 
  0x33A0 EE F0 F2 E0 3A 20 52 58 43 4C 45 41 52 2C 20 54  орта: RXCLEAR, T 
  0x33B0 58 43 4C 45 41 52 20 03 03 D2 E0 E9 EC E0 F3 F2  XCLEAR ..Таймаут 
  0x33C0 FB 3A 20 52 65 61 64 49 6E 74 65 72 76 61 6C 3D  ы: ReadInterval= 
  0x33D0 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65  0, ReadTotalTime 
  0x33E0 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C  outMultiplier=0, 
  0x33F0 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75   ReadTotalTimeou 
  0x3400 74 43 6F 6E 73 74 61 6E 74 3D 31 30 30 31 2C 20  tConstant=1001,  
  0x3410 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75  WriteTotalTimeou 
  0x3420 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20 57  tMultiplier=0, W 
  0x3430 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74  riteTotalTimeout 
  0x3440 43 6F 6E 73 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2  Constant=0 Очист 
  0x3450 EA E0 20 EF EE F0 F2 E0 3A 20 54 58 43 4C 45 41  ка порта: TXCLEA 
  0x3460 52 20 0D F2 F2 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52  R .ттТаймауты: R 
  0x3470 65 61 64 49 6E 74 65 72 76 61 6C 3D 30 2C 20 52  eadInterval=0, R 
  0x3480 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D  eadTotalTimeoutM 
  0x3490 75 6C 74 69 70 6C 69 65 72 3D 36 30 2C 20 52 65  ultiplier=60, Re 
  0x34A0 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F  adTotalTimeoutCo 
  0x34B0 6E 73 74 61 6E 74 3D 31 2C 20 57 72 69 74 65 54  nstant=1, WriteT 
  0x34C0 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69  otalTimeoutMulti 
  0x34D0 70 6C 69 65 72 3D 30 2C 20 57 72 69 74 65 54 6F  plier=0, WriteTo 
  0x34E0 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61  talTimeoutConsta 
  0x34F0 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0  nt=0 Очистка пор 
  0x3500 F2 E0 3A 20 54 58 43 4C 45 41 52 20 53 AC AC F4  та: TXCLEAR S¬¬ф 
  0x3510 0B 0B FF 00 00 80 7F 7F FF 00 00 20 DF DF 34 CB  ..я..Ђя.. ЯЯ4Л 
  0x3520 CB 20 DF DF 80 7F 7F 00 FF FF 10 EF EF F0 0F 0F  Л ЯЯЂ.яя.ппр.. 
  0x3530 03 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49  .Таймауты: ReadI 
  0x3540 6E 74 65 72 76 61 6C 3D 30 2C 20 52 65 61 64 54  nterval=0, ReadT 
  0x3550 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69  otalTimeoutMulti 
  0x3560 70 6C 69 65 72 3D 36 30 2C 20 52 65 61 64 54 6F  plier=60, ReadTo 
  0x3570 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61  talTimeoutConsta 
  0x3580 6E 74 3D 31 2C 20 57 72 69 74 65 54 6F 74 61 6C  nt=1, WriteTotal 
  0x3590 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65  TimeoutMultiplie 
  0x35A0 72 3D 30 2C 20 57 72 69 74 65 54 6F 74 61 6C 54  r=0, WriteTotalT 
  0x35B0 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30  imeoutConstant=0 
  0x35C0 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20   Очистка порта:  
  0x35D0 52 58 43 4C 45 41 52 2C 20 54 58 43 4C 45 41 52  RXCLEAR, TXCLEAR 
  0x35E0 20 03 03 FC 54 54 AB 12 12 ED CE F7 E8 F1 F2 EA   ..ьTT«..нОчистк 
  0x35F0 E0 20 EF EE F0 F2 E0 3A 20 52 58 43 4C 45 41 52  а порта: RXCLEAR 
  0x3600 2C 20 54 58 43 4C 45 41 52 20 03 03 D2 E0 E9 EC  , TXCLEAR ..Тайм 
  0x3610 E0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74 65 72 76  ауты: ReadInterv 
  0x3620 61 6C 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54  al=0, ReadTotalT 
  0x3630 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72  imeoutMultiplier 
  0x3640 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D  =0, ReadTotalTim 
  0x3650 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 31 30 30  eoutConstant=100 
  0x3660 31 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D  1, WriteTotalTim 
  0x3670 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30  eoutMultiplier=0 
  0x3680 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65  , WriteTotalTime 
  0x3690 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30 20 CE F7  outConstant=0 Оч 
  0x36A0 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 54 58 43  истка порта: TXC 
  0x36B0 4C 45 41 52 20 0D F2 F2 D2 E0 E9 EC E0 F3 F2 FB  LEAR .ттТаймауты 
  0x36C0 3A 20 52 65 61 64 49 6E 74 65 72 76 61 6C 3D 30  : ReadInterval=0 
  0x36D0 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F  , ReadTotalTimeo 
  0x36E0 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 36 30 2C  utMultiplier=60, 
  0x36F0 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75   ReadTotalTimeou 
  0x3700 74 43 6F 6E 73 74 61 6E 74 3D 31 2C 20 57 72 69  tConstant=1, Wri 
  0x3710 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75  teTotalTimeoutMu 
  0x3720 6C 74 69 70 6C 69 65 72 3D 30 2C 20 57 72 69 74  ltiplier=0, Writ 
  0x3730 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E  eTotalTimeoutCon 
  0x3740 73 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20  stant=0 Очистка  
  0x3750 EF EE F0 F2 E0 3A 20 54 58 43 4C 45 41 52 20 55  порта: TXCLEAR U 
  0x3760 AA AA F4 0B 0B FF 00 00 80 7F 7F FF 00 00 20 DF  ЄЄф..я..Ђя.. Я 
  0x3770 DF 34 CB CB 20 DF DF 80 7F 7F 00 FF FF 10 EF EF  Я4ЛЛ ЯЯЂ.яя.пп 
  0x3780 F0 0F 0F 03 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65  р...Таймауты: Re 
  0x3790 61 64 49 6E 74 65 72 76 61 6C 3D 30 2C 20 52 65  adInterval=0, Re 
  0x37A0 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75  adTotalTimeoutMu 
  0x37B0 6C 74 69 70 6C 69 65 72 3D 36 30 2C 20 52 65 61  ltiplier=60, Rea 
  0x37C0 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E  dTotalTimeoutCon 
  0x37D0 73 74 61 6E 74 3D 31 2C 20 57 72 69 74 65 54 6F  stant=1, WriteTo 
  0x37E0 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70  talTimeoutMultip 
  0x37F0 6C 69 65 72 3D 30 2C 20 57 72 69 74 65 54 6F 74  lier=0, WriteTot 
  0x3800 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E  alTimeoutConstan 
  0x3810 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2  t=0 Очистка порт 
  0x3820 E0 3A 20 52 58 43 4C 45 41 52 2C 20 54 58 43 4C  а: RXCLEAR, TXCL 
  0x3830 45 41 52 20 03 03 FC 56 56 A9 12 12 ED CE F7 E8  EAR ..ьVV©..нОчи 
  0x3840 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52 58 43 4C  стка порта: RXCL 
  0x3850 45 41 52 2C 20 54 58 43 4C 45 41 52 20 03 03 D2  EAR, TXCLEAR ..Т 
  0x3860 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74  аймауты: ReadInt 
  0x3870 65 72 76 61 6C 3D 30 2C 20 52 65 61 64 54 6F 74  erval=0, ReadTot 
  0x3880 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C  alTimeoutMultipl 
  0x3890 69 65 72 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C  ier=0, ReadTotal 
  0x38A0 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D  TimeoutConstant= 
  0x38B0 31 30 30 31 2C 20 57 72 69 74 65 54 6F 74 61 6C  1001, WriteTotal 
  0x38C0 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65  TimeoutMultiplie 
  0x38D0 72 3D 30 2C 20 57 72 69 74 65 54 6F 74 61 6C 54  r=0, WriteTotalT 
  0x38E0 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30  imeoutConstant=0 
  0x38F0 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20   Очистка порта:  
  0x3900 54 58 43 4C 45 41 52 20 0D F2 F2 D2 E0 E9 EC E0  TXCLEAR .ттТайма 
  0x3910 F3 F2 FB 3A 20 52 65 61 64 49 6E 74 65 72 76 61  уты: ReadInterva 
  0x3920 6C 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69  l=0, ReadTotalTi 
  0x3930 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D  meoutMultiplier= 
  0x3940 36 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D  60, ReadTotalTim 
  0x3950 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 31 2C 20  eoutConstant=1,  
  0x3960 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75  WriteTotalTimeou 
  0x3970 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20 57  tMultiplier=0, W 
  0x3980 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74  riteTotalTimeout 
  0x3990 43 6F 6E 73 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2  Constant=0 Очист 
  0x39A0 EA E0 20 EF EE F0 F2 E0 3A 20 54 58 43 4C 45 41  ка порта: TXCLEA 
  0x39B0 52 20 57 A8 A8 F4 0B 0B FF 00 00 7F 80 80 FF 00  R WЁЁф..я..ЂЂя. 
  0x39C0 00 20 DF DF 34 CB CB 20 DF DF 80 7F 7F 00 FF FF  . ЯЯ4ЛЛ ЯЯЂ.яя 
  0x39D0 10 EF EF F0 0F 0F 03 D2 E0 E9 EC E0 F3 F2 FB 3A  .ппр...Таймауты: 
  0x39E0 20 52 65 61 64 49 6E 74 65 72 76 61 6C 3D 30 2C   ReadInterval=0, 
  0x39F0 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75   ReadTotalTimeou 
  0x3A00 74 4D 75 6C 74 69 70 6C 69 65 72 3D 36 30 2C 20  tMultiplier=60,  
  0x3A10 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74  ReadTotalTimeout 
  0x3A20 43 6F 6E 73 74 61 6E 74 3D 31 2C 20 57 72 69 74  Constant=1, Writ 
  0x3A30 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C  eTotalTimeoutMul 
  0x3A40 74 69 70 6C 69 65 72 3D 30 2C 20 57 72 69 74 65  tiplier=0, Write 
  0x3A50 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73  TotalTimeoutCons 
  0x3A60 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF  tant=0 Очистка п 
  0x3A70 EE F0 F2 E0 3A 20 52 58 43 4C 45 41 52 2C 20 54  орта: RXCLEAR, T 
  0x3A80 58 43 4C 45 41 52 20 03 03 FC 58 58 A7 12 12 ED  XCLEAR ..ьXX§..н 
  0x3A90 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52  Очистка порта: R 
  0x3AA0 58 43 4C 45 41 52 2C 20 54 58 43 4C 45 41 52 20  XCLEAR, TXCLEAR  
  0x3AB0 03 03 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64  ..Таймауты: Read 
  0x3AC0 49 6E 74 65 72 76 61 6C 3D 30 2C 20 52 65 61 64  Interval=0, Read 
  0x3AD0 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74  TotalTimeoutMult 
  0x3AE0 69 70 6C 69 65 72 3D 30 2C 20 52 65 61 64 54 6F  iplier=0, ReadTo 
  0x3AF0 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61  talTimeoutConsta 
  0x3B00 6E 74 3D 31 30 30 31 2C 20 57 72 69 74 65 54 6F  nt=1001, WriteTo 
  0x3B10 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70  talTimeoutMultip 
  0x3B20 6C 69 65 72 3D 30 2C 20 57 72 69 74 65 54 6F 74  lier=0, WriteTot 
  0x3B30 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E  alTimeoutConstan 
  0x3B40 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2  t=0 Очистка порт 
  0x3B50 E0 3A 20 54 58 43 4C 45 41 52 20 0D F2 F2 D2 E0  а: TXCLEAR .ттТа 
  0x3B60 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74 65  ймауты: ReadInte 
  0x3B70 72 76 61 6C 3D 30 2C 20 52 65 61 64 54 6F 74 61  rval=0, ReadTota 
  0x3B80 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69  lTimeoutMultipli 
  0x3B90 65 72 3D 36 30 2C 20 52 65 61 64 54 6F 74 61 6C  er=60, ReadTotal 
  0x3BA0 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D  TimeoutConstant= 
  0x3BB0 31 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D  1, WriteTotalTim 
  0x3BC0 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30  eoutMultiplier=0 
  0x3BD0 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65  , WriteTotalTime 
  0x3BE0 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30 20 CE F7  outConstant=0 Оч 
  0x3BF0 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 54 58 43  истка порта: TXC 
  0x3C00 4C 45 41 52 20 59 A6 A6 F4 0B 0B FF 00 00 80 7F  LEAR Y¦¦ф..я..Ђ 
  0x3C10 7F FF 00 00 20 DF DF 34 CB CB 20 DF DF 80 7F 7F  я.. ЯЯ4ЛЛ ЯЯЂ 
  0x3C20 00 FF FF 10 EF EF F0 0F 0F 03 D2 E0 E9 EC E0 F3  .яя.ппр...Таймау 
  0x3C30 F2 FB 3A 20 52 65 61 64 49 6E 74 65 72 76 61 6C  ты: ReadInterval 
  0x3C40 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D  =0, ReadTotalTim 
  0x3C50 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 36  eoutMultiplier=6 
  0x3C60 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65  0, ReadTotalTime 
  0x3C70 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 31 2C 20 57  outConstant=1, W 
  0x3C80 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74  riteTotalTimeout 
  0x3C90 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20 57 72  Multiplier=0, Wr 
  0x3CA0 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43  iteTotalTimeoutC 
  0x3CB0 6F 6E 73 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA  onstant=0 Очистк 
  0x3CC0 E0 20 EF EE F0 F2 E0 3A 20 52 58 43 4C 45 41 52  а порта: RXCLEAR 
  0x3CD0 2C 20 54 58 43 4C 45 41 52 20 03 03 FC 5A 5A A5  , TXCLEAR ..ьZZҐ 
  0x3CE0 12 12 ED CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0  ..нОчистка порта 
  0x3CF0 3A 20 52 58 43 4C 45 41 52 2C 20 54 58 43 4C 45  : RXCLEAR, TXCLE 
  0x3D00 41 52 20 03 03 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52  AR ..Таймауты: R 
  0x3D10 65 61 64 49 6E 74 65 72 76 61 6C 3D 30 2C 20 52  eadInterval=0, R 
  0x3D20 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D  eadTotalTimeoutM 
  0x3D30 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20 52 65 61  ultiplier=0, Rea 
  0x3D40 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E  dTotalTimeoutCon 
  0x3D50 73 74 61 6E 74 3D 31 30 30 31 2C 20 57 72 69 74  stant=1001, Writ 
  0x3D60 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C  eTotalTimeoutMul 
  0x3D70 74 69 70 6C 69 65 72 3D 30 2C 20 57 72 69 74 65  tiplier=0, Write 
  0x3D80 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73  TotalTimeoutCons 
  0x3D90 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF  tant=0 Очистка п 
  0x3DA0 EE F0 F2 E0 3A 20 54 58 43 4C 45 41 52 20 0D F2  орта: TXCLEAR .т 
  0x3DB0 F2 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49  тТаймауты: ReadI 
  0x3DC0 6E 74 65 72 76 61 6C 3D 30 2C 20 52 65 61 64 54  nterval=0, ReadT 
  0x3DD0 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69  otalTimeoutMulti 
  0x3DE0 70 6C 69 65 72 3D 36 30 2C 20 52 65 61 64 54 6F  plier=60, ReadTo 
  0x3DF0 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61  talTimeoutConsta 
  0x3E00 6E 74 3D 31 2C 20 57 72 69 74 65 54 6F 74 61 6C  nt=1, WriteTotal 
  0x3E10 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65  TimeoutMultiplie 
  0x3E20 72 3D 30 2C 20 57 72 69 74 65 54 6F 74 61 6C 54  r=0, WriteTotalT 
  0x3E30 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30  imeoutConstant=0 
  0x3E40 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20   Очистка порта:  
  0x3E50 54 58 43 4C 45 41 52 20 5B A4 A4 F4 0B 0B FF 00  TXCLEAR [¤¤ф..я. 
  0x3E60 00 7F 80 80 FF 00 00 20 DF DF 34 CB CB 20 DF DF  .ЂЂя.. ЯЯ4ЛЛ ЯЯ 
  0x3E70 80 7F 7F 00 FF FF 10 EF EF F0 0F 0F 03 D2 E0 E9  Ђ.яя.ппр...Тай 
  0x3E80 EC E0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74 65 72  мауты: ReadInter 
  0x3E90 76 61 6C 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C  val=0, ReadTotal 
  0x3EA0 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65  TimeoutMultiplie 
  0x3EB0 72 3D 36 30 2C 20 52 65 61 64 54 6F 74 61 6C 54  r=60, ReadTotalT 
  0x3EC0 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 31  imeoutConstant=1 
  0x3ED0 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65  , WriteTotalTime 
  0x3EE0 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C  outMultiplier=0, 
  0x3EF0 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F   WriteTotalTimeo 
  0x3F00 75 74 43 6F 6E 73 74 61 6E 74 3D 30 20 CE F7 E8  utConstant=0 Очи 
  0x3F10 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52 58 43 4C  стка порта: RXCL 
  0x3F20 45 41 52 2C 20 54 58 43 4C 45 41 52 20 03 03 FC  EAR, TXCLEAR ..ь 
  0x3F30 5C 5C A3 12 12 ED CE F7 E8 F1 F2 EA E0 20 EF EE  \\Ј..нОчистка по 
  0x3F40 F0 F2 E0 3A 20 52 58 43 4C 45 41 52 2C 20 54 58  рта: RXCLEAR, TX 
  0x3F50 43 4C 45 41 52 20 03 03 D2 E0 E9 EC E0 F3 F2 FB  CLEAR ..Таймауты 
  0x3F60 3A 20 52 65 61 64 49 6E 74 65 72 76 61 6C 3D 30  : ReadInterval=0 
  0x3F70 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F  , ReadTotalTimeo 
  0x3F80 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20  utMultiplier=0,  
  0x3F90 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74  ReadTotalTimeout 
  0x3FA0 43 6F 6E 73 74 61 6E 74 3D 31 30 30 31 2C 20 57  Constant=1001, W 
  0x3FB0 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74  riteTotalTimeout 
  0x3FC0 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20 57 72  Multiplier=0, Wr 
  0x3FD0 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43  iteTotalTimeoutC 
  0x3FE0 6F 6E 73 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA  onstant=0 Очистк 
  0x3FF0 E0 20 EF EE F0 F2 E0 3A 20 54 58 43 4C 45 41 52  а порта: TXCLEAR 
  0x4000 20 0D F2 F2 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65   .ттТаймауты: Re 
  0x4010 61 64 49 6E 74 65 72 76 61 6C 3D 30 2C 20 52 65  adInterval=0, Re 
  0x4020 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75  adTotalTimeoutMu 
  0x4030 6C 74 69 70 6C 69 65 72 3D 36 30 2C 20 52 65 61  ltiplier=60, Rea 
  0x4040 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E  dTotalTimeoutCon 
  0x4050 73 74 61 6E 74 3D 31 2C 20 57 72 69 74 65 54 6F  stant=1, WriteTo 
  0x4060 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70  talTimeoutMultip 
  0x4070 6C 69 65 72 3D 30 2C 20 57 72 69 74 65 54 6F 74  lier=0, WriteTot 
  0x4080 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E  alTimeoutConstan 
  0x4090 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2  t=0 Очистка порт 
  0x40A0 E0 3A 20 54 58 43 4C 45 41 52 20 5D A2 A2 F4 0B  а: TXCLEAR ]ўўф. 
  0x40B0 0B FF 00 00 80 7F 7F FF 00 00 20 DF DF 34 CB CB  .я..Ђя.. ЯЯ4ЛЛ 
  0x40C0 20 DF DF 80 7F 7F 00 FF FF 10 EF EF F0 0F 0F 03   ЯЯЂ.яя.ппр... 
  0x40D0 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49 6E  Таймауты: ReadIn 
  0x40E0 74 65 72 76 61 6C 3D 30 2C 20 52 65 61 64 54 6F  terval=0, ReadTo 
  0x40F0 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70  talTimeoutMultip 
  0x4100 6C 69 65 72 3D 36 30 2C 20 52 65 61 64 54 6F 74  lier=60, ReadTot 
  0x4110 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E  alTimeoutConstan 
  0x4120 74 3D 31 2C 20 57 72 69 74 65 54 6F 74 61 6C 54  t=1, WriteTotalT 
  0x4130 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72  imeoutMultiplier 
  0x4140 3D 30 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69  =0, WriteTotalTi 
  0x4150 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30 20  meoutConstant=0  
  0x4160 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52  Очистка порта: R 
  0x4170 58 43 4C 45 41 52 2C 20 54 58 43 4C 45 41 52 20  XCLEAR, TXCLEAR  
  0x4180 03 03 FC 5E 5E A1 12 12 ED CE F7 E8 F1 F2 EA E0  ..ь^^Ў..нОчистка 
  0x4190 20 EF EE F0 F2 E0 3A 20 52 58 43 4C 45 41 52 2C   порта: RXCLEAR, 
  0x41A0 20 54 58 43 4C 45 41 52 20 03 03 D2 E0 E9 EC E0   TXCLEAR ..Тайма 
  0x41B0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74 65 72 76 61  уты: ReadInterva 
  0x41C0 6C 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69  l=0, ReadTotalTi 
  0x41D0 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D  meoutMultiplier= 
  0x41E0 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65  0, ReadTotalTime 
  0x41F0 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 31 30 30 31  outConstant=1001 
  0x4200 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65  , WriteTotalTime 
  0x4210 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C  outMultiplier=0, 
  0x4220 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F   WriteTotalTimeo 
  0x4230 75 74 43 6F 6E 73 74 61 6E 74 3D 30 20 CE F7 E8  utConstant=0 Очи 
  0x4240 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 54 58 43 4C  стка порта: TXCL 
  0x4250 45 41 52 20 0D F2 F2 D2 E0 E9 EC E0 F3 F2 FB 3A  EAR .ттТаймауты: 
  0x4260 20 52 65 61 64 49 6E 74 65 72 76 61 6C 3D 30 2C   ReadInterval=0, 
  0x4270 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75   ReadTotalTimeou 
  0x4280 74 4D 75 6C 74 69 70 6C 69 65 72 3D 36 30 2C 20  tMultiplier=60,  
  0x4290 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74  ReadTotalTimeout 
  0x42A0 43 6F 6E 73 74 61 6E 74 3D 31 2C 20 57 72 69 74  Constant=1, Writ 
  0x42B0 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C  eTotalTimeoutMul 
  0x42C0 74 69 70 6C 69 65 72 3D 30 2C 20 57 72 69 74 65  tiplier=0, Write 
  0x42D0 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73  TotalTimeoutCons 
  0x42E0 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF  tant=0 Очистка п 
  0x42F0 EE F0 F2 E0 3A 20 54 58 43 4C 45 41 52 20 5F A0  орта: TXCLEAR _  
  0x4300 A0 F4 0B 0B FF 00 00 80 7F 7F FF 00 00 20 DF DF   ф..я..Ђя.. ЯЯ 
  0x4310 34 CB CB 20 DF DF 80 7F 7F 00 FF FF 10 EF EF F0  4ЛЛ ЯЯЂ.яя.ппр 
  0x4320 0F 0F 03 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61  ...Таймауты: Rea 
  0x4330 64 49 6E 74 65 72 76 61 6C 3D 30 2C 20 52 65 61  dInterval=0, Rea 
  0x4340 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C  dTotalTimeoutMul 
  0x4350 74 69 70 6C 69 65 72 3D 36 30 2C 20 52 65 61 64  tiplier=60, Read 
  0x4360 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73  TotalTimeoutCons 
  0x4370 74 61 6E 74 3D 31 2C 20 57 72 69 74 65 54 6F 74  tant=1, WriteTot 
  0x4380 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C  alTimeoutMultipl 
  0x4390 69 65 72 3D 30 2C 20 57 72 69 74 65 54 6F 74 61  ier=0, WriteTota 
  0x43A0 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74  lTimeoutConstant 
  0x43B0 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0  =0 Очистка порта 
  0x43C0 3A 20 52 58 43 4C 45 41 52 2C 20 54 58 43 4C 45  : RXCLEAR, TXCLE 
  0x43D0 41 52 20 03 03 FC 60 60 9F 12 12 ED CE F7 E8 F1  AR ..ь``џ..нОчис 
  0x43E0 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52 58 43 4C 45  тка порта: RXCLE 
  0x43F0 41 52 2C 20 54 58 43 4C 45 41 52 20 03 03 D2 E0  AR, TXCLEAR ..Та 
  0x4400 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74 65  ймауты: ReadInte 
  0x4410 72 76 61 6C 3D 30 2C 20 52 65 61 64 54 6F 74 61  rval=0, ReadTota 
  0x4420 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69  lTimeoutMultipli 
  0x4430 65 72 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54  er=0, ReadTotalT 
  0x4440 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 31  imeoutConstant=1 
  0x4450 30 30 31 2C 20 57 72 69 74 65 54 6F 74 61 6C 54  001, WriteTotalT 
  0x4460 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72  imeoutMultiplier 
  0x4470 3D 30 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69  =0, WriteTotalTi 
  0x4480 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30 20  meoutConstant=0  
  0x4490 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 54  Очистка порта: T 
  0x44A0 58 43 4C 45 41 52 20 0D F2 F2 D2 E0 E9 EC E0 F3  XCLEAR .ттТаймау 
  0x44B0 F2 FB 3A 20 52 65 61 64 49 6E 74 65 72 76 61 6C  ты: ReadInterval 
  0x44C0 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D  =0, ReadTotalTim 
  0x44D0 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 36  eoutMultiplier=6 
  0x44E0 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65  0, ReadTotalTime 
  0x44F0 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 31 2C 20 57  outConstant=1, W 
  0x4500 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74  riteTotalTimeout 
  0x4510 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20 57 72  Multiplier=0, Wr 
  0x4520 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43  iteTotalTimeoutC 
  0x4530 6F 6E 73 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA  onstant=0 Очистк 
  0x4540 E0 20 EF EE F0 F2 E0 3A 20 54 58 43 4C 45 41 52  а порта: TXCLEAR 
  0x4550 20 61 9E 9E F4 0B 0B FF 00 00 80 7F 7F FF 00 00   aћћф..я..Ђя.. 
  0x4560 20 DF DF 34 CB CB 20 DF DF 80 7F 7F 00 FF FF 10   ЯЯ4ЛЛ ЯЯЂ.яя. 
  0x4570 EF EF F0 0F 0F 03 D2 E0 E9 EC E0 F3 F2 FB 3A 20  ппр...Таймауты:  
  0x4580 52 65 61 64 49 6E 74 65 72 76 61 6C 3D 30 2C 20  ReadInterval=0,  
  0x4590 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74  ReadTotalTimeout 
  0x45A0 4D 75 6C 74 69 70 6C 69 65 72 3D 36 30 2C 20 52  Multiplier=60, R 
  0x45B0 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43  eadTotalTimeoutC 
  0x45C0 6F 6E 73 74 61 6E 74 3D 31 2C 20 57 72 69 74 65  onstant=1, Write 
  0x45D0 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74  TotalTimeoutMult 
  0x45E0 69 70 6C 69 65 72 3D 30 2C 20 57 72 69 74 65 54  iplier=0, WriteT 
  0x45F0 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74  otalTimeoutConst 
  0x4600 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE  ant=0 Очистка по 
  0x4610 F0 F2 E0 3A 20 52 58 43 4C 45 41 52 2C 20 54 58  рта: RXCLEAR, TX 
  0x4620 43 4C 45 41 52 20 04 04 FB 62 62 9D 29 29 D6 01  CLEAR ..ыbbќ))Ц. 
  0x4630 01 FE CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A  .юОчистка порта: 
  0x4640 20 52 58 43 4C 45 41 52 2C 20 54 58 43 4C 45 41   RXCLEAR, TXCLEA 
  0x4650 52 20 03 03 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65  R ..Таймауты: Re 
  0x4660 61 64 49 6E 74 65 72 76 61 6C 3D 30 2C 20 52 65  adInterval=0, Re 
  0x4670 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75  adTotalTimeoutMu 
  0x4680 6C 74 69 70 6C 69 65 72 3D 30 2C 20 52 65 61 64  ltiplier=0, Read 
  0x4690 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73  TotalTimeoutCons 
  0x46A0 74 61 6E 74 3D 31 30 30 31 2C 20 57 72 69 74 65  tant=1001, Write 
  0x46B0 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74  TotalTimeoutMult 
  0x46C0 69 70 6C 69 65 72 3D 30 2C 20 57 72 69 74 65 54  iplier=0, WriteT 
  0x46D0 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74  otalTimeoutConst 
  0x46E0 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE  ant=0 Очистка по 
  0x46F0 F0 F2 E0 3A 20 54 58 43 4C 45 41 52 20 31 CE CE  рта: TXCLEAR 1ОО 
  0x4700 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49 6E  Таймауты: ReadIn 
  0x4710 74 65 72 76 61 6C 3D 30 2C 20 52 65 61 64 54 6F  terval=0, ReadTo 
  0x4720 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70  talTimeoutMultip 
  0x4730 6C 69 65 72 3D 36 30 2C 20 52 65 61 64 54 6F 74  lier=60, ReadTot 
  0x4740 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E  alTimeoutConstan 
  0x4750 74 3D 31 2C 20 57 72 69 74 65 54 6F 74 61 6C 54  t=1, WriteTotalT 
  0x4760 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72  imeoutMultiplier 
  0x4770 3D 30 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69  =0, WriteTotalTi 
  0x4780 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30 20  meoutConstant=0  
  0x4790 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 54  Очистка порта: T 
  0x47A0 58 43 4C 45 41 52 20 63 9C 9C 02 FD FD 8C 73 73  XCLEAR cњњ.ээЊss 
  0x47B0 28 D7 D7 11 EE EE A0 5F 5F 64 9B 9B 50 AF AF 44  (ЧЧ.оо __d››PЇЇD 
  0x47C0 BB BB 3A C5 C5 32 CD CD 2C D3 D3 26 D9 D9 21 DE  »»:ЕЕ2НН,УУ&ЩЩ!Ю 
  0x47D0 DE 1B E4 E4 16 E9 E9 10 EF EF 0B F4 F4 04 FB FB  Ю.дд.йй.пп.фф.ыы 
  0x47E0 00 FF FF 00 FF FF 00 FF FF 8B 74 74 1A E5 E5 11  .яя.яя.яя‹tt.ее. 
  0x47F0 EE EE FA 05 05 E1 1E 1E E0 1F 1F BC 43 43 AD 52  ооъ..б..а..јCC¬R 
  0x4800 52 96 69 69 84 7B 7B 75 8A 8A 61 9E 9E 53 AC AC  R–ii„{{uЉЉaћћS¬¬ 
  0x4810 48 B7 B7 39 C6 C6 28 D7 D7 1F E0 E0 19 E6 E6 12  H··9ЖЖ(ЧЧ.аа.жж. 
  0x4820 ED ED 00 FF FF 85 7A 7A 02 FD FD 00 FF FF 89 76  нн.яя…zz.ээ.яя‰v 
  0x4830 76 32 CD CD 00 FF FF 03 D2 E0 E9 EC E0 F3 F2 FB  v2НН.яя.Таймауты 
  0x4840 3A 20 52 65 61 64 49 6E 74 65 72 76 61 6C 3D 30  : ReadInterval=0 
  0x4850 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F  , ReadTotalTimeo 
  0x4860 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 36 30 2C  utMultiplier=60, 
  0x4870 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75   ReadTotalTimeou 
  0x4880 74 43 6F 6E 73 74 61 6E 74 3D 31 2C 20 57 72 69  tConstant=1, Wri 
  0x4890 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75  teTotalTimeoutMu 
  0x48A0 6C 74 69 70 6C 69 65 72 3D 30 2C 20 57 72 69 74  ltiplier=0, Writ 
  0x48B0 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E  eTotalTimeoutCon 
  0x48C0 73 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20  stant=0 Очистка  
  0x48D0 EF EE F0 F2 E0 3A 20 52 58 43 4C 45 41 52 2C 20  порта: RXCLEAR,  
  0x48E0 54 58 43 4C 45 41 52 20 04 04 FB 64 64 9B 29 29  TXCLEAR ..ыdd›)) 
  0x48F0 D6 01 01 FE CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2  Ц..юОчистка порт 
  0x4900 E0 3A 20 52 58 43 4C 45 41 52 2C 20 54 58 43 4C  а: RXCLEAR, TXCL 
  0x4910 45 41 52 20 03 03 D2 E0 E9 EC E0 F3 F2 FB 3A 20  EAR ..Таймауты:  
  0x4920 52 65 61 64 49 6E 74 65 72 76 61 6C 3D 30 2C 20  ReadInterval=0,  
  0x4930 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74  ReadTotalTimeout 
  0x4940 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20 52 65  Multiplier=0, Re 
  0x4950 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F  adTotalTimeoutCo 
  0x4960 6E 73 74 61 6E 74 3D 31 30 30 31 2C 20 57 72 69  nstant=1001, Wri 
  0x4970 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75  teTotalTimeoutMu 
  0x4980 6C 74 69 70 6C 69 65 72 3D 30 2C 20 57 72 69 74  ltiplier=0, Writ 
  0x4990 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E  eTotalTimeoutCon 
  0x49A0 73 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20  stant=0 Очистка  
  0x49B0 EF EE F0 F2 E0 3A 20 54 58 43 4C 45 41 52 20 07  порта: TXCLEAR . 
  0x49C0 F8 F8 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64  шшТаймауты: Read 
  0x49D0 49 6E 74 65 72 76 61 6C 3D 30 2C 20 52 65 61 64  Interval=0, Read 
  0x49E0 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74  TotalTimeoutMult 
  0x49F0 69 70 6C 69 65 72 3D 36 30 2C 20 52 65 61 64 54  iplier=60, ReadT 
  0x4A00 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74  otalTimeoutConst 
  0x4A10 61 6E 74 3D 31 2C 20 57 72 69 74 65 54 6F 74 61  ant=1, WriteTota 
  0x4A20 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69  lTimeoutMultipli 
  0x4A30 65 72 3D 30 2C 20 57 72 69 74 65 54 6F 74 61 6C  er=0, WriteTotal 
  0x4A40 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D  TimeoutConstant= 
  0x4A50 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A  0 Очистка порта: 
  0x4A60 20 54 58 43 4C 45 41 52 20 65 9A 9A F4 0B 0B FF   TXCLEAR eљљф..я 
  0x4A70 00 00 FF 00 00 9F 60 60 10 EF EF 03 D2 E0 E9 EC  ..я..џ``.пп.Тайм 
  0x4A80 E0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74 65 72 76  ауты: ReadInterv 
  0x4A90 61 6C 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54  al=0, ReadTotalT 
  0x4AA0 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72  imeoutMultiplier 
  0x4AB0 3D 36 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69  =60, ReadTotalTi 
  0x4AC0 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 31 2C  meoutConstant=1, 
  0x4AD0 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F   WriteTotalTimeo 
  0x4AE0 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20  utMultiplier=0,  
  0x4AF0 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75  WriteTotalTimeou 
  0x4B00 74 43 6F 6E 73 74 61 6E 74 3D 30 20 CE F7 E8 F1  tConstant=0 Очис 
  0x4B10 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52 58 43 4C 45  тка порта: RXCLE 
  0x4B20 41 52 2C 20 54 58 43 4C 45 41 52 20 04 04 FB 66  AR, TXCLEAR ..ыf 
  0x4B30 66 99 29 29 D6 01 01 FE CE F7 E8 F1 F2 EA E0 20  f™))Ц..юОчистка  
  0x4B40 EF EE F0 F2 E0 3A 20 52 58 43 4C 45 41 52 2C 20  порта: RXCLEAR,  
  0x4B50 54 58 43 4C 45 41 52 20 03 03 D2 E0 E9 EC E0 F3  TXCLEAR ..Таймау 
  0x4B60 F2 FB 3A 20 52 65 61 64 49 6E 74 65 72 76 61 6C  ты: ReadInterval 
  0x4B70 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D  =0, ReadTotalTim 
  0x4B80 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30  eoutMultiplier=0 
  0x4B90 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F  , ReadTotalTimeo 
  0x4BA0 75 74 43 6F 6E 73 74 61 6E 74 3D 31 30 30 31 2C  utConstant=1001, 
  0x4BB0 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F   WriteTotalTimeo 
  0x4BC0 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20  utMultiplier=0,  
  0x4BD0 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75  WriteTotalTimeou 
  0x4BE0 74 43 6F 6E 73 74 61 6E 74 3D 30 20 CE F7 E8 F1  tConstant=0 Очис 
  0x4BF0 F2 EA E0 20 EF EE F0 F2 E0 3A 20 54 58 43 4C 45  тка порта: TXCLE 
  0x4C00 41 52 20 07 F8 F8 D2 E0 E9 EC E0 F3 F2 FB 3A 20  AR .шшТаймауты:  
  0x4C10 52 65 61 64 49 6E 74 65 72 76 61 6C 3D 30 2C 20  ReadInterval=0,  
  0x4C20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74  ReadTotalTimeout 
  0x4C30 4D 75 6C 74 69 70 6C 69 65 72 3D 36 30 2C 20 52  Multiplier=60, R 
  0x4C40 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43  eadTotalTimeoutC 
  0x4C50 6F 6E 73 74 61 6E 74 3D 31 2C 20 57 72 69 74 65  onstant=1, Write 
  0x4C60 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74  TotalTimeoutMult 
  0x4C70 69 70 6C 69 65 72 3D 30 2C 20 57 72 69 74 65 54  iplier=0, WriteT 
  0x4C80 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74  otalTimeoutConst 
  0x4C90 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE  ant=0 Очистка по 
  0x4CA0 F0 F2 E0 3A 20 54 58 43 4C 45 41 52 20 67 98 98  рта: TXCLEAR g 
  0x4CB0 F4 0B 0B FF 00 00 FF 00 00 9F 60 60 10 EF EF 03  ф..я..я..џ``.пп. 
  0x4CC0 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49 6E  Таймауты: ReadIn 
  0x4CD0 74 65 72 76 61 6C 3D 30 2C 20 52 65 61 64 54 6F  terval=0, ReadTo 
  0x4CE0 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70  talTimeoutMultip 
  0x4CF0 6C 69 65 72 3D 36 30 2C 20 52 65 61 64 54 6F 74  lier=60, ReadTot 
  0x4D00 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E  alTimeoutConstan 
  0x4D10 74 3D 31 2C 20 57 72 69 74 65 54 6F 74 61 6C 54  t=1, WriteTotalT 
  0x4D20 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72  imeoutMultiplier 
  0x4D30 3D 30 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69  =0, WriteTotalTi 
  0x4D40 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30 20  meoutConstant=0  
  0x4D50 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52  Очистка порта: R 
  0x4D60 58 43 4C 45 41 52 2C 20 54 58 43 4C 45 41 52 20  XCLEAR, TXCLEAR  
  0x4D70 04 04 FB 68 68 97 29 29 D6 01 01 FE CE F7 E8 F1  ..ыhh—))Ц..юОчис 
  0x4D80 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52 58 43 4C 45  тка порта: RXCLE 
  0x4D90 41 52 2C 20 54 58 43 4C 45 41 52 20 03 03 D2 E0  AR, TXCLEAR ..Та 
  0x4DA0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74 65  ймауты: ReadInte 
  0x4DB0 72 76 61 6C 3D 30 2C 20 52 65 61 64 54 6F 74 61  rval=0, ReadTota 
  0x4DC0 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69  lTimeoutMultipli 
  0x4DD0 65 72 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54  er=0, ReadTotalT 
  0x4DE0 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 31  imeoutConstant=1 
  0x4DF0 30 30 31 2C 20 57 72 69 74 65 54 6F 74 61 6C 54  001, WriteTotalT 
  0x4E00 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72  imeoutMultiplier 
  0x4E10 3D 30 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69  =0, WriteTotalTi 
  0x4E20 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30 20  meoutConstant=0  
  0x4E30 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 54  Очистка порта: T 
  0x4E40 58 43 4C 45 41 52 20 07 F8 F8 D2 E0 E9 EC E0 F3  XCLEAR .шшТаймау 
  0x4E50 F2 FB 3A 20 52 65 61 64 49 6E 74 65 72 76 61 6C  ты: ReadInterval 
  0x4E60 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D  =0, ReadTotalTim 
  0x4E70 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 36  eoutMultiplier=6 
  0x4E80 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65  0, ReadTotalTime 
  0x4E90 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 31 2C 20 57  outConstant=1, W 
  0x4EA0 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74  riteTotalTimeout 
  0x4EB0 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20 57 72  Multiplier=0, Wr 
  0x4EC0 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43  iteTotalTimeoutC 
  0x4ED0 6F 6E 73 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA  onstant=0 Очистк 
  0x4EE0 E0 20 EF EE F0 F2 E0 3A 20 54 58 43 4C 45 41 52  а порта: TXCLEAR 
  0x4EF0 20 69 96 96 F4 0B 0B FF 00 00 FF 00 00 9F 60 60   i––ф..я..я..џ`` 
  0x4F00 10 EF EF 03 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65  .пп.Таймауты: Re 
  0x4F10 61 64 49 6E 74 65 72 76 61 6C 3D 30 2C 20 52 65  adInterval=0, Re 
  0x4F20 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75  adTotalTimeoutMu 
  0x4F30 6C 74 69 70 6C 69 65 72 3D 36 30 2C 20 52 65 61  ltiplier=60, Rea 
  0x4F40 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E  dTotalTimeoutCon 
  0x4F50 73 74 61 6E 74 3D 31 2C 20 57 72 69 74 65 54 6F  stant=1, WriteTo 
  0x4F60 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70  talTimeoutMultip 
  0x4F70 6C 69 65 72 3D 30 2C 20 57 72 69 74 65 54 6F 74  lier=0, WriteTot 
  0x4F80 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E  alTimeoutConstan 
  0x4F90 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2  t=0 Очистка порт 
  0x4FA0 E0 3A 20 52 58 43 4C 45 41 52 2C 20 54 58 43 4C  а: RXCLEAR, TXCL 
  0x4FB0 45 41 52 20 04 04 FB 6A 6A 95 29 29 D6 01 01 FE  EAR ..ыjj•))Ц..ю 
  0x4FC0 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52  Очистка порта: R 
  0x4FD0 58 43 4C 45 41 52 2C 20 54 58 43 4C 45 41 52 20  XCLEAR, TXCLEAR  
  0x4FE0 03 03 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64  ..Таймауты: Read 
  0x4FF0 49 6E 74 65 72 76 61 6C 3D 30 2C 20 52 65 61 64  Interval=0, Read 
  0x5000 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74  TotalTimeoutMult 
  0x5010 69 70 6C 69 65 72 3D 30 2C 20 52 65 61 64 54 6F  iplier=0, ReadTo 
  0x5020 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61  talTimeoutConsta 
  0x5030 6E 74 3D 31 30 30 31 2C 20 57 72 69 74 65 54 6F  nt=1001, WriteTo 
  0x5040 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70  talTimeoutMultip 
  0x5050 6C 69 65 72 3D 30 2C 20 57 72 69 74 65 54 6F 74  lier=0, WriteTot 
  0x5060 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E  alTimeoutConstan 
  0x5070 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2  t=0 Очистка порт 
  0x5080 E0 3A 20 54 58 43 4C 45 41 52 20 07 F8 F8 D2 E0  а: TXCLEAR .шшТа 
  0x5090 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74 65  ймауты: ReadInte 
  0x50A0 72 76 61 6C 3D 30 2C 20 52 65 61 64 54 6F 74 61  rval=0, ReadTota 
  0x50B0 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69  lTimeoutMultipli 
  0x50C0 65 72 3D 36 30 2C 20 52 65 61 64 54 6F 74 61 6C  er=60, ReadTotal 
  0x50D0 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D  TimeoutConstant= 
  0x50E0 31 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D  1, WriteTotalTim 
  0x50F0 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30  eoutMultiplier=0 
  0x5100 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65  , WriteTotalTime 
  0x5110 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30 20 CE F7  outConstant=0 Оч 
  0x5120 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 54 58 43  истка порта: TXC 
  0x5130 4C 45 41 52 20 6B 94 94 F4 0B 0B FF 00 00 FF 00  LEAR k””ф..я..я. 
  0x5140 00 9F 60 60 10 EF EF 03 D2 E0 E9 EC E0 F3 F2 FB  .џ``.пп.Таймауты 
  0x5150 3A 20 52 65 61 64 49 6E 74 65 72 76 61 6C 3D 30  : ReadInterval=0 
  0x5160 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F  , ReadTotalTimeo 
  0x5170 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 36 30 2C  utMultiplier=60, 
  0x5180 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75   ReadTotalTimeou 
  0x5190 74 43 6F 6E 73 74 61 6E 74 3D 31 2C 20 57 72 69  tConstant=1, Wri 
  0x51A0 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75  teTotalTimeoutMu 
  0x51B0 6C 74 69 70 6C 69 65 72 3D 30 2C 20 57 72 69 74  ltiplier=0, Writ 
  0x51C0 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E  eTotalTimeoutCon 
  0x51D0 73 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20  stant=0 Очистка  
  0x51E0 EF EE F0 F2 E0 3A 20 52 58 43 4C 45 41 52 2C 20  порта: RXCLEAR,  
  0x51F0 54 58 43 4C 45 41 52 20 04 04 FB 6C 6C 93 29 29  TXCLEAR ..ыll“)) 
  0x5200 D6 01 01 FE CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2  Ц..юОчистка порт 
  0x5210 E0 3A 20 52 58 43 4C 45 41 52 2C 20 54 58 43 4C  а: RXCLEAR, TXCL 
  0x5220 45 41 52 20 03 03 D2 E0 E9 EC E0 F3 F2 FB 3A 20  EAR ..Таймауты:  
  0x5230 52 65 61 64 49 6E 74 65 72 76 61 6C 3D 30 2C 20  ReadInterval=0,  
  0x5240 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74  ReadTotalTimeout 
  0x5250 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20 52 65  Multiplier=0, Re 
  0x5260 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F  adTotalTimeoutCo 
  0x5270 6E 73 74 61 6E 74 3D 31 30 30 31 2C 20 57 72 69  nstant=1001, Wri 
  0x5280 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75  teTotalTimeoutMu 
  0x5290 6C 74 69 70 6C 69 65 72 3D 30 2C 20 57 72 69 74  ltiplier=0, Writ 
  0x52A0 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E  eTotalTimeoutCon 
  0x52B0 73 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20  stant=0 Очистка  
  0x52C0 EF EE F0 F2 E0 3A 20 54 58 43 4C 45 41 52 20 07  порта: TXCLEAR . 
  0x52D0 F8 F8 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64  шшТаймауты: Read 
  0x52E0 49 6E 74 65 72 76 61 6C 3D 30 2C 20 52 65 61 64  Interval=0, Read 
  0x52F0 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74  TotalTimeoutMult 
  0x5300 69 70 6C 69 65 72 3D 36 30 2C 20 52 65 61 64 54  iplier=60, ReadT 
  0x5310 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74  otalTimeoutConst 
  0x5320 61 6E 74 3D 31 2C 20 57 72 69 74 65 54 6F 74 61  ant=1, WriteTota 
  0x5330 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69  lTimeoutMultipli 
  0x5340 65 72 3D 30 2C 20 57 72 69 74 65 54 6F 74 61 6C  er=0, WriteTotal 
  0x5350 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D  TimeoutConstant= 
  0x5360 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A  0 Очистка порта: 
  0x5370 20 54 58 43 4C 45 41 52 20 6D 92 92 F4 0B 0B FF   TXCLEAR m’’ф..я 
  0x5380 00 00 FF 00 00 9F 60 60 10 EF EF 03 D2 E0 E9 EC  ..я..џ``.пп.Тайм 
  0x5390 E0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74 65 72 76  ауты: ReadInterv 
  0x53A0 61 6C 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54  al=0, ReadTotalT 
  0x53B0 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72  imeoutMultiplier 
  0x53C0 3D 36 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69  =60, ReadTotalTi 
  0x53D0 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 31 2C  meoutConstant=1, 
  0x53E0 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F   WriteTotalTimeo 
  0x53F0 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20  utMultiplier=0,  
  0x5400 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75  WriteTotalTimeou 
  0x5410 74 43 6F 6E 73 74 61 6E 74 3D 30 20 CE F7 E8 F1  tConstant=0 Очис 
  0x5420 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52 58 43 4C 45  тка порта: RXCLE 
  0x5430 41 52 2C 20 54 58 43 4C 45 41 52 20 04 04 FB 6E  AR, TXCLEAR ..ыn 
  0x5440 6E 91 29 29 D6 01 01 FE CE F7 E8 F1 F2 EA E0 20  n‘))Ц..юОчистка  
  0x5450 EF EE F0 F2 E0 3A 20 52 58 43 4C 45 41 52 2C 20  порта: RXCLEAR,  
  0x5460 54 58 43 4C 45 41 52 20 03 03 D2 E0 E9 EC E0 F3  TXCLEAR ..Таймау 
  0x5470 F2 FB 3A 20 52 65 61 64 49 6E 74 65 72 76 61 6C  ты: ReadInterval 
  0x5480 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D  =0, ReadTotalTim 
  0x5490 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30  eoutMultiplier=0 
  0x54A0 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F  , ReadTotalTimeo 
  0x54B0 75 74 43 6F 6E 73 74 61 6E 74 3D 31 30 30 31 2C  utConstant=1001, 
  0x54C0 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F   WriteTotalTimeo 
  0x54D0 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20  utMultiplier=0,  
  0x54E0 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75  WriteTotalTimeou 
  0x54F0 74 43 6F 6E 73 74 61 6E 74 3D 30 20 CE F7 E8 F1  tConstant=0 Очис 
  0x5500 F2 EA E0 20 EF EE F0 F2 E0 3A 20 54 58 43 4C 45  тка порта: TXCLE 
  0x5510 41 52 20 07 F8 F8 D2 E0 E9 EC E0 F3 F2 FB 3A 20  AR .шшТаймауты:  
  0x5520 52 65 61 64 49 6E 74 65 72 76 61 6C 3D 30 2C 20  ReadInterval=0,  
  0x5530 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74  ReadTotalTimeout 
  0x5540 4D 75 6C 74 69 70 6C 69 65 72 3D 36 30 2C 20 52  Multiplier=60, R 
  0x5550 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43  eadTotalTimeoutC 
  0x5560 6F 6E 73 74 61 6E 74 3D 31 2C 20 57 72 69 74 65  onstant=1, Write 
  0x5570 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74  TotalTimeoutMult 
  0x5580 69 70 6C 69 65 72 3D 30 2C 20 57 72 69 74 65 54  iplier=0, WriteT 
  0x5590 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74  otalTimeoutConst 
  0x55A0 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE  ant=0 Очистка по 
  0x55B0 F0 F2 E0 3A 20 54 58 43 4C 45 41 52 20 6F 90 90  рта: TXCLEAR oђђ 
  0x55C0 F4 0B 0B FF 00 00 FF 00 00 9F 60 60 10 EF EF 03  ф..я..я..џ``.пп. 
  0x55D0 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49 6E  Таймауты: ReadIn 
  0x55E0 74 65 72 76 61 6C 3D 30 2C 20 52 65 61 64 54 6F  terval=0, ReadTo 
  0x55F0 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70  talTimeoutMultip 
  0x5600 6C 69 65 72 3D 36 30 2C 20 52 65 61 64 54 6F 74  lier=60, ReadTot 
  0x5610 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E  alTimeoutConstan 
  0x5620 74 3D 31 2C 20 57 72 69 74 65 54 6F 74 61 6C 54  t=1, WriteTotalT 
  0x5630 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72  imeoutMultiplier 
  0x5640 3D 30 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69  =0, WriteTotalTi 
  0x5650 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30 20  meoutConstant=0  
  0x5660 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52  Очистка порта: R 
  0x5670 58 43 4C 45 41 52 2C 20 54 58 43 4C 45 41 52 20  XCLEAR, TXCLEAR  
  0x5680 04 04 FB 70 70 8F 29 29 D6 01 01 FE CE F7 E8 F1  ..ыppЏ))Ц..юОчис 
  0x5690 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52 58 43 4C 45  тка порта: RXCLE 
  0x56A0 41 52 2C 20 54 58 43 4C 45 41 52 20 03 03 D2 E0  AR, TXCLEAR ..Та 
  0x56B0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74 65  ймауты: ReadInte 
  0x56C0 72 76 61 6C 3D 30 2C 20 52 65 61 64 54 6F 74 61  rval=0, ReadTota 
  0x56D0 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69  lTimeoutMultipli 
  0x56E0 65 72 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54  er=0, ReadTotalT 
  0x56F0 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 31  imeoutConstant=1 
  0x5700 30 30 31 2C 20 57 72 69 74 65 54 6F 74 61 6C 54  001, WriteTotalT 
  0x5710 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72  imeoutMultiplier 
  0x5720 3D 30 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69  =0, WriteTotalTi 
  0x5730 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30 20  meoutConstant=0  
  0x5740 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 54  Очистка порта: T 
  0x5750 58 43 4C 45 41 52 20 07 F8 F8 D2 E0 E9 EC E0 F3  XCLEAR .шшТаймау 
  0x5760 F2 FB 3A 20 52 65 61 64 49 6E 74 65 72 76 61 6C  ты: ReadInterval 
  0x5770 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D  =0, ReadTotalTim 
  0x5780 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 36  eoutMultiplier=6 
  0x5790 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65  0, ReadTotalTime 
  0x57A0 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 31 2C 20 57  outConstant=1, W 
  0x57B0 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74  riteTotalTimeout 
  0x57C0 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20 57 72  Multiplier=0, Wr 
  0x57D0 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43  iteTotalTimeoutC 
  0x57E0 6F 6E 73 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA  onstant=0 Очистк 
  0x57F0 E0 20 EF EE F0 F2 E0 3A 20 54 58 43 4C 45 41 52  а порта: TXCLEAR 
  0x5800 20 71 8E 8E F4 0B 0B FF 00 00 FF 00 00 9F 60 60   qЋЋф..я..я..џ`` 
  0x5810 10 EF EF 03 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65  .пп.Таймауты: Re 
  0x5820 61 64 49 6E 74 65 72 76 61 6C 3D 30 2C 20 52 65  adInterval=0, Re 
  0x5830 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75  adTotalTimeoutMu 
  0x5840 6C 74 69 70 6C 69 65 72 3D 36 30 2C 20 52 65 61  ltiplier=60, Rea 
  0x5850 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E  dTotalTimeoutCon 
  0x5860 73 74 61 6E 74 3D 31 2C 20 57 72 69 74 65 54 6F  stant=1, WriteTo 
  0x5870 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70  talTimeoutMultip 
  0x5880 6C 69 65 72 3D 30 2C 20 57 72 69 74 65 54 6F 74  lier=0, WriteTot 
  0x5890 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E  alTimeoutConstan 
  0x58A0 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2  t=0 Очистка порт 
  0x58B0 E0 3A 20 52 58 43 4C 45 41 52 2C 20 54 58 43 4C  а: RXCLEAR, TXCL 
  0x58C0 45 41 52 20 04 04 FB 72 72 8D 29 29 D6 01 01 FE  EAR ..ыrrЌ))Ц..ю 
  0x58D0 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52  Очистка порта: R 
  0x58E0 58 43 4C 45 41 52 2C 20 54 58 43 4C 45 41 52 20  XCLEAR, TXCLEAR  
  0x58F0 03 03 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64  ..Таймауты: Read 
  0x5900 49 6E 74 65 72 76 61 6C 3D 30 2C 20 52 65 61 64  Interval=0, Read 
  0x5910 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74  TotalTimeoutMult 
  0x5920 69 70 6C 69 65 72 3D 30 2C 20 52 65 61 64 54 6F  iplier=0, ReadTo 
  0x5930 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61  talTimeoutConsta 
  0x5940 6E 74 3D 31 30 30 31 2C 20 57 72 69 74 65 54 6F  nt=1001, WriteTo 
  0x5950 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70  talTimeoutMultip 
  0x5960 6C 69 65 72 3D 30 2C 20 57 72 69 74 65 54 6F 74  lier=0, WriteTot 
  0x5970 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E  alTimeoutConstan 
  0x5980 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2  t=0 Очистка порт 
  0x5990 E0 3A 20 54 58 43 4C 45 41 52 20 07 F8 F8 D2 E0  а: TXCLEAR .шшТа 
  0x59A0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74 65  ймауты: ReadInte 
  0x59B0 72 76 61 6C 3D 30 2C 20 52 65 61 64 54 6F 74 61  rval=0, ReadTota 
  0x59C0 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69  lTimeoutMultipli 
  0x59D0 65 72 3D 36 30 2C 20 52 65 61 64 54 6F 74 61 6C  er=60, ReadTotal 
  0x59E0 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D  TimeoutConstant= 
  0x59F0 31 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D  1, WriteTotalTim 
  0x5A00 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30  eoutMultiplier=0 
  0x5A10 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65  , WriteTotalTime 
  0x5A20 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30 20 CE F7  outConstant=0 Оч 
  0x5A30 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 54 58 43  истка порта: TXC 
  0x5A40 4C 45 41 52 20 73 8C 8C F4 0B 0B FF 00 00 FF 00  LEAR sЊЊф..я..я. 
  0x5A50 00 9F 60 60 10 EF EF 03 D2 E0 E9 EC E0 F3 F2 FB  .џ``.пп.Таймауты 
  0x5A60 3A 20 52 65 61 64 49 6E 74 65 72 76 61 6C 3D 30  : ReadInterval=0 
  0x5A70 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F  , ReadTotalTimeo 
  0x5A80 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 36 30 2C  utMultiplier=60, 
  0x5A90 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75   ReadTotalTimeou 
  0x5AA0 74 43 6F 6E 73 74 61 6E 74 3D 31 2C 20 57 72 69  tConstant=1, Wri 
  0x5AB0 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75  teTotalTimeoutMu 
  0x5AC0 6C 74 69 70 6C 69 65 72 3D 30 2C 20 57 72 69 74  ltiplier=0, Writ 
  0x5AD0 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E  eTotalTimeoutCon 
  0x5AE0 73 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20  stant=0 Очистка  
  0x5AF0 EF EE F0 F2 E0 3A 20 52 58 43 4C 45 41 52 2C 20  порта: RXCLEAR,  
  0x5B00 54 58 43 4C 45 41 52 20 04 04 FB 74 74 8B 29 29  TXCLEAR ..ыtt‹)) 
  0x5B10 D6 01 01 FE CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2  Ц..юОчистка порт 
  0x5B20 E0 3A 20 52 58 43 4C 45 41 52 2C 20 54 58 43 4C  а: RXCLEAR, TXCL 
  0x5B30 45 41 52 20 03 03 D2 E0 E9 EC E0 F3 F2 FB 3A 20  EAR ..Таймауты:  
  0x5B40 52 65 61 64 49 6E 74 65 72 76 61 6C 3D 30 2C 20  ReadInterval=0,  
  0x5B50 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74  ReadTotalTimeout 
  0x5B60 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20 52 65  Multiplier=0, Re 
  0x5B70 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F  adTotalTimeoutCo 
  0x5B80 6E 73 74 61 6E 74 3D 31 30 30 31 2C 20 57 72 69  nstant=1001, Wri 
  0x5B90 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75  teTotalTimeoutMu 
  0x5BA0 6C 74 69 70 6C 69 65 72 3D 30 2C 20 57 72 69 74  ltiplier=0, Writ 
  0x5BB0 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E  eTotalTimeoutCon 
  0x5BC0 73 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20  stant=0 Очистка  
  0x5BD0 EF EE F0 F2 E0 3A 20 54 58 43 4C 45 41 52 20 07  порта: TXCLEAR . 
  0x5BE0 F8 F8 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64  шшТаймауты: Read 
  0x5BF0 49 6E 74 65 72 76 61 6C 3D 30 2C 20 52 65 61 64  Interval=0, Read 
  0x5C00 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74  TotalTimeoutMult 
  0x5C10 69 70 6C 69 65 72 3D 36 30 2C 20 52 65 61 64 54  iplier=60, ReadT 
  0x5C20 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74  otalTimeoutConst 
  0x5C30 61 6E 74 3D 31 2C 20 57 72 69 74 65 54 6F 74 61  ant=1, WriteTota 
  0x5C40 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69  lTimeoutMultipli 
  0x5C50 65 72 3D 30 2C 20 57 72 69 74 65 54 6F 74 61 6C  er=0, WriteTotal 
  0x5C60 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D  TimeoutConstant= 
  0x5C70 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A  0 Очистка порта: 
  0x5C80 20 54 58 43 4C 45 41 52 20 75 8A 8A F4 0B 0B FF   TXCLEAR uЉЉф..я 
  0x5C90 00 00 FF 00 00 9F 60 60 10 EF EF 03 D2 E0 E9 EC  ..я..џ``.пп.Тайм 
  0x5CA0 E0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74 65 72 76  ауты: ReadInterv 
  0x5CB0 61 6C 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54  al=0, ReadTotalT 
  0x5CC0 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72  imeoutMultiplier 
  0x5CD0 3D 36 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69  =60, ReadTotalTi 
  0x5CE0 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 31 2C  meoutConstant=1, 
  0x5CF0 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F   WriteTotalTimeo 
  0x5D00 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20  utMultiplier=0,  
  0x5D10 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75  WriteTotalTimeou 
  0x5D20 74 43 6F 6E 73 74 61 6E 74 3D 30 20 CE F7 E8 F1  tConstant=0 Очис 
  0x5D30 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52 58 43 4C 45  тка порта: RXCLE 
  0x5D40 41 52 2C 20 54 58 43 4C 45 41 52 20 04 04 FB 76  AR, TXCLEAR ..ыv 
  0x5D50 76 89 29 29 D6 01 01 FE CE F7 E8 F1 F2 EA E0 20  v‰))Ц..юОчистка  
  0x5D60 EF EE F0 F2 E0 3A 20 52 58 43 4C 45 41 52 2C 20  порта: RXCLEAR,  
  0x5D70 54 58 43 4C 45 41 52 20 03 03 D2 E0 E9 EC E0 F3  TXCLEAR ..Таймау 
  0x5D80 F2 FB 3A 20 52 65 61 64 49 6E 74 65 72 76 61 6C  ты: ReadInterval 
  0x5D90 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D  =0, ReadTotalTim 
  0x5DA0 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30  eoutMultiplier=0 
  0x5DB0 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F  , ReadTotalTimeo 
  0x5DC0 75 74 43 6F 6E 73 74 61 6E 74 3D 31 30 30 31 2C  utConstant=1001, 
  0x5DD0 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F   WriteTotalTimeo 
  0x5DE0 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20  utMultiplier=0,  
  0x5DF0 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75  WriteTotalTimeou 
  0x5E00 74 43 6F 6E 73 74 61 6E 74 3D 30 20 CE F7 E8 F1  tConstant=0 Очис 
  0x5E10 F2 EA E0 20 EF EE F0 F2 E0 3A 20 54 58 43 4C 45  тка порта: TXCLE 
  0x5E20 41 52 20 07 F8 F8 D2 E0 E9 EC E0 F3 F2 FB 3A 20  AR .шшТаймауты:  
  0x5E30 52 65 61 64 49 6E 74 65 72 76 61 6C 3D 30 2C 20  ReadInterval=0,  
  0x5E40 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74  ReadTotalTimeout 
  0x5E50 4D 75 6C 74 69 70 6C 69 65 72 3D 36 30 2C 20 52  Multiplier=60, R 
  0x5E60 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43  eadTotalTimeoutC 
  0x5E70 6F 6E 73 74 61 6E 74 3D 31 2C 20 57 72 69 74 65  onstant=1, Write 
  0x5E80 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74  TotalTimeoutMult 
  0x5E90 69 70 6C 69 65 72 3D 30 2C 20 57 72 69 74 65 54  iplier=0, WriteT 
  0x5EA0 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74  otalTimeoutConst 
  0x5EB0 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE  ant=0 Очистка по 
  0x5EC0 F0 F2 E0 3A 20 54 58 43 4C 45 41 52 20 77 88 88  рта: TXCLEAR w€€ 
  0x5ED0 F4 0B 0B FF 00 00 FF 00 00 9F 60 60 10 EF EF 03  ф..я..я..џ``.пп. 
  0x5EE0 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49 6E  Таймауты: ReadIn 
  0x5EF0 74 65 72 76 61 6C 3D 30 2C 20 52 65 61 64 54 6F  terval=0, ReadTo 
  0x5F00 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70  talTimeoutMultip 
  0x5F10 6C 69 65 72 3D 36 30 2C 20 52 65 61 64 54 6F 74  lier=60, ReadTot 
  0x5F20 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E  alTimeoutConstan 
  0x5F30 74 3D 31 2C 20 57 72 69 74 65 54 6F 74 61 6C 54  t=1, WriteTotalT 
  0x5F40 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72  imeoutMultiplier 
  0x5F50 3D 30 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69  =0, WriteTotalTi 
  0x5F60 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30 20  meoutConstant=0  
  0x5F70 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52  Очистка порта: R 
  0x5F80 58 43 4C 45 41 52 2C 20 54 58 43 4C 45 41 52 20  XCLEAR, TXCLEAR  
  0x5F90 04 04 FB 78 78 87 29 29 D6 01 01 FE CE F7 E8 F1  ..ыxx‡))Ц..юОчис 
  0x5FA0 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52 58 43 4C 45  тка порта: RXCLE 
  0x5FB0 41 52 2C 20 54 58 43 4C 45 41 52 20 03 03 D2 E0  AR, TXCLEAR ..Та 
  0x5FC0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74 65  ймауты: ReadInte 
  0x5FD0 72 76 61 6C 3D 30 2C 20 52 65 61 64 54 6F 74 61  rval=0, ReadTota 
  0x5FE0 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69  lTimeoutMultipli 
  0x5FF0 65 72 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54  er=0, ReadTotalT 
  0x6000 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 31  imeoutConstant=1 
  0x6010 30 30 31 2C 20 57 72 69 74 65 54 6F 74 61 6C 54  001, WriteTotalT 
  0x6020 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72  imeoutMultiplier 
  0x6030 3D 30 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69  =0, WriteTotalTi 
  0x6040 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30 20  meoutConstant=0  
  0x6050 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 54  Очистка порта: T 
  0x6060 58 43 4C 45 41 52 20 07 F8 F8 D2 E0 E9 EC E0 F3  XCLEAR .шшТаймау 
  0x6070 F2 FB 3A 20 52 65 61 64 49 6E 74 65 72 76 61 6C  ты: ReadInterval 
  0x6080 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D  =0, ReadTotalTim 
  0x6090 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 36  eoutMultiplier=6 
  0x60A0 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65  0, ReadTotalTime 
  0x60B0 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 31 2C 20 57  outConstant=1, W 
  0x60C0 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74  riteTotalTimeout 
  0x60D0 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20 57 72  Multiplier=0, Wr 
  0x60E0 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43  iteTotalTimeoutC 
  0x60F0 6F 6E 73 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA  onstant=0 Очистк 
  0x6100 E0 20 EF EE F0 F2 E0 3A 20 54 58 43 4C 45 41 52  а порта: TXCLEAR 
  0x6110 20 79 86 86 F4 0B 0B FF 00 00 FF 00 00 9F 60 60   y††ф..я..я..џ`` 
  0x6120 10 EF EF 03 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65  .пп.Таймауты: Re 
  0x6130 61 64 49 6E 74 65 72 76 61 6C 3D 30 2C 20 52 65  adInterval=0, Re 
  0x6140 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75  adTotalTimeoutMu 
  0x6150 6C 74 69 70 6C 69 65 72 3D 36 30 2C 20 52 65 61  ltiplier=60, Rea 
  0x6160 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E  dTotalTimeoutCon 
  0x6170 73 74 61 6E 74 3D 31 2C 20 57 72 69 74 65 54 6F  stant=1, WriteTo 
  0x6180 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70  talTimeoutMultip 
  0x6190 6C 69 65 72 3D 30 2C 20 57 72 69 74 65 54 6F 74  lier=0, WriteTot 
  0x61A0 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E  alTimeoutConstan 
  0x61B0 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2  t=0 Очистка порт 
  0x61C0 E0 3A 20 52 58 43 4C 45 41 52 2C 20 54 58 43 4C  а: RXCLEAR, TXCL 
  0x61D0 45 41 52 20 04 04 FB 7A 7A 85 29 29 D6 01 01 FE  EAR ..ыzz…))Ц..ю 
  0x61E0 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52  Очистка порта: R 
  0x61F0 58 43 4C 45 41 52 2C 20 54 58 43 4C 45 41 52 20  XCLEAR, TXCLEAR  
  0x6200 03 03 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64  ..Таймауты: Read 
  0x6210 49 6E 74 65 72 76 61 6C 3D 30 2C 20 52 65 61 64  Interval=0, Read 
  0x6220 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74  TotalTimeoutMult 
  0x6230 69 70 6C 69 65 72 3D 30 2C 20 52 65 61 64 54 6F  iplier=0, ReadTo 
  0x6240 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61  talTimeoutConsta 
  0x6250 6E 74 3D 31 30 30 31 2C 20 57 72 69 74 65 54 6F  nt=1001, WriteTo 
  0x6260 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70  talTimeoutMultip 
  0x6270 6C 69 65 72 3D 30 2C 20 57 72 69 74 65 54 6F 74  lier=0, WriteTot 
  0x6280 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E  alTimeoutConstan 
  0x6290 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2  t=0 Очистка порт 
  0x62A0 E0 3A 20 54 58 43 4C 45 41 52 20 07 F8 F8 D2 E0  а: TXCLEAR .шшТа 
  0x62B0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74 65  ймауты: ReadInte 
  0x62C0 72 76 61 6C 3D 30 2C 20 52 65 61 64 54 6F 74 61  rval=0, ReadTota 
  0x62D0 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69  lTimeoutMultipli 
  0x62E0 65 72 3D 36 30 2C 20 52 65 61 64 54 6F 74 61 6C  er=60, ReadTotal 
  0x62F0 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D  TimeoutConstant= 
  0x6300 31 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D  1, WriteTotalTim 
  0x6310 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30  eoutMultiplier=0 
  0x6320 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65  , WriteTotalTime 
  0x6330 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30 20 CE F7  outConstant=0 Оч 
  0x6340 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 54 58 43  истка порта: TXC 
  0x6350 4C 45 41 52 20 7B 84 84 F4 0B 0B FF 00 00 FF 00  LEAR {„„ф..я..я. 
  0x6360 00 9F 60 60 10 EF EF 03 D2 E0 E9 EC E0 F3 F2 FB  .џ``.пп.Таймауты 
  0x6370 3A 20 52 65 61 64 49 6E 74 65 72 76 61 6C 3D 30  : ReadInterval=0 
  0x6380 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F  , ReadTotalTimeo 
  0x6390 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 36 30 2C  utMultiplier=60, 
  0x63A0 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75   ReadTotalTimeou 
  0x63B0 74 43 6F 6E 73 74 61 6E 74 3D 31 2C 20 57 72 69  tConstant=1, Wri 
  0x63C0 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75  teTotalTimeoutMu 
  0x63D0 6C 74 69 70 6C 69 65 72 3D 30 2C 20 57 72 69 74  ltiplier=0, Writ 
  0x63E0 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E  eTotalTimeoutCon 
  0x63F0 73 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20  stant=0 Очистка  
  0x6400 EF EE F0 F2 E0 3A 20 52 58 43 4C 45 41 52 2C 20  порта: RXCLEAR,  
  0x6410 54 58 43 4C 45 41 52 20 04 04 FB 7C 7C 83 29 29  TXCLEAR ..ы||ѓ)) 
  0x6420 D6 01 01 FE CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2  Ц..юОчистка порт 
  0x6430 E0 3A 20 52 58 43 4C 45 41 52 2C 20 54 58 43 4C  а: RXCLEAR, TXCL 
  0x6440 45 41 52 20 03 03 D2 E0 E9 EC E0 F3 F2 FB 3A 20  EAR ..Таймауты:  
  0x6450 52 65 61 64 49 6E 74 65 72 76 61 6C 3D 30 2C 20  ReadInterval=0,  
  0x6460 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74  ReadTotalTimeout 
  0x6470 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20 52 65  Multiplier=0, Re 
  0x6480 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F  adTotalTimeoutCo 
  0x6490 6E 73 74 61 6E 74 3D 31 30 30 31 2C 20 57 72 69  nstant=1001, Wri 
  0x64A0 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75  teTotalTimeoutMu 
  0x64B0 6C 74 69 70 6C 69 65 72 3D 30 2C 20 57 72 69 74  ltiplier=0, Writ 
  0x64C0 65 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E  eTotalTimeoutCon 
  0x64D0 73 74 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20  stant=0 Очистка  
  0x64E0 EF EE F0 F2 E0 3A 20 54 58 43 4C 45 41 52 20 07  порта: TXCLEAR . 
  0x64F0 F8 F8 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64  шшТаймауты: Read 
  0x6500 49 6E 74 65 72 76 61 6C 3D 30 2C 20 52 65 61 64  Interval=0, Read 
  0x6510 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74  TotalTimeoutMult 
  0x6520 69 70 6C 69 65 72 3D 36 30 2C 20 52 65 61 64 54  iplier=60, ReadT 
  0x6530 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74  otalTimeoutConst 
  0x6540 61 6E 74 3D 31 2C 20 57 72 69 74 65 54 6F 74 61  ant=1, WriteTota 
  0x6550 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69  lTimeoutMultipli 
  0x6560 65 72 3D 30 2C 20 57 72 69 74 65 54 6F 74 61 6C  er=0, WriteTotal 
  0x6570 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D  TimeoutConstant= 
  0x6580 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A  0 Очистка порта: 
  0x6590 20 54 58 43 4C 45 41 52 20 7D 82 82 F4 0B 0B FF   TXCLEAR }‚‚ф..я 
  0x65A0 00 00 FF 00 00 9F 60 60 10 EF EF 03 D2 E0 E9 EC  ..я..џ``.пп.Тайм 
  0x65B0 E0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74 65 72 76  ауты: ReadInterv 
  0x65C0 61 6C 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54  al=0, ReadTotalT 
  0x65D0 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72  imeoutMultiplier 
  0x65E0 3D 36 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69  =60, ReadTotalTi 
  0x65F0 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 31 2C  meoutConstant=1, 
  0x6600 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F   WriteTotalTimeo 
  0x6610 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20  utMultiplier=0,  
  0x6620 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75  WriteTotalTimeou 
  0x6630 74 43 6F 6E 73 74 61 6E 74 3D 30 20 CE F7 E8 F1  tConstant=0 Очис 
  0x6640 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52 58 43 4C 45  тка порта: RXCLE 
  0x6650 41 52 2C 20 54 58 43 4C 45 41 52 20 04 04 FB 7E  AR, TXCLEAR ..ы~ 
  0x6660 7E 81 29 29 D6 01 01 FE CE F7 E8 F1 F2 EA E0 20  ~Ѓ))Ц..юОчистка  
  0x6670 EF EE F0 F2 E0 3A 20 52 58 43 4C 45 41 52 2C 20  порта: RXCLEAR,  
  0x6680 54 58 43 4C 45 41 52 20 03 03 D2 E0 E9 EC E0 F3  TXCLEAR ..Таймау 
  0x6690 F2 FB 3A 20 52 65 61 64 49 6E 74 65 72 76 61 6C  ты: ReadInterval 
  0x66A0 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D  =0, ReadTotalTim 
  0x66B0 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30  eoutMultiplier=0 
  0x66C0 2C 20 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F  , ReadTotalTimeo 
  0x66D0 75 74 43 6F 6E 73 74 61 6E 74 3D 31 30 30 31 2C  utConstant=1001, 
  0x66E0 20 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F   WriteTotalTimeo 
  0x66F0 75 74 4D 75 6C 74 69 70 6C 69 65 72 3D 30 2C 20  utMultiplier=0,  
  0x6700 57 72 69 74 65 54 6F 74 61 6C 54 69 6D 65 6F 75  WriteTotalTimeou 
  0x6710 74 43 6F 6E 73 74 61 6E 74 3D 30 20 CE F7 E8 F1  tConstant=0 Очис 
  0x6720 F2 EA E0 20 EF EE F0 F2 E0 3A 20 54 58 43 4C 45  тка порта: TXCLE 
  0x6730 41 52 20 07 F8 F8 D2 E0 E9 EC E0 F3 F2 FB 3A 20  AR .шшТаймауты:  
  0x6740 52 65 61 64 49 6E 74 65 72 76 61 6C 3D 30 2C 20  ReadInterval=0,  
  0x6750 52 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74  ReadTotalTimeout 
  0x6760 4D 75 6C 74 69 70 6C 69 65 72 3D 36 30 2C 20 52  Multiplier=60, R 
  0x6770 65 61 64 54 6F 74 61 6C 54 69 6D 65 6F 75 74 43  eadTotalTimeoutC 
  0x6780 6F 6E 73 74 61 6E 74 3D 31 2C 20 57 72 69 74 65  onstant=1, Write 
  0x6790 54 6F 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74  TotalTimeoutMult 
  0x67A0 69 70 6C 69 65 72 3D 30 2C 20 57 72 69 74 65 54  iplier=0, WriteT 
  0x67B0 6F 74 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74  otalTimeoutConst 
  0x67C0 61 6E 74 3D 30 20 CE F7 E8 F1 F2 EA E0 20 EF EE  ant=0 Очистка по 
  0x67D0 F0 F2 E0 3A 20 54 58 43 4C 45 41 52 20 7F 80 80  рта: TXCLEAR ЂЂ 
  0x67E0 F4 0B 0B FF 00 00 FF 00 00 9F 60 60 10 EF EF 03  ф..я..я..џ``.пп. 
  0x67F0 D2 E0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49 6E  Таймауты: ReadIn 
  0x6800 74 65 72 76 61 6C 3D 30 2C 20 52 65 61 64 54 6F  terval=0, ReadTo 
  0x6810 74 61 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70  talTimeoutMultip 
  0x6820 6C 69 65 72 3D 36 30 2C 20 52 65 61 64 54 6F 74  lier=60, ReadTot 
  0x6830 61 6C 54 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E  alTimeoutConstan 
  0x6840 74 3D 31 2C 20 57 72 69 74 65 54 6F 74 61 6C 54  t=1, WriteTotalT 
  0x6850 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72  imeoutMultiplier 
  0x6860 3D 30 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69  =0, WriteTotalTi 
  0x6870 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30 20  meoutConstant=0  
  0x6880 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52  Очистка порта: R 
  0x6890 58 43 4C 45 41 52 2C 20 54 58 43 4C 45 41 52 20  XCLEAR, TXCLEAR  
  0x68A0 04 04 FB 80 80 7F 29 29 D6 01 01 FE CE F7 E8 F1  ..ыЂЂ))Ц..юОчис 
  0x68B0 F2 EA E0 20 EF EE F0 F2 E0 3A 20 52 58 43 4C 45  тка порта: RXCLE 
  0x68C0 41 52 2C 20 54 58 43 4C 45 41 52 20 03 03 D2 E0  AR, TXCLEAR ..Та 
  0x68D0 E9 EC E0 F3 F2 FB 3A 20 52 65 61 64 49 6E 74 65  ймауты: ReadInte 
  0x68E0 72 76 61 6C 3D 30 2C 20 52 65 61 64 54 6F 74 61  rval=0, ReadTota 
  0x68F0 6C 54 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69  lTimeoutMultipli 
  0x6900 65 72 3D 30 2C 20 52 65 61 64 54 6F 74 61 6C 54  er=0, ReadTotalT 
  0x6910 69 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 31  imeoutConstant=1 
  0x6920 30 30 31 2C 20 57 72 69 74 65 54 6F 74 61 6C 54  001, WriteTotalT 
  0x6930 69 6D 65 6F 75 74 4D 75 6C 74 69 70 6C 69 65 72  imeoutMultiplier 
  0x6940 3D 30 2C 20 57 72 69 74 65 54 6F 74 61 6C 54 69  =0, WriteTotalTi 
  0x6950 6D 65 6F 75 74 43 6F 6E 73 74 61 6E 74 3D 30 20  meoutConstant=0  
  0x6960 CE F7 E8 F1 F2 EA E0 20 EF EE F0 F2 E0 3A 20 54  Очистка порта: T 
  0x6970 58 43 4C 45 41 52 20 07 F8                       XCLEAR .ш
 

https://cloud.mail.ru/public/DtCW/kv6K6Rc5X  тут он читаем (подсвечиваются ключевые)

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

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

PS Ссылка не работает

woodhousel
Offline
Зарегистрирован: 01.10.2017

Ок, сделаю. 

ССылка работает, скопировать и в адресную строку

woodhousel
Offline
Зарегистрирован: 01.10.2017

Лог VAGCOM K-Line адаптер (запрос 1 группы) Скорость соединения 1200

0x0B50 ED 20 00 00 55 01 8A 75 75 0F F0 F0 AD 52 52 F6  н ..U.Љuu.рр¬RRц 
  0x0B60 09 09 30 CF CF 33 CC CC 39 C6 C6 39 C6 C6 30 CF  ..0ПП3ММ9ЖЖ9ЖЖ0П 
  0x0B70 CF 36 C9 C9 30 CF CF 32 CD CD 32 CD CD 20 DF DF  П6ЙЙ0ПП2НН2НН ЯЯ 
  0x0B80 20 DF DF 20 DF DF 03 03 03 FC AE AE 51 09 09 F6   ЯЯ ЯЯ...ь®®Q..ц 
  0x0B90 03 03 1B E4 E4 AF 50 50 F6 09 09 44 BB BB 49 B6  ...ддЇPPц..D»»I¶ 
  0x0BA0 B6 47 B8 B8 49 B6 B6 46 B9 B9 41 BE BE 4E B1 B1  ¶GёёI¶¶F№№AѕѕN±± 
  0x0BB0 54 AB AB 20 DF DF 31 CE CE 2E D1 D1 36 C9 C9 20  T«« ЯЯ1ОО.СС6ЙЙ  
  0x0BC0 DF DF 20 DF DF 20 DF DF 20 DF DF 20 DF DF 20 DF  ЯЯ ЯЯ ЯЯ ЯЯ ЯЯ Я 
  0x0BD0 DF 20 DF DF 20 DF DF 31 CE CE 32 CD CD 34 CB CB  Я ЯЯ ЯЯ1ОО2НН4ЛЛ 
  0x0BE0 33 CC CC 03 03 03 FC B0 B0 4F 09 09 F6 03 03 0F  3ММ...ь°°O..ц... 
  0x0BF0 F0 F0 B1 4E 4E F6 09 09 50 AF AF 4D B2 B2 43 BC  рр±NNц..PЇЇMІІCј 
  0x0C00 BC 20 DF DF 31 CE CE 31 CE CE 20 DF DF 20 DF DF  ј ЯЯ1ОО1ОО ЯЯ ЯЯ 
  0x0C10 20 DF DF 20 DF DF 20 DF DF 20 DF DF 03 03 03 FC   ЯЯ ЯЯ ЯЯ ЯЯ...ь 
  0x0C20 B2 B2 4D 09 09 F6 03 03 03 FC FC B3 4C 4C 09 F6  ІІM..ц...ььіLL.ц 
  0x0C30 F6 03 03 03 FC B4 B4 4B 09 09 F6 03 03 03 FC FC  ц...ьґґK..ц...ьь 
  0x0C40 B5 4A 4A 09 F6 F6 03 03 03 FC B6 B6 49 09 09 F6  µJJ.цц...ь¶¶I..ц 
  0x0C50 03 03 03 FC FC B7 48 48 09 F6 F6 03 03 03 FC B8  ...ьь·HH.цц...ьё 
  0x0C60 B8 47 09 09 F6 03 03 03 FC FC B9 46 46 09 F6 F6  ёG..ц...ьь№FF.цц 
  0x0C70 03 03 03 FC BA BA 45 09 09 F6 03 03 03 FC FC BB  ...ьєєE..ц...ьь» 
  0x0C80 44 44 09 F6 F6 03 03 03 FC BC BC 43 09 09 F6 03  DD.цц...ьјјC..ц. 
  0x0C90 03 03 FC FC BD 42 42 09 F6 F6 03 03 03 FC BE BE  ..ььЅBB.цц...ьѕѕ 
  0x0CA0 41 09 09 F6 03 03 03 FC FC BF 40 40 09 F6 F6 03  A..ц...ььї@@.цц. 
  0x0CB0 03 03 FC C0 C0 3F 09 09 F6 03 03 03 FC FC C1 3E  ..ьАА?..ц...ььБ>  
  0x0CC0 3E 09 F6 F6 03 03 03 FC C2 C2 3D 09 09 F6 03 03  >..цц...ьВВ=..ц.. 
  0x0CD0 03 FC FC C3 3C 3C 09 F6 F6 03 03 03 FC C4 C4 3B  .ььГцц...ьДД; 
  0x0CE0 09 09 F6 03 03 03 FC FC C5 3A 3A 09 F6 F6 03 03  ..ц...ььЕ::.цц.. 
  0x0CF0 03 FC C6 C6 39 09 09 F6 03 03 03 FC FC C7 38 38  .ьЖЖ9..ц...ььЗ88 
  0x0D00 09 F6 F6 03 03 03 FC C8 C8 37 09 09 F6 03 03 03  .цц...ьИИ7..ц... 
  0x0D10 FC FC C9 36 36 09 F6 F6 03 03 03 FC CA CA 35 09  ььЙ66.цц...ьКК5. 
  0x0D20 09 F6 03 03 03 FC FC CB 34 34 09 F6 F6 03 03 03  .ц...ььЛ44.цц... 
  0x0D30 FC CC CC 33 09 09 F6 03 03 03 FC FC CD 32 32 09  ьММ3..ц...ььН22. 
  0x0D40 F6 F6 03 03 03 FC CE CE 31 09 09 F6 03 03 03 FC  цц...ьОО1..ц...ь 
  0x0D50 FC CF 30 30 09 F6 F6 03 03 03 FC D0 D0 2F 09 09  ьП00.цц...ьРР/.. 
  0x0D60 F6 03 03 03 FC FC D1 2E 2E 09 F6 F6 03 03 03 FC  ц...ььС...цц...ь 
  0x0D70 D2 D2 2D 09 09 F6 03 03 03 FC FC D3 2C 2C 09 F6  ТТ-..ц...ььУ,,.ц 
  0x0D80 F6 03 03 03 FC D4 D4 2B 09 09 F6 03 03 03 FC FC  ц...ьФФ+..ц...ьь 
  0x0D90 D5 2A 2A 09 F6 F6 03 03 03 FC D6 D6 29 09 09 F6  Х**.цц...ьЦЦ)..ц 
  0x0DA0 03 03 03 FC FC D7 28 28 09 F6 F6 03 03 03 FC D8  ...ььЧ((.цц...ьШ 
  0x0DB0 D8 27 09 09 F6 03 03 03 FC FC D9 26 26 09 F6 F6  Ш'..ц...ььЩ&&.цц 
  0x0DC0 03 03 03 FC DA DA 25 09 09 F6 03 03 03 FC FC DB  ...ьЪЪ%..ц...ььЫ 
  0x0DD0 24 24 09 F6 F6 03 03 03 FC DC DC 23 09 09 F6 03  $$.цц...ьЬЬ#..ц. 
  0x0DE0 03 03 FC FC DD 22 22 09 F6 F6 03 03 03 FC DE DE  ..ььЭ"".цц...ьЮЮ 
  0x0DF0 21 09 09 F6 03 03 03 FC FC DF 20 20 09 F6 F6 03  !..ц...ььЯ  .цц. 
  0x0E00 03 03 FC E0 E0 1F 09 09 F6 03 03 03 FC FC E1 1E  ..ьаа...ц...ььб. 
  0x0E10 1E 09 F6 F6 03 03 03 FC E2 E2 1D 09 09 F6 03 03  ..цц...ьвв...ц.. 
  0x0E20 03 FC FC E3 1C 1C 09 F6 F6 03 03 03 FC E4 E4 1B  .ььг...цц...ьдд. 
  0x0E30 09 09 F6 03 03 03 FC FC E5 1A 1A 09 F6 F6 03 03  ..ц...ьье...цц.. 
  0x0E40 03 FC E6 E6 19 09 09 F6 03 03 03 FC FC E7 18 18  .ьжж...ц...ььз.. 
  0x0E50 09 F6 F6 03 03 03 FC E8 E8 17 09 09 F6 03 03 03  .цц...ьии...ц... 
  0x0E60 FC FC E9 16 16 09 F6 F6 03 03 03 FC EA EA 15 09  ььй...цц...ькк.. 
  0x0E70 09 F6 03 03 03 FC FC EB 14 14 09 F6 F6 03 03 03  .ц...ььл...цц... 
  0x0E80 FC EC EC 13 09 09 F6 03 03 03 FC FC ED 12 12 09  ьмм...ц...ььн... 
  0x0E90 F6 F6 03 03 03 FC EE EE 11 09 09 F6 03 03 03 FC  цц...ьоо...ц...ь 
  0x0EA0 FC EF 10 10 09 F6 F6 03 03 03 FC F0 F0 0F 09 09  ьп...цц...ьрр... 
  0x0EB0 F6 03 03 03 FC FC F1 0E 0E 09 F6 F6 03 03 03 FC  ц...ььс...цц...ь 
  0x0EC0 F2 F2 0D 09 09 F6 03 03 03 FC FC F3 0C 0C 09 F6  тт...ц...ььу...ц 
  0x0ED0 F6 03 03 03 FC F4 F4 0B 09 09 F6 03 03 03 FC FC  ц...ьфф...ц...ьь 
  0x0EE0 F5 0A 0A 09 F6 F6 03 03 03 FC F6 F6 09 09 09 F6  х...цц...ьцц...ц 
  0x0EF0 03 03 03 FC FC F7 08 08 09 F6 F6 03 03 03 FC F8  ...ььч...цц...ьш 
  0x0F00 F8 07 09 09 F6 03 03 03 FC FC F9 06 06 09 F6 F6  ш...ц...ььщ...цц 
  0x0F10 03 03 03 FC FA FA 05 09 09 F6 03 03 03 FC FC FB  ...ьъъ...ц...ььы 
  0x0F20 04 04 09 F6 F6 03 03 03 FC FC FC 03 09 09 F6 03  ...цц...ььь...ц. 
  0x0F30 03 03 FC FC FD 02 02 09 F6 F6 03 03 03 FC FE FE  ..ььэ...цц...ьюю 
  0x0F40 01 09 09 F6 03 03 03 FC FC FF 00 00 09 F6 F6 03  ...ц...ьья...цц. 
  0x0F50 03 03 FC 00 00 FF 09 09 F6 03 03 03 FC FC 01 FE  ..ь..я..ц...ьь.ю 
  0x0F60 FE 09 F6 F6 03 03 03 FC 02 02 FD 09 09 F6 03 03  ю.цц...ь..э..ц.. 
  0x0F70 03 FC FC 03 FC FC 09 F6 F6 03 03 03 FC 04 04 FB  .ьь.ьь.цц...ь..ы 
  0x0F80 09 09 F6 03 03 03 FC FC 05 FA FA 09 F6 F6 03 03  ..ц...ьь.ъъ.цц.. 
  0x0F90 03 FC 06 06 F9 09 09 F6 03 03 03 FC FC 07 F8 F8  .ь..щ..ц...ьь.шш 
  0x0FA0 09 F6 F6 03 03 03 FC 08 08 F7 09 09 F6 03 03 03  .цц...ь..ч..ц... 
  0x0FB0 FC FC 09 F6 F6 09 F6 F6 03 03 03 FC 0A 0A F5 09  ьь.цц.цц...ь..х. 
  0x0FC0 09 F6 03 03 03 FC FC 0B F4 F4 09 F6 F6 03 03 03  .ц...ьь.фф.цц... 
  0x0FD0 FC 0C 0C F3 09 09 F6 03 03 03 FC FC 0D F2 F2 09  ь..у..ц...ьь.тт. 
  0x0FE0 F6 F6 03 04 04 FB 0E 0E F1 29 29 D6 01 01 FE 03  цц...ы..с))Ц..ю. 
  0x0FF0 03 31 CE CE 0F F0 F0 02 FD FD 8C 73 73 28 D7 D7  .1ОО.рр.ээЊss(ЧЧ 
  0x1000 11 EE EE A0 5F 5F 64 9B 9B 50 AF AF 44 BB BB 3A  .оо __d››PЇЇD»»: 
  0x1010 C5 C5 32 CD CD 2C D3 D3 26 D9 D9 21 DE DE 1B E4  ЕЕ2НН,УУ&ЩЩ!ЮЮ.д 
  0x1020 E4 16 E9 E9 10 EF EF 0B F4 F4 04 FB FB 00 FF FF  д.йй.пп.фф.ыы.яя 
  0x1030 00 FF FF 00 FF FF 8B 74 74 1A E5 E5 11 EE EE FA  .яя.яя‹tt.ее.ооъ 
  0x1040 05 05 E1 1E 1E E0 1F 1F BC 43 43 AD 52 52 96 69  ..б..а..јCC¬RR–i 
  0x1050 69 84 7B 7B 75 8A 8A 61 9E 9E 53 AC AC 48 B7 B7  i„{{uЉЉaћћS¬¬H·· 
  0x1060 39 C6 C6 28 D7 D7 1F E0 E0 19 E6 E6 12 ED ED 00  9ЖЖ(ЧЧ.аа.жж.нн. 
  0x1070 FF FF 85 7A 7A 02 FD FD 00 FF FF 89 76 76 32 CD  яя…zz.ээ.яя‰vv2Н 
  0x1080 CD 00 FF FF 03 04 04 FB 10 10 EF 29 29 D6 01 01  Н.яя...ы..п))Ц.. 
  0x1090 FE 03 03 07 F8 F8 11 EE EE F4 0B 0B FF 00 00 FF  ю...шш.ооф..я..я 
  0x10A0 00 00 9F 60 60 10 EF EF 03 04 04 FB 12 12 ED 29  ..џ``.пп...ы..н) 
  0x10B0 29 D6 01 01 FE 03 03 07 F8 F8 13 EC EC F4 0B 0B  )Ц..ю...шш.ммф.. 
  0x10C0 FF 00 00 FF 00 00 9F 60 60 10 EF EF 03 04 04 FB  я..я..џ``.пп...ы 
  0x10D0 14 14 EB 29 29 D6 01 01 FE 03 03 07 F8 F8 15 EA  ..л))Ц..ю...шш.к 
  0x10E0 EA F4 0B 0B FF 00 00 FF 00 00 9F 60 60 10 EF EF  кф..я..я..џ``.пп 
  0x10F0 03 04 04 FB 16 16 E9 29 29 D6 01 01 FE 03 03 07  ...ы..й))Ц..ю... 
  0x1100 F8 F8 17 E8 E8 F4 0B 0B FF 00 00 FF 00 00 9F 60  шш.ииф..я..я..џ` 
  0x1110 60 10 EF EF 03 04 04 FB 18 18 E7 29 29 D6 01 01  `.пп...ы..з))Ц.. 
  0x1120 FE 03 03 07 F8 F8 19 E6 E6 F4 0B 0B FF 00 00 FF  ю...шш.жжф..я..я 
  0x1130 00 00 9F 60 60 10 EF EF 03 04 04 FB 1A 1A E5 29  ..џ``.пп...ы..е) 
  0x1140 29 D6 01 01 FE 03 03 07 F8 F8 1B E4 E4 F4 0B 0B  )Ц..ю...шш.ддф.. 
  0x1150 FF 00 00 FF 00 00 9F 60 60 10 EF EF 03 04 04 FB  я..я..џ``.пп...ы 
  0x1160 1C 1C E3 29 29 D6 01 01 FE 03 03 07 F8 F8 1D E2  ..г))Ц..ю...шш.в 
  0x1170 E2 F4 0B 0B FF 00 00 FF 00 00 9F 60 60 10 EF EF  вф..я..я..џ``.пп 
  0x1180 03 04 04 FB 1E 1E E1 29 29 D6 01 01 FE 03 03 07  ...ы..б))Ц..ю... 
  0x1190 F8 F8 1F E0 E0 F4 0B 0B FF 00 00 FF 00 00 9F 60  шш.ааф..я..я..џ` 
  0x11A0 60 10 EF EF 03 04 04 FB 20 20 DF 29 29 D6 01 01  `.пп...ы  Я))Ц.. 
  0x11B0 FE 03 03 07 F8 F8 21 DE DE F4 0B 0B FF 00 00 FF  ю...шш!ЮЮф..я..я 
  0x11C0 00 00 9F 60 60 10 EF EF 03 04 04 FB 22 22 DD 29  ..џ``.пп...ы""Э) 
  0x11D0 29 D6 01 01 FE 03 03 07 F8 F8 23 DC DC F4 0B 0B  )Ц..ю...шш#ЬЬф.. 
  0x11E0 FF 00 00 FF 00 00 9F 60 60 10 EF                 я..я..џ``.п

 

woodhousel
Offline
Зарегистрирован: 01.10.2017

Начинаю разбираться в логах, получается что VAG COM, что ардуино получают  правильные параметры, но вот алгоритм не такой. Мой ЭБУ выдаёт 7 байт ,а не 15 и не разбивает группу на 4 параметра и результат по 4 параметрам группы считается как- то иначе. Запрсы правильные и там и там 

ЛОГИ

woodhousel
Offline
Зарегистрирован: 01.10.2017

Идём дальше выделил 4 группы, но как соотнести их с реальными данными? Думаю ответ кроется в 49-ти байтном блоке (его видно в логах), который выдаёт ЭБУ перед чтением групп??????????????Разбивка по группам

woodhousel
Offline
Зарегистрирован: 01.10.2017

Попробывал разложить блок из 49 байт, по принципу 1-формула  2 слово "а" 3 слово" b", получается ерунда, групп всего 70, тут же всплывает группа 160Ответ на запрос 1 группы

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

блок из 49 байт только один раз проскакивает? И какие группы выбраны при сниффе.