вторник, 18 ноября 2014 г.

Описание API вызова библиотеки GmAvtovaz.DLL

Данная библиотека (далее DLL), для работы с K-Line адаптером через физический или виртуальный СOM-порт over USB в ОС NT/2000/2003/XP/Vista/7/8/8.1, предназначена для получения диагностической информации из бортовой сети авто GM-Автоваз/Daewoo Nexia. DLL предоставляет универсальный доступ для других приложений вне зависимости от языка в среде Win32/64.

Для использования DLL в своих проектах соблюдайте соглашение об stdcall-вызовах. Тип соглашения о вызове объявляется после прототипа функции, будь то объявление функционального типа или же объявление функции.

Cистемные требования и зависимости:
  1. Windows XP/Vista/7/8/8.1 (32/64 bit).
  2. K-Line адаптер, подключенный к бортовому ПК GM-Автоваз/Daewoo Nexia.
Таблица расшифровок параметров экспортируемой функции sendread() библиотеки 'gmavtovaz.DLL':
Параметр    Функционал                    Тип переменной
================================================
comnum        COM-порт                    PAnsiChar
baud        Скорость обмена, бод                Integer
t_gid        Температура охлаждающей жидкости, °C        Double
u_dpdz        Напряжение на ДПДЗ, В                Double
pol_dros    Положение дроссельной заслонки, %        Double
ob_dvig        Обороты двигателя, об/мин            Double
skorost        Скорость, км/ч                    Double
u_oxy        Напряжение на датчике кислорода, В        Double
ob_gel        Желаемые обороты, об/мин            Double
ob_xx        Желаемые обороты на ХХ, об/мин            Double
dav_atm        Атмосферное давление, кПа            Double
dav_vpusk    Давление на впуске, кПа                Double
t_vpusk        Температура на впуске, °C            Double
u        Напряжение, В                    Double
ugol_op        Угол опережения зажигания, °            Double
tau_vprisk    Длительность впрыска, сек            Double
vozduh_toplivo    Cоотношение воздух-топливо            Double
tau_pusk    Время с момента пуска двигателя, сек        Double
result        отчет о выполнении                PAnsiChar
Пример динамического подключения (Delphi 6/7/2006/2009/2010/TDL/XE5-7):
var sendread:function(
     comnum: pansichar; // COM-порт
     baud: integer;
     var
     t_gid,               // Температура охлаждающей жидкости, °C
     u_dpdz,            // Напряжение на ДПДЗ, В
     pol_dros,          // Положение дроссельной заслонки, %
     ob_dvig,           // Обороты двигателя, об/мин
     skorost,            // Скорость, км/ч
     u_oxy,               // Напряжение на датчике кислорода, В
     ob_gel,              // Желаемые обороты, об/мин
     ob_xx,                // Желаемые обороты на ХХ, об/мин
     dav_atm,           // Атмосферное давление, кПа
     dav_vpusk,       // Давление на впуске, кПа
     t_vpusk,            // Температура на впуске, °C
     u,                         // Напряжение, В
     ugol_op,            // Угол опережения зажигания, °
     tau_vprisk,        // Длительность впрыска, сек
     vozduh_toplivo,    // Cоотношение воздух-топливо
     tau_pusk:          // Время с момента пуска двигателя, сек
     Double): pansichar; stdcall;

     LibHandle: THandle;
     FTimer: cardinal;

function LinkProc(ProcName: string):Pointer;
begin
 result:= GetProcAddress(LibHandle, PChar(ProcName))
end;

{ запрос-ответ }
procedure RemoteTimeProc(uID,uMsg:UINT;dwUser,dw1,dw2:DWORD); stdcall;
var  t_gid,
     u_dpdz,
     pol_dros,
     ob_dvig,
     skorost,
     u_oxy,
     ob_gel,
     ob_xx,
     dav_atm,
     dav_vpusk,
     t_vpusk,
     u,
     ugol_op,
     tau_vprisk,
     vozduh_toplivo,
     tau_pusk: Double;
     tmp: ansistring;
begin
 if LibHandle <> 0 then FreeLibrary(LibHandle);
 LibHandle:= LoadLibrary('gmavtovaz.dll');

 if LibHandle<>0 then begin
  sendread:= LinkProc('sendread');

  tmp:= sendread(
    'COM5',
    9600,
    t_gid,
    u_dpdz,
    pol_dros,
    ob_dvig,
    skorost,
    u_oxy,
    ob_gel,
    ob_xx,
    dav_atm,
    dav_vpusk,
    t_vpusk,
    u,
    ugol_op,
    tau_vprisk,
    vozduh_toplivo,
    tau_pusk
    );

  with form1 do begin
   memo1.Clear;
   memo1.Lines.Add('Пакет данных: ' + tmp);
   memo1.Lines.Add('');
   memo1.Lines.Add(format('Температура охлаждающей жидкости, °C = %f', [t_gid]));
   memo1.Lines.Add(format('Напряжение на ДПДЗ, В = %f', [u_dpdz]));
   memo1.Lines.Add('Положение дроссельной заслонки, % =' + format('%f', [pol_dros]));
   memo1.Lines.Add(format('Обороты двигателя, об/мин = %f', [ob_dvig]));
   memo1.Lines.Add(format('Скорость, км/ч = %f', [skorost]));
   memo1.Lines.Add(format('Напряжение на датчике кислорода, В = %f', [u_oxy]));
   memo1.Lines.Add(format('Желаемые обороты, об/мин = %f', [ob_gel]));
   memo1.Lines.Add(format('Желаемые обороты на ХХ, об/мин = %f', [ob_xx]));
   memo1.Lines.Add(format('Атмосферное давление, кПа = %f', [dav_atm]));
   memo1.Lines.Add(format('Давление на впуске, кПа = %f', [dav_vpusk]));
   memo1.Lines.Add(format('Температура на впуске, °C = %f', [t_vpusk]));
   memo1.Lines.Add(format('Напряжение, В = %f', [u]));
   memo1.Lines.Add(format('Угол опережения зажигания, ° = %f', [ugol_op]));
   memo1.Lines.Add(format('Длительность впрыска, сек = %f', [tau_vprisk]));
   memo1.Lines.Add(format('Cоотношение воздух-топливо = %f', [vozduh_toplivo]));
   memo1.Lines.Add(format('Время с момента пуска двигателя, сек = %f', [tau_pusk]));
  end;
 end
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 DecimalSeparator:= '.';
 FTimer:= timeSetEvent(2000, 0, @RemoteTimeProc, DWORD(Self), TIME_PERIODIC)
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 timeKillEvent(FTimer)
end;
...
ПОРЯДОК ИСПОЛЬЗОВАНИЯ и ОГРАНИЧЕНИЯ
  1. По-умолчанию параметр 'СOMNUM' равен 'COM1', параметр 'Baud' равен 9600 бод.
  2. Обеспечивает формирование запроса и расшифровку диагностической информации бортовой сети GM-Автоваз/Daewoo Nexia.
  3. Состав диагностической информации:
   -- Температура охлаждающей жидкости, °C
   -- Напряжение на ДПДЗ, В
   -- Положение дроссельной заслонки, %
   -- Обороты двигателя, об/мин
   -- Скорость, км/ч
   -- Напряжение на датчике кислорода, В
   -- Желаемые обороты, об/мин
   -- Желаемые обороты на ХХ, об/мин
   -- Атмосферное давление, кПа
   -- Давление на впуске, кПа
   -- Температура на впуске, °C
   -- Напряжение, В
   -- Угол опережения зажигания, °
   -- Длительность впрыска, сек
   -- Cоотношение воздух-топливо
   -- Время с момента пуска двигателя, сек
забрать

Комментариев нет:

Отправить комментарий

В комментариях уважайте собеседника, внимательно читайте посты и не додумывайте. Просьбы и предложения из разряда: «можно ваш Skype/Viber/телефон», «напишите мне в vk/FB», а также другие им подобные — игнорируются. Выход новых версий ПО, внешняя ссылка, переставшая работать с течением времени и т.п. не является основанием для претензий. Желающие спокойно подискутировать и высказаться — Welcome. Желающие спонсировать блог — Donate. Нарушение этих простых правил ведет к бану и удалению комментариев без предупреждения.