Содержание материала

Теперь о реализации

 

Пусть ядро, т.е. exe-файл, ищет плагины, запускает их и по таймеру передаёт в них два цифровых значения, которые один плагин будет изображать в текстовом виде, а второй в виде диаграмм. Реализация плагинов отличается минимально, поэтому расскажу об одном Digital.dll. Начнём перечисление функций:

 

Code:

// получение информации о плагине

function GetModuleInfo:TModuleInfo;stdcall;

var

Buffer:array [byte] of char;

begin

with Result do begin

   Name:='Отображение цифровых данных';

   Kind:=mkDigital;

   if GetModuleFileName(hInstance,@Buffer,SizeOf(Buffer)-1)>0 then

     Path:=ExtractFilePath(StrPas(Buffer));

end;

end;

 

// Функция возвращает информацию о модуле. В данном

// случае это цифровое отображение, путь и тип модуля.

 

// инициализация

procedure Initialize;stdcall;

begin

// запоминание старого Application

OldApp:=Application;

fmDigitalMain:=nil;

end;

 

// Процедура запоминает переменную Application

// и делает нулевой ссылку на форму плагина.

 

// запуск

procedure Run;stdcall;

begin

// создание окна плагина

if fmDigitalMain=nil then

   fmDigitalMain:=TfmDigitalMain.Create(Application);

end;

 

// Процедура запуска плагина созда?т окно.

// Окно созда?тся видимым.

 

// останов

procedure Terminate;stdcall;

begin

// освобождение окна

fmDigitalMain.Free;

fmDigitalMain:=nil;

// восстановление старого TApplication

Application:=OldApp;

end;

 

// Процедура уничтожает окно и возвращает старый TApplication.

 

// при?м данных

procedure SetData(Kind:TDataKind;const Buffer;Size:Integer);stdcall;

begin

case Kind of

   // передача TApplication

   dkApplication:if Size=SizeOf(TApplication) then

     Application:=TApplication(Buffer);

   // передача данных во время работы

   dkInputData:if fmDigitalMain<>nil then begin

     fmDigitalMain.SetData(Buffer,Size);

   end;

end;

end;

 

// Процедура получения данных. В зависимости от полученного

// типа данных с данные в переменной Buffer соответственно

// типизируются. Здесь происходит обращение к форме плагина,

// расписывать я его не буду, там вс? просто, см. исходники.

// Типы, которые используются  здесь, описаны в SharedTypes.pas

  

По плагинам это всё.

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить