конвертер скоростей на ардуино для k-line bluetooth адаптера

Александр597
Offline
Зарегистрирован: 30.01.2016

Сделал конвертер на ардуино. т.е. использую на ардуино два serial порта. к одному подключаю блютуз модуль, к другому переходник usb-uart на ftdi. в терминалах обмен происходит. подключаю вместо переходника k-line адаптер, программа дианостики автомобиля его не видет. k-line адаптер работает на скорости 10400. пробовал вместо программы диагностики включать терминал. какие то данные приходят при включении зажигания.почему программа не видет адаптер?

01#include <SoftwareSerial.h>
02  
03SoftwareSerial mySerial(10, 11); // RX, TX
04  
05void setup() 
06{
07  // Инициализируем последовательный интерфейс и ждем открытия порта:
08  Serial.begin(9600);
09  while (!Serial)
10  
11  
12  Serial.println("Goodnight moon!");
13  
14  // устанавливаем скорость передачи данных для последовательного порта, созданного
15  // библиотекой SoftwareSerial
16  mySerial.begin(10400);
17}
18  
19void loop() // выполняется циклически
20{
21  if (mySerial.available())
22    Serial.write(mySerial.read());
23  if (Serial.available())
24    mySerial.write(Serial.read());
25}

 

Александр597
Offline
Зарегистрирован: 30.01.2016

и в библиотеке SoftwareSerial в файле SoftwareSerial.cpp добавлял в трех местах строчки для нестандартной скорости: { 10400,    106,       218,       218,      215,   },

Александр597
Offline
Зарегистрирован: 30.01.2016

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

01#include <SoftwareSerial.h>
02  
03SoftwareSerial mySerial(10, 11); // RX, TX
04  
05void setup() 
06{
07  // Инициализируем последовательный интерфейс и ждем открытия порта:
08  Serial.begin(10400);
09  while (!Serial)
10  
11  
12  Serial.println("Goodnight moon!");
13  
14  // устанавливаем скорость передачи данных для последовательного порта, созданного
15  // библиотекой SoftwareSerial
16  mySerial.begin(9600);
17}
18  
19void loop() // выполняется циклически
20{
21  if (mySerial.available())
22    Serial.write(mySerial.read());
23  if (Serial.available())
24    mySerial.write(Serial.read());
25}

 

Buzoff
Offline
Зарегистрирован: 03.04.2018

Здравствуйте.
Получилось решить проблему?