Автомобильный сканер ошибок. Собираю инфу - C#

Узнай цену своей работы

Формулировка задачи:

Собственно вот, у кого есть машина - тот обязательно был на компьютерной диагностике. В это сфере работаю уже с десяток лет и хочу ради интереса написать свой сканер. Железо у меня есть. Еще во времена KL-адаптеров программирование шло путем передачи данных на COM-порт пакетов данных согласно протоколу. Сейчас технологии уже ушли в .NET и работают по другим стандартам. Хочу написать сканер, работающий по стандарту ISO 22900-2 и ISO 22901. По жаба душит купить его за 200 вечнобританских фунтов, благо что там я ничего сверхестественного не увижу. Кому стало интересно - качаем ISO 22900-1 - он в свободном доступе, там описана архитектура, и читаем дальше. Железо, которое работает под ISO 22900 и соотвественно SAE J2534 у меня есть. Работает даже стороннее программное обеспечение. Хочу создать свое, но аналогичное, для решения никому не нужных, но мне интересных проблем. Что я имею на данный момент: 1. DLL для работы с ISO 22900 со списком экспортируемых функций. Плюсы - уже все написано за нас. Посылай данные согласно реализуемому протоколу и избавься от низкоуровневого программирования на уровне драйверов. Минусы - DLL идет прицепным вагоном с программным обеспечением железа и через нее и надо работать. Фокус в том, что DLL не поддерживает .NET и ее надо грузить. Это не проблема, список экспортируемых функций есть. Но нет параметров этих функций. Стандартными средствами узнал только имена функций и то, что DLL написана на С++ Без параметров функций загрузить эти самые функции не могу. Как быть? Кто знает? Параметры функций находятся в 22900-2 2. Полностью исправное железо для работы и сторонние программы. Думал над вариантом дизассемблера - не вариант. Есть программы, работающие под .NET и исполюзующие это железа, есть программы, работающие под JAVA, есть даже одна работающая под JAVA + Eclipse. Вот когда-то видел снифера, который в лог писал какой процесс какую функцию из какой DLL вызывал. Как называется и работает ли с .NET - не знаю. Может у кого есть инфа? собственно пока все. Есть у кого какие идеи?

Решение задачи: «Автомобильный сканер ошибок. Собираю инфу»

textual
Листинг программы
[StructLayout(LayoutKind.Sequential, Pack=1)]
    public struct PDU_MODULE_ITEM
    {
        T_PDU_IT ItemType;                  /* value= PDU_IT_MODULE_ID */
        uint NumEntries;                /* number of entries written to the pModuleData array */
        PDU_MODULE_DATA pModuleData;
    }
 
[StructLayout(LayoutKind.Sequential, Pack = 1)]
    public struct PDU_MODULE_DATA
    {
        UInt32 ModuleTypeId;              /* MVCI Protocol ModuleTypeId */
        UInt32 hMod;                      /* handle of MVCI Protocol Module assigned by D-PDU API */
        byte[]  pVendorModuleName;         /* Vendor specific information string for the unique module identification. */
        /* E.g. Module serial number or Module friendly name */
        byte[] pVendorAdditionalInfo;     /* Vendor specific additional information string */
        T_PDU_STATUS ModuleStatus;          /* Status of MVCI Protocol Module detected by D-PDU API session*/
    }
 
public enum T_PDU_IT
    {
        PDU_IT_IO_UNUM32 = 0x1000,  // IOCTL UNUM32 item.
        PDU_IT_IO_PROG_VOLTAGE = 0x1001,  // IOCTL Program Voltage item.
        PDU_IT_IO_BYTEARRAY = 0x1002,  // IOCTL Byte Array item.
        PDU_IT_IO_FILTER = 0x1003,  // IOCTL Filter item.
        PDU_IT_IO_EVENT_QUEUE_PROPERTY = 0x1004,  // IOCTL Event Queue Property item.
        PDU_IT_RSC_STATUS = 0x1100,  // Resource Status item
        PDU_IT_PARAM = 0x1200,  // ComParam item
        PDU_IT_RESULT = 0x1300,  // Result item
        PDU_IT_STATUS = 0x1301,  // Status notification item
        PDU_IT_ERROR = 0x1302,  // Error notification item
        PDU_IT_INFO = 0x1303,  // Information notification item
        PDU_IT_RSC_ID = 0x1400,  // Resource ID item
        PDU_IT_RSC_CONFLICT = 0x1500,  // Resource Conflict Item
        PDU_IT_MODULE_ID = 0x1600,  // Module ID item
        PDU_IT_UNIQUE_RESP_ID_TABLE = 0x1700   // Unique Response Id Table Item
    }

ИИ поможет Вам:


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

Оцени полезность:

10   голосов , оценка 3.9 из 5