Jump to content

    

Пишу свой автомобильный сканер.

Собственно вот. Нашел этот ресурс и украл пару ссылок. Начну с предистории:

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

 

Что я хочу от сей приблуды:

1. Проект будет коммерческим, но простейшие функции чтения-удаления ошибок, просмотра информации free. На данный момент, проект чисто интеллектуальный из раздела "я могу". Ни о какой коммерции я сейчас вопрос не ставлю.

2. Проект не будет привязан к шнурку. На данный момент программа работает с оборудованием по ISO22900.

3. Т.к. для работы с одним блоком иногда требуются разные шнурки для работы (вырвать ПИН, сделать сброс, перенести инфу из одного блока в другой, чтение FLASH EEPOM и т.д.), то хочу сделать все в одном месте.

 

 

А чего это я тут расписался?

Да просто так. Делаю в свободное время, вопросы по программированию, протоколам возникают постоянно. Кому задать эти вопросы - не знаю. Если тут кто есть, кто сможет ответить на них - приму любую помощь.

 

А помощь надо.

 

3 месяца пилил протоколы, чтобы писать проект на C#. Из-за проблемм с маршалингом отказался. Сейчас переделал на MFC. То что сделал - работает. Пока реализовал iso14230. Дальше - больше.

 

 

На данный момент проект работает с оборудованием GM MDI. Работу с мелкими шнурками, которые не поддерживают в полной мере ISO22900 работу вести не буду. Возможно потом добавлю J2534.

 

 

Сейчас интересует вопрос по 14230 - чтение параметров. Принять пакет данных - принял. Где взять инфу о том, какие это данные и какие формулы нужны, чтобы привести их читабельный вид (напряжение батареи, кол-во оборотов и т.д.)

Share this post


Link to post
Share on other sites
3 месяца пилил протоколы, чтобы писать проект на C#. Из-за проблемм с маршалингом отказался. Сейчас переделал на MFC. То что сделал - работает. Пока реализовал iso14230. Дальше - больше.

:bb-offtopic: Не по теме, но вот это зря. Вы эксгумировали разложившийся труп. Для протоколов может и правда С# не лучший путь, но С++ без всяких MFC отработал бы как надо. Вся обработка протоколов в отдельной С++ длл. А вот весь ГУИ на C# (да или на чем угодно современном) с вызовом функций той самой длл.

Share this post


Link to post
Share on other sites
:bb-offtopic: Не по теме, но вот это зря. Вы эксгумировали разложившийся труп. Для протоколов может и правда С# не лучший путь, но С++ без всяких MFC отработал бы как надо. Вся обработка протоколов в отдельной С++ длл. А вот весь ГУИ на C# (да или на чем угодно современном) с вызовом функций той самой длл.

Поддерживаю: mfc ради GUI изжила себя, хотя гарантированно работать будет даже под windows 2000, а если собрать в MSVS2005 то и в Windows 98SE, если кому-то интересна совместимость с этими динозаврами.

Share this post


Link to post
Share on other sites

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

 

А так, есть рабочая версия, которая там ошибки читает, но она рабочая. Надо пробовать как-то переделывать под шарп, не спорю.

Share this post


Link to post
Share on other sites
Траблы начинаются при маршалинге параметров. Когда у тебя в параметрах указатель на структуру, в которой структура с указателями на массив структур, то маршалинг ломается как железный человек в последней части.

Возможно, стоит изменить модель передаваемых данных? Год назад сталкивался с аналогичной задачей: сделать обертку как раз для сишной библиотеки (от клиента) для работы с их "железом", но передаваемые данные были проще организованы чем у Вас.

 

post-19987-1471508383_thumb.png

 

Share this post


Link to post
Share on other sites

С такими данными я бы изначально на шарпе сделал. У меня половина данных идет типа структура, в структуре uint определяет какой тип второго параметра. Второй параметр void*.

 

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

 

Пока сделал так, на MFC есть рабочая обертка для драйвера. Можно отрабатывать алгоритмы работы со сканером и блоком управления. Сделал класс c++/cli обертку для драйвера, чтобы там применять эти алгоритмы. И на шарпе уже интерфейс будет. Из-под cli функции драйвера работают и маршалинг не ломается, но из-за проблем с отладкой я не вижу неуправляемую память, а там такие косяки вылазят, что пипец.

 

Как-то так....

 

Но пока все получается и это радует.

 

вообще, посмотрел на "родной" софт для этого сканера. А софт этот разрабатывал Бош. Так вот, я думал, что это у меня получается игла в утке, утка в зайце. А там вообще пипец. Софт сделанный Бошем для Мерседеса (XENTRY OPEN SHELL) это такой тихий ужас. Там программа - грибная солянка из С++, JAVA, .NET, вешается сервак Appache и все это написано под Eclipce.

То же самое с VAG. Но самый лютый писец - это DiagBox от PSA.

 

Потом узнал, что Бош для сторонних клиентов пишет программы от имени своей индийской дочки. Видел фотку - 200 сотрудников, все в чалмах.

Share this post


Link to post
Share on other sites

С diagbox работал - тихий ужас. Peugeot Planet ещё терпимо, но за диагбокс создателей нужно долго бить ногами по лицу.

Share this post


Link to post
Share on other sites

Ну, все. Проблему маршалинга решил. Теперь все работает на чистом шарпе.

 

у кого-нить есть таблица идентификаторов блоков управления Мерса?

 

А то к Опелю коннект вижу, читаю, а к Мерсу нифига. Вроде как и тайминги и адресация должны быть одинаковые.

Share this post


Link to post
Share on other sites
Цитата(yurick @ Sep 2 2016, 08:03) <{POST_SNAPBACK}>
Ну, все. Проблему маршалинга решил. Теперь все работает на чистом шарпе.

у кого-нить есть таблица идентификаторов блоков управления Мерса?

А то к Опелю коннект вижу, читаю, а к Мерсу нифига. Вроде как и тайминги и адресация должны быть одинаковые.


Поздравляю. Поделитесь решением пожалуйста.

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

Share this post


Link to post
Share on other sites

 

Привет yurick!

 

Какаю платформу (железо) планируешь использовать для своего сканера?

Могу предложить мобильную платформу для твоего софта.

Будет подключаться непосредственно к ГУ авто и работать как встроенный сканер.

 

Share this post


Link to post
Share on other sites

Добрый день. Есть какие-нибудь подвижки со сканером? Чем все закончилось? Наверно, пора в массы нести... biggrin.gif

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
Sign in to follow this