Jump to content
AUTO TECHNOLOGY
Maximus559

Помогите с написанием программы!

Recommended Posts

Пишу программу для диагностики и прошивания ЭБУ.Пока вот толька нашол протоколы обмена на Я7 (надеюсь на помощь для других типов эбу).Писал с адаптером ВМ 9213 с ним у меня связываеться быстро и регулярно.Так же хотелось, чтобы и другие адаптары с ней связывались но как это сделать не знаю.Вобщем выкладываю жду предложений и помощи...

 

 

Всем откликнувимся огромное Спасибо!

DiagnozNK.rar

Share this post


Link to post
Share on other sites
 

Пишу программу для диагностики и прошивания ЭБУ.Пока вот толька нашол протоколы обмена на Я7 (надеюсь на помощь для других типов эбу).Писал с адаптером ВМ 9213 с ним у меня связываеться быстро и регулярно.Так же хотелось, чтобы и другие адаптары с ней связывались но как это сделать не знаю.Вобщем выкладываю жду предложений и помощи...

 

 

Всем откликнувимся огромное Спасибо!

 

 

Поробовал связаться U2K-L-Iine показывает только каналы АЦП

Share this post


Link to post
Share on other sites
 

Понятно...Но не понятно одно как тогда писать программу чтобы она отвечала на любом адаптере?

Share this post


Link to post
Share on other sites
 

Тут ты найдешь бетотестеров, но вряд ли найдешь ответы на свои вопросы. Посмотри про init 5 baud

Share this post


Link to post
Share on other sites
 

Опа, по екзешнику судить о том как оно будет работать?

Если кроме стандартных компортовых функций не используешь ничего, то пофиг какой адаптер

Share this post


Link to post
Share on other sites
 

Тогда не понятно почему когда я пробовал на 3 машинах всё связывалось на ура...А кто не пробовал другой подкл. ни чего не выходило.И что ещё надо чтобы судить о работе?

Share this post


Link to post
Share on other sites
 

криворукие видимо.

или прога твоя то работает, то нет.

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

Ну сделай хреновину на 2 транзисторах и опробуй на ком-порте

Share this post


Link to post
Share on other sites
 

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

Share this post


Link to post
Share on other sites
 

Ок спаяю.А по поводу протаколов обена на Бош не чем помочь?Да и прога у меня работает регулярно ни каких перебоев в работе нет...всёже грешу на то что писалась видимо с адаптера ВМ 9213 вдимо и работать только с ним будет... хотелось бы чтобы кто нибудь имеющий такой же адаптер потестил.

Share this post


Link to post
Share on other sites
 

Техническая сторона вопроса :

При работе с СОМ портом программа использует стандартные функции WIN32 API.

При связи с портом (функцией CreateFile(...)) в программе создается еще 2 дочерних потока, выполняемых совершенно независимо друг от друга.

В одном потоке на порт последовательно отправляются запросы из кэша (с интервалом задаваемым в настройках программы - по умолчанию 200 мс - так требует документация АВТОВАЗа),

в другом потоке происходит "слушаение" порта функцией WaitCommEvent(...).

Чтение и запись в порт происходят стандартными Windows API функциями ReadFile(...) и WriteFile(...).

Закрытие порта производит функция CloseHandle(...).

 

Параметры порта - скорость 10400 и биты четности - все взято из описания протокола KWP2000 (редакции от АВТОВАЗ).

Единственный момент который в этом документе упушен - таймауты порта, которые выставляются функцией API SetCommTimeouts(...)

В моем случае адаптер одинаково стабильно работал при любых таймаутах, и я не уделил особого внимания этому моменту!

 

В любом случае весь цикл написания и тестирования программы происходил на USB адаптре K-Line лишь ЭМУЛИРУЮЩЕГО работу СОМ порта.

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

Наверно придется в ближайщее время спаять адаптер для РЕАЛЬНОГО СОМ порта (которго и нет в моем буке:) и тестить прогу на нем!

А то уж какая то сильно аппаратно зависимая релизация получилась : )))

 

З.Ы: Реально кто-нить пробовал прогу на ВМ 9213? У кого-нить заработало?

Share this post


Link to post
Share on other sites
 

Попробуйте хоть кто нибудь на МастерКит ВМ 9213 и отпишитесь вышло ли что нибудь...

Share this post


Link to post
Share on other sites
 

По моему опыту то, что работает на чипах FTDI (типа твоего мастеркитовского адаптера) , то на чистои коме и других преобразователях USB

работает и подавно. Я пользовался еще пролификом и CP

Насчет протоколов-самому интересно, но ничего свежее kvp2000 для Е2 не встречал к сожалению.

Edited by Cruiser

Share this post


Link to post
Share on other sites
 

Сегодня попробовал подключится этой прогой к 2110 Я7.2, связь установилась быстро и прога работала без сбоев. Адаптер у меня на FT232. Токо некоторые параметры показывала неправильно - это впрыск и кажется еще что то.

Share this post


Link to post
Share on other sites
 

я72 это е2 если не склероз. читай доки по протоколу , не должно бздеть вроде. а про адаптеры забей, ft232 один из наиболее проблемных, если с ним работает, то гут. У СиЛабс другие прюблемы его надо конфигурировать специально, иначе 10400 не установишь.

Share this post


Link to post
Share on other sites
 

Пробовал ч-з com-port - связь не пошла. Чуть позже разберусь почему - напишу.

 

Рекомендации:

1. Сделай запись пакетов в лог файл (типа

TxD: ......

RxD:.......

Удобнее гораздо будет откатывать программу.

2. Для задания таймингов при инциализации обмена сделай инишник, в котором их можно было-бы править.

На разных по производительности компьютерах - разные погрешности при установке timeout.

3. Пиды желательно тоже вынести в ини файл свой для каждого типа контроллера, т.к. они отличаются

Share this post


Link to post
Share on other sites
 

Слушал порт сниффером.

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

По протоколу KWP2000 вроде бы – 50мс. Но прекрасно работает и 15мс. Интервал между запросами – 150-500мс (проверял - работает).

Программы, которые я привел в пример, уверенно связываются со всеми ВАЗовскими контроллерами.

Прикрепил логи со сниффера

сниффер.rtf

Share this post


Link to post
Share on other sites
 

Внёс требуемые изменения...Прошу опробовать.

Изменения в версии 1.05

 

1. Добавлена возможность ведения логов обмена данными с портом в файл.

Для этого в верхней правой части окна появилась соответсвующая галочка.

Когда она установлна все что оправлено\принято с порта пишется в файл log.txt в папке с программой.

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

 

Формат сообщений в файле :

[время] [направление] [данные] [описание]

где,

время - время отправки\приема с точностью до милесекунд

напрвление - RCV или SND для получения и отправки данных соответственно

данные - данные в 16-ричном представлении

описание - для SND сообщений это название отправленной команды, для RCV это

просто строка (символьное представление полученных данных)

 

После отправки данных, если на порту есть пиание, в ответ последует точно такая же команда

(эхо-команда).

И только после нее, если ЭБУ нам ответил, на порт придет команда его ответа. Сам не знаю почему так

устроено :)

 

Каждой отправленной команде в файле соответствует одна строка SND, а вот каждой принятой команде

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

Более того - между двуми циклами чтени RCV одной логической команды (пакета), может затисаться одна

команда оправки SND т.к. эти процессы в программе проходят асинхронно! В этом нет ничего страшного,

разве что человеком воспринимается тяжеловато :)

 

2. Добавлена возможность настройки таймаутов СОМ-порта.

Для этого нужно зайти в настройки порта и в ручную помнять 5 параметров.

Не знаю, может у кого-то это и повлияет на работоспособность программы, но у меня все работает ПРИ

ЛЮБЫХ значениях таймаутов.

DiagnozNK v1.05.rar

Share this post


Link to post
Share on other sites
 

Слушал порт сниффером.

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

По протоколу KWP2000 вроде бы – 50мс. Но прекрасно работает и 15мс. Интервал между запросами – 150-500мс (проверял - работает).

Программы, которые я привел в пример, уверенно связываются со всеми ВАЗовскими контроллерами.

Прикрепил логи со сниффера

 

Эхо конечно же учитывается )))

В моем случае понятие "задержка между запросом и ответом" не уместно, т.к. чтение запись проясходят (повторюсь) асинхронно!

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

В принципе в этом буфере может скопиться хоть 5 хоть 10 команд (но на практике такого не бывает). Поток для записи в порт (выполняемый

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

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

Если ответ на команду не был получен после 3 попыток она тоже удаляется из буфера и приходит черед след. команды (если она есть).

Таким образом буфер освобождается по принципу ФИФО.

 

Второй поток (для чтения), постоянно "слушает" порт и запоминает в буфере все что пришло.

Как только последовательность принятых данных (возможно за несколько циклов чтения с порта) будет похожа на комнду KWP2000 (сверяет по заголовку и контрольной сумме),

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

в нужном виде на форме для отображения пользователю!

 

Таким образом два процесса (чтение\запись) происходят совершенно независимо, и даже не подозревают о сушествовании друг друга )))

Share this post


Link to post
Share on other sites
 

шустрая программа, проверил на я7.2, работает на буке через PCMCA.

Share this post


Link to post
Share on other sites
 

Ч-з компорт так и не смог подключиться. Цифирки в настройках менял всяко - разницы не видно.

Share this post


Link to post
Share on other sites
 

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

Powered by Invision Community


×
  • Create New...
Яндекс цитирования