среда, 9 июля 2014 г.

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

Данная библиотека, далее DLL, предназначена для работы с датчиками "РИФ-РЛМ", "РИФ-КРЛ", "ТРАССА" или "Разрыв" в мастер-режиме по сети RS-485 через физический или виртуальный СOM-порт over USB в ОС NT/2000/2003/XP/Vista/7/8, и осуществляет чтение и декодирование данных текущего и среднего значения АЦП с подчиненных устройств c ведением лога. Восстановление связи при использовании виртуального последовательного порта осуществляется автоматически.




Cистемные требования и зависимости:
  1. Windows XP/Vista/7/8/8.1 (32/64 bit).
  2. Наличие виртуального или физического COM-порта к сети RS-485.
  3. Датчики "РИФ-РЛМ", "РИФ-КРЛ", "ТРАССА", "Разрыв".
DLL предоставляет универсальный доступ для других приложений вне зависимости от языка в среде Win OS. Для использования DLL в своих проектах соблюдайте соглашение об stdcall-вызовах. Тип соглашения о вызове объявляется после прототипа функции, будь то объявление функционального типа или же объявление функции.

Таблица расшифровок параметров экспортируемой функции 'reinit()' библиотеки:


Таблица расшифровок параметров экспортируемой функции 'getdata()' библиотеки:


Таблица расшифровок параметров экспортируемой функции 'setadr()' библиотеки:


Пример динамического подключения (Delphi 6/7/2006/2009/2010/TDL/XE5-7):
var en_com: boolean;
    getdata:function(var
                     adress_from,        // from adress (от кого)
                     adress_to: byte;    // to adress (кому)
                     var
                     adc_current,        // current level ADC
                     adc_average: double // average level ADC
                     ): pansichar;       // status
                     stdcall;
    setadr:procedure(adrsensor: byte);stdcall;
    reinit:function(comnum, adr: byte; enable, log: boolean): boolean; stdcall;
    LibHandle: THandle;



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


{ инициализация }

 LibHandle:= LoadLibrary('RIFTRASSARAZRIV.dll');
 if LibHandle<>0 then begin
  getdata:= LinkProc('getdata');
  reinit := LinkProc('reinit');
  setadr := LinkProc('setadr');
...


{ деинициализация }

 if LibHandle<>0 then begin
  reinit(0, 0, false, false);
  freelibrary(LibHandle)
...


{ чтение данных }

var adress_from,            // from adress (от кого)
    adress_to: byte;        // to adress (кому)
    adc_current,             // current level ADC
    adc_average: double; // average level ADC
begin
 if en_com then begin
  statusbar1.panels[0].Text:= 'connected!';

  getdata(adress_from,
          adress_to,
          adc_current,
          adc_average);

  list.Cells[1, 1] := format('%d', [adress_to]);
  list.Cells[1, 2] := format('%d', [adress_from]);
  list.Cells[1, 3] := format('%f', [adc_current]);
  list.Cells[1, 4] := format('%f', [adc_average]);
 end else begin
  statusbar1.panels[0].Text:= 'not connected...';

  list.Cells[1, 1] := '';
  list.Cells[1, 2] := '';
  list.Cells[1, 3] := '';
  list.Cells[1, 4] := '';
 end;
...

{ задание адреса опрашиваемого датчика REALTIME }
 setadr($01) // 1..99
...
ПОРЯДОК ИСПОЛЬЗОВАНИЯ и ОГРАНИЧЕНИЯ
  1. Вы можете произвольно задавать COM порт в процедуре 'reinit()' с постоянно поднятым флагом активации, в библиотеке это обрабатывается.
  2. Осуществляется автоотслеживание выдергивания конвертора RS-485/USB (через SetupAPI) и переподключение на заданный при инициализации порт.
  3. Библиотека автоматически формирует запросы к датчикам с возможностью смены адреса опрашиваемого датчика в сети REALTIME.
  4. Библиотека обеспечивает ведение лога принятых посылок от датчиков в текстовом файле 'dd-mm-yyyy hh-nn-ss' в следующем формате:
START: 03.02.15 19:58:25.640
 Options: COM5/4800/8/n/1
 20:10:17.546 Adress_To=1 Adress_From=0 ADC_Current=7.43890518084066 ADC_Average=7.35092864125122
 20:10:17.750 Adress_To=1 Adress_From=0 ADC_Current=7.43890518084066 ADC_Average=7.35092864125122
 20:10:18.046 Adress_To=1 Adress_From=0 ADC_Current=7.43890518084066 ADC_Average=7.35092864125122

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

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

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