Теперь о реализации
Пусть ядро, т.е. 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 |
По плагинам это всё.
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!