2022-08-03 17:01:01 +03:00
|
|
|
|
#include "app.hpp"
|
|
|
|
|
#include "program_config.hpp"
|
|
|
|
|
|
|
|
|
|
bool App::Init(std::string profinet_config_file)
|
|
|
|
|
{
|
|
|
|
|
ProfinetSettings profinet_settings;
|
|
|
|
|
ProfinetDeviceSettings profinet_dev_settings;
|
|
|
|
|
|
|
|
|
|
/// Читаем настройки из файла
|
|
|
|
|
if (!programconf_getProfinetSettings("program_configure.json", profinet_settings))
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
///Создаем структуру в разделяемой памяти
|
|
|
|
|
ProfinetData_Map * p_profinetMap = shared_data_.Create("profinet_shared_data");
|
|
|
|
|
|
|
|
|
|
/// Читаем настройки из файла, выделяем память под структуру модулей и подмодулей
|
|
|
|
|
if (!programconf_getProfinetDeviceSettings(profinet_settings.profinet_device_config, profinet_dev_settings, p_profinetMap, shared_data_))
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// Настройка Profinet: Инициализация pnet, добавление DAP слотов и подслотов и подключение к ним модулей и подмодулей,
|
|
|
|
|
if (!profinet_.Config(profinet_settings, profinet_dev_settings, p_profinetMap))
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Циклические данные устройства передаются с определенным периодом, сообщения от контроллера при этом не требуются.
|
|
|
|
|
*/
|
|
|
|
|
/// Запуск потока Profinet
|
|
|
|
|
profinet_.Start();
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void App::Run()
|
|
|
|
|
{
|
|
|
|
|
for (;;)
|
|
|
|
|
{
|
2022-08-04 14:21:05 +03:00
|
|
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
|
2022-08-03 17:01:01 +03:00
|
|
|
|
}
|
|
|
|
|
}
|