Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Пример работы с Dll, содержащей математическую процедуру обработки данных

Проектирование внутренних интерфейсов | Проектирование пользовательского интерфейса | Реализация и эксплуатация программного средства | Модернизация программного средства | Анализ и оценка напряженности трудового процесса пользователя | Расчет затрат на разработку программного средства | Расчет и сопоставление эксплуатационных расходов | Сводные экономические показатели по разработке программы | Список использованных источников | Последовательность действий для получения алгоритмов математических процедур из моделей Simulink |


Читайте также:
  1. BITMAPFILEHEADER – эта структура содержит информацию о типе, размере и представлении данных в файле. Размер 14 байт.
  2. Boot (англ. загрузка. Пример: основной загрузочный сектор) -вирусы
  3. C 4 redo группами по 2 файла, 2 control-файлами, табличным пространством system, имеющим 2 файла данных по 50 мб
  4. Cтуденческий банк данных
  5. D.1. Примеры уязвимостей
  6. I. Задания для самостоятельной работы
  7. I. Задания для самостоятельной работы

Пример написан на языке С++. В качестве примера показан файл с именем Test.cpp. Dll имеет 3 входа (1 – скалярный, 2 –векторный [3;1], 3- матричный [4;2]) и 3 выхода (1 – скалярный, 2 –векторный [3;1], 3- матричный [4;2]). Все передаваемые значения имеют тип double.

 

#include "system.h" //Файл с виртуальным классом System

 

typedef BOOL (__stdcall* LPFNCREATE)(System **);

typedef void (__stdcall* LPFNDESTROY)(System *);

 

void main()

{

LPFNCREATE CreateSystem = 0;

LPFNDESTROY DestroySystem = 0;

 

HINSTANCE hDLL;

 

hDLL = LoadLibrary("Test"); //Загрузка Dll

if (!hDLL)

{

cout << "Cannot load library"<<endl;

return 0;

}

 

//Подключение функций

CreateSystem = (LPFNCREATE)GetProcAddress(hDLL,"CreateSystem");

DestroySystem = (LPFNDSTROY)GetProcAddress(hDLL,"DestroySystem");

 

if (!CreateSystem)

{

cout << "Cannot get CreateSystem pinter"<<endl;

FreeLibrary(hDLL);

return 0;

}

 

if (!DestroySystem)

{

cout << "Cannot get DestroySystem printer"<<endl;

FreeLibrary(hDLL);

return 0;

}

 

System *psys=0;

BOOL res = CreateSystem(&psys); //Создание класса System

 

if (!res)

cout <<"cannot create system!"<<endl;

 

rtS st;

rtS st2;

 

char *InfoName;

char *ModelInfo;

 

psys->ModelName(&InfoName); //Получение имени Dll

cout<< InfoName <<endl;

psys->ModelInfo(&ModelInfo); //Получение информации о модели

cout<< ModelInfo<<"\n"<<endl;

 

int ni;

int no;

psys->GetNumberInput(&ni); //Получение количества входов

psys->GetNumberOutput(&no); //Получение количества выходов

 

cout<<"Input"<<" "<<ni <<endl;

cout<<"Output"<<" "<<no <<endl;

 

psys->GetInputInfo(1, &st); //Параметры 1-го входа

psys->GetOutputInfo(1, &st2); //Параметры 1-го выхода

 

psys->Initialize(); //Инициализация модели

 

double Out1; //Скаляр

double Out2[3]; //Вектор

double Out3[4*2]; //Матрица

 

double In1[3] [1] = {2,2,2};

double In2[3] [3] = {{1,2,3},{4,5,6},{7,8,9}};

double In3[3] [8] = {{2,3,3,4,1,5,2,6}, {11,12,13,14,15,16,17,18}, {21,22,23,24,25,26,27,28}};

 

LPVOID Op[3];

LPVOID Lp[3];

 

for (int i=0; i<3; i++)

{

Lp[0] = (LPVOID)&In1[i];

Lp[1] = (LPVOID)&In2[i];

Lp[2] = (LPVOID)&In3[i];

 

Op[0] = (LPVOID)&Out1;

Op[1] = (LPVOID)&Out2[0];

Op[2] = (LPVOID)&Out3[0];

 

psys->Operate(&Lp[0],&Op[0]);

}

 

psys->UnInitialize();

DestroySystem(psys);

FreeLibrary(hDLL);

}

 

ПРИЛОЖЕНИЕ Д

ПРИЛОЖЕНИЕ Е


Дата добавления: 2015-11-14; просмотров: 25 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Для создания кода на языке Си соответствующего построенной модели, нужно установить необходимые параметры моделирования среды Simulink.| Последовательность действий для создания эталонных файлов, применяемых для верификации алгоритмов математических процедур в создаваемых программой КМС Dll

mybiblioteka.su - 2015-2024 год. (0.005 сек.)