|
<< 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>

На вкладке Language нужно для позиции С++ Language Standard указать: ISO C++20 Standard (/std:c++20)
Для позиции С Language Standard указать: ISO C17 (2018) Standard (/std:c17)

Далее необходимо в файле dllmain.cpp написать следующий код, в зависимости от ОС, на которую установлена исполнительная система:
#include <share/mplcshare.h>
#pragma comment(lib, "opcua.lib") #pragma comment(lib, "mplcshare.lib") #pragma comment(lib, "masterplc.lib") #pragma comment(lib, "lua.lib")
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(); } |
После этого можно приступить к реализации конкретных вариантов.