Перейти к содержанию
    

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

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

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

 

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

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

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

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

 

 

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

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

 

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

 

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

 

 

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

 

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

post-19987-1471508383_thumb.png

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

 

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

 

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

 

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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


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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Привет yurick!

 

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

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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...