<< Click to Display Table of Contents >> Navigation: API MasterSCADA 4D > Функции, ФБ, Протоколы на С++ > API для ФБ и протоколов > Подготовка окружения > Подключение API > Создание новых проектов |
Для создания собственных протоколов и ФБ в C++ с нуля (а не редактирования встроенных примеров в Examples.sln) необходимо создать отдельный проект вида DLL в решении MasterPLC в папке include/core/masterplc/drivers. Проект следует наименовать в формате mplc_protocolname. Также нужно указать набор подключаемых заголовочных файлов в настройках проекта.
В открытом решении нужно выделить проект и открыть его свойства:
Необходимо указать выходные директории на вкладке General:
•Output Directory: $(SolutionDir)\platform\$(Platform)\$(Configuration)\bin\
•Intermediate Directory: $(SolutionDir)\platform\$(Platform)\$(Configuration)\obj\$(ProjectName)\
Далее нужно указать набор подключаемых заголовочных файлов в настройках проекта в главном разделе С/С++:
Additional Include Directories: ..\..\include;..\..\include\core;..\..\lib;..\..\lib\opcua
После этого необходимо указать в настройках препроцессора определения на вкладке Preprocessor:
PreprocessorDefenitions: BOOST_USER_CONFIG="mplc/detail/mplc_boost_config.hpp";<different options>
Далее необходимо в файле dllmain.cpp написать следующий код, в зависимости от ОС, на которую установлена исполнительная система:
#include <share/mplcshare.h>
#pragma comment(lib, MPLC_ADDIN_LIB(opcua))
#pragma comment(lib, MPLC_ADDIN_LIB(mplcshare))
#pragma comment(lib, MPLC_ADDIN_LIB(masterplc))
#pragma comment(lib, MPLC_INTEGRATED_LIB(lua))
BOOL DLLENTRY DllMain(DLLHANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
switch (ul_reason_for_call) {
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
Затем нужно создать файл в проекте с названием mplc_projectname.cpp, в котором projectname - это название проекта. В нем должен быть следующий код:
#include <addincmn.h>
#include "drivers/drv_user.h"
int Init()
{
PRINTLN("init projectname)");
return 0;
}
EXTERN_C MPLC_DRIVER_API int InitAddin(ProcessRequestCallback func, int nInFlags, int* pnOutFlags)
{
return Init();
}
После этого можно приступить к реализации конкретных вариантов.